序章

このチュートリアルでは、Apache JMeter HTTP(S)テストスクリプトレコーダーを設定して使用し、HTTPリクエストを記録する方法を説明します。 HTTPリクエストを記録することは、テストプランを作成するための優れた方法であり、通常のユーザーの動作を厳密に模倣するテストを作成するのに役立ちます。

このチュートリアルは、ApacheJMeterの基本的な知識があることを前提としています。 JMeterを初めて使用する場合は、次のチュートリアルを開始できます。ApacheJMeterを使用してWebサーバーで負荷テストを実行する方法

前提条件

このチュートリアルに必要なソフトウェアのリストは次のとおりです。

参考までに、このチュートリアルを作成するときは、次のソフトウェアバージョンを使用しました。

  • Oracle Java 7アップデート60、64ビット
  • JMeter 2.11
  • Firefox 30.0

テスト計画の作成を開始します

まず、JMeterを起動します。 それでは、テスト計画の作成を始めましょう。 開始したいテストプランがすでにある場合は、このセクションをスキップして、スレッドグループへの記録コントローラーの追加に進んでください(次のセクション)。

最低限、スレッドグループとHTTPリクエストのデフォルトを追加する必要があります。 スレッドグループを追加することから始めましょう。

スレッドグループを追加する

スレッドグループテストプランに追加します。

  1. テストプランを右クリックします
  2. 上にマウスを置く>を追加
  3. スレッド(ユーザー)>にマウスを合わせる
  4. スレッドグループをクリックします

スレッドグループのプロパティを次の値で設定します。

  • スレッド数(ユーザー):これを50に設定します
  • ランプアップ期間(秒単位):これを10に設定します。
  • ループカウント:これを1に設定したままにします。

HTTPリクエストのデフォルトを追加する

次に、HTTPリクエストのデフォルトスレッドグループに追加しましょう。

  1. スレッドグループを選択し、右クリックします
  2. 上にマウスを置く>を追加
  3. 構成要素>にマウスを合わせる
  4. HTTPリクエストのデフォルトをクリックします

[HTTPリクエストのデフォルト]の[Webサーバー]セクションで、サーバー名またはIP フィールドに、テストするWebサーバーの名前またはIPアドレスを入力します。

WebサーバーがCookieを使用している場合は、HTTP Cookie Managerをスレッドグループに追加することで、Cookieのサポートを追加できます。

  1. スレッドグループを選択し、右クリックします
  2. 上にマウスを置く>を追加
  3. 構成要素>にマウスを合わせる
  4. HTTP CookieManagerをクリックします

レコーディングコントローラーを追加する

次に、記録コントローラースレッドグループに追加しましょう。

  1. スレッドグループを選択し、右クリックします
  2. 上にマウスを置く>を追加
  3. ロジックコントローラ>にマウスを合わせる
  4. レコーディングコントローラーをクリックします

レコーディングコントローラーは、レコーディングされたHTTPリクエストサンプラーが作成される場所です。 次のステップは、HTTP(S)テストスクリプトレコーダーを設定することです。

HTTP(S)テストスクリプトレコーダーを追加する

次に、 HTTP(S)テストスクリプトレコーダーWorkBenchに追加しましょう。

  1. WorkBench を選択し、右クリックします
  2. 上にマウスを置く>を追加
  3. 非テスト要素>にマウスを合わせる
  4. HTTP(S)テストスクリプトレコーダーをクリックします

注: WorkBenchに追加されたアイテムは、残りのテストプランと一緒に保存されません。 WorkBenchを保存する場合は、 WorkBench を右クリックし、[名前を付けて選択を保存… ]をクリックして、目的の場所に保存します。 保存後、「マージ」メニュー項目を使用し、保存したWorkBenchを選択することにより、開いている任意のテストプランに追加できます。

ポート設定

HTTP(S)TestScriptRecorderプロキシが実行されるデフォルトのポートは次のとおりです。 8080. これは、を変更することで変更できます Port グローバル設定で設定します。

URLパターンの包含または除外(オプション)

HTTP(S)スクリプトレコーダーでは、正規表現として記述されたURLパターンを追加して、記録時に含めるまたは除外することができます。 これは、リクエストするコンテンツのタイプのみを含める場合に役立ちます(例: * .html、*。phpなど)またはリクエストしたくないコンテンツの種類を除外する(例: * .jpg、*。png、*。jsなど)。

URLパターンを追加するには、[含めるURLパターン]または[除外するURLパターン]セクションの下にある[追加]ボタンをクリックし、セクションの白い領域の上部をクリックします。 これで、パターンを入力できるようになります。 このプロセスを繰り返して、さらにパターンを追加します。

例:ウェブページのURLパターン

.*\.html
.*\.php
.*\.htm

例:画像のURLパターン

.*\.png
.*\.jpg
.*\.gif

画像を除外するために除外するURLパターンのスクリーンショットは次のとおりです。

スクリプトレコーダへのアイテムの追加(オプション)

JMeterアイテムをHTTP(S)テストスクリプトレコーダーに追加すると、記録されたリクエストは追加されたアイテムを継承します。 たとえば、 Timer アイテムをスクリプトレコーダに追加すると、記録される各HTTPリクエストにタイマーが追加されます。 テストが実行されると、タイマーによって各テストスレッドがHTTPリクエストを実行する前に待機します。

例として、 Constant TimerHTTP(S)Test ScriptRecorderに追加してみましょう。

  1. HTTP(S)Test Script Recorder を選択し、右クリックします
  2. 上にマウスを置く>を追加
  3. タイマー>にマウスを合わせる
  4. コンスタントタイマーをクリックします

スレッド遅延は、必要に応じて構成できます。

ユーザーが2秒ごとに別のページをクリックするのをシミュレートするとします。 スレッド遅延を2000ミリ秒に設定すると、記録される各HTTPリクエストに2秒の遅延を追加することでこれを実現できます。

これは、スクリプトレコーダーに項目を追加して、必要なテストを実行するテスト計画を作成する方法の一例にすぎません。

録音を開始

スクリプトレコーダウィンドウの下部にある[開始]ボタンをクリックすると、ブラウザの要求を傍受して記録するために使用されるJMeterプロキシサーバーが起動します。 今すぐ(レコーダーの)スタートボタンをクリックします。

レコーダを初めて実行しようとすると、証明書が存在しないためにレコーダを起動できないというエラーが表示されます。 [OK]をクリックしてから、もう一度[開始]をクリックします。 ApacheJMeterTemporaryRootCA.crtという名前の一時証明書がJMeterbinディレクトリに作成されたことを示すメッセージが表示されます。 [OK]をクリックして続行します。

注:ブラウザーで既にプロキシを使用している場合は、コマンドラインオプション-Hおよび-Pを使用して、JMeterを起動する前にそのプロキシを使用するようにJMeterを構成する必要があります。

JMeterプロキシを使用するようにFirefoxを構成する

JMeter HTTP(S)テストスクリプトレコーダーを使用する場合は、Firefoxをブラウザーとして使用します。これは、Chromeや他の一部のブラウザーとは異なり、プロキシ設定のシステム全体の構成をオーバーライドできるためです。

次の手順に従って、ポート8080のローカルホスト(127.0.0.1)をすべてのトラフィックのプロキシとして使用するようにFirefoxを構成します。

  1. Firefoxを開く
  2. [設定]メニューに移動します
  3. [詳細設定]タブをクリックします
  4. 次に[ネットワーク]タブ
  5. 「接続」セクションで、「設定…」をクリックします
  6. 「手動プロキシ設定」ラジオボタンを選択します
  7. HTTPプロキシを「localhost」に設定し、ポートを「8080」に設定します
  8. 「このプロキシサーバーをすべてのプロトコルに使用する」にチェックを入れます
  9. [OK]をクリックして、[設定]メニューを終了します

注: FirefoxがJMeterのスクリプトレコーダーをプロキシとして使用するように構成されている場合、スクリプトレコーダーが実行されている場合にのみ正しく機能します。

HTTPリクエストの記録

テストプランのHTTP(S)テストスクリプトレコーダーが実行され、Firefoxがそれをプロキシとして使用するように構成されたので、Firefoxが送信するHTTPリクエストが記録されます。 それをテストしてみましょう。

Firefoxで、サーバーのホームページ(JMeter HTTPリクエストのデフォルトで構成したのと同じサーバー)に移動します。

http://your_domain.com/

これで、レコーディングコントローラーの横に小さな三角形が表示されます。 それをクリックして展開し、記録したリクエストを表示します。 含めたり除外したりしたURLパターンに応じて、記録されたHTTPリクエストが表示されます。 より多くのリクエストを記録するためにあなたのサイトを閲覧してください。

WordPressサイト(URLパターンが設定されていない)のホームページにアクセスしたときに記録されたものの例を次に示します。

ご覧のとおり、多くのリクエストが作成されました。 ここで不要なエントリを削除するだけで、HTTPリクエストのリストを絞り込むことができます。

Recording Controllerの下にエントリが表示されない場合は、HTTP(S)テストスクリプトレコーダーでURLパターンを確認する必要があります(ヒント:すべてを記録するには、すべてのインクルードとエクスクルードを削除します)。

記録が完了したら、HTTP(S)テストスクリプトレコーダウィンドウの下部にある[停止]ボタンをクリックします。 Firefoxは(ポート8080をプロキシとして使用するように構成されているため)どのページにも到達できなくなることに注意してください。正常に機能する場合は、「プロキシなし」を使用するように設定してください。

テスト計画を実行する

記録したテスト計画に満足したら、それを保存して実行します。 手動で作成したテストとまったく同じように機能するため、アイテムを構成、削除、および追加して、目的のテストケースにより厳密に一致させることができます。

結論

HTTP(S)テストスクリプトレコーダーを使用してJMeterテストプランの作成を支援できるようになったので、現実的なシナリオを模倣したテストプランを簡単に作成できるようになります。 ユーザーがWebサーバーをブラウザー処理するときに行われる要求の種類について詳しくは、記録コントローラーで記録された要求を自由に調べてください。

幸運を!