4. Web テスト計画の構築¶
このセクションでは 、Web サイトをテストするための基本的なテスト計画を作成する方法を学習します。JMeter Web サイトの 2 つのページに要求を送信する 5 人のユーザーを作成します。また、ユーザーにテストを 2 回実行するように指示します。したがって、リクエストの総数は (5 ユーザー) x (2 リクエスト) x (2 回繰り返す) = 20 HTTP リクエストです。テスト計画を作成するには、次の要素を使用します: Thread Group、 HTTP Request、 HTTP Request Defaults、および Graph Results。
より高度なテスト計画については、 Building an Advanced Web Test Planを参照してください。
4.1 ユーザーの追加¶
すべての JMeter テスト計画で行う最初のステップは、 スレッド グループ要素を追加することです。スレッド グループは、シミュレートするユーザーの数、ユーザーが要求を送信する頻度、送信する要求の数を JMeter に伝えます。
まずテスト計画を選択し、マウスの右ボタンをクリックして [追加] メニューを表示し、[追加] → [ThreadGroup] を選択して、ThreadGroup 要素を追加します。
Test Plan の下に Thread Group 要素が表示されます。要素が表示されない場合は、テスト計画要素をクリックしてテスト計画ツリーを「展開」します。
次に、デフォルトのプロパティを変更する必要があります。まだ選択していない場合は、ツリーでスレッド グループ要素を選択します。JMeter ウィンドウの右側のセクションにスレッド グループ コントロール パネルが表示されます (下の図 4.1 を参照)。

まず、スレッド グループにわかりやすい名前を付けます。名前フィールドに、JMeter Users と入力します。
次に、ユーザー (スレッドと呼ばれる) の数を 5 に増やします。
次のフィールドであるランプアップ期間は、デフォルト値の 1 秒のままにします。このプロパティは、JMeter に各ユーザーの開始までの遅延時間を伝えます。たとえば、5 秒の Ramp-Up Period を入力すると、JMeter は 5 秒の終わりまでにすべてのユーザーの起動を終了します。したがって、5 人のユーザーと 5 秒のランプアップ期間がある場合、開始ユーザー間の遅延は 1 秒になります (5 ユーザー / 5 秒 = 1 秒あたり 1 ユーザー)。値を 0 に設定すると、JMeter はすぐにすべてのユーザーを開始します。
最後に、Loop Count フィールドに値 2 を入力します。このプロパティは、テストを繰り返す回数を JMeter に伝えます。ループ カウントの値として 1 を入力すると、JMeter はテストを 1 回だけ実行します。JMeter でテスト計画を繰り返し実行するには、Forever チェックボックスを選択します。
完成した JMeter ユーザー スレッド グループについては、図 4.2 を参照してください。

4.2 デフォルトの HTTP リクエスト プロパティの追加¶
ユーザーを定義したので、次はユーザーが実行するタスクを定義します。このセクションでは、HTTP 要求のデフォルト設定を指定します。そして、セクション 4.3 で、ここで指定したデフォルト設定の一部を使用する HTTP リクエスト要素を追加します。
まず、JMeter ユーザー (スレッド グループ) 要素を選択します。マウスの右ボタンをクリックして [追加] メニューを表示し、[追加] → [構成要素] → [HTTP 要求のデフォルト] を選択します。次に、この新しい要素を選択して、そのコントロール パネルを表示します (図 4.3 を参照)。

ほとんどの JMeter 要素と同様に、HTTP Request Defaultsコントロール パネルには変更可能な名前フィールドがあります。この例では、このフィールドをデフォルト値のままにします。
Web サーバーのサーバー名/IP である次のフィールドに進みます。構築中のテスト計画では、すべての HTTP 要求が同じ Web サーバー jmeter.apache.org に送信されます。このドメイン名をフィールドに入力します。これは、デフォルトを指定する唯一のフィールドであるため、残りのフィールドはデフォルト値のままにしておきます。
完成した HTTP Request Defaults 要素については、図 4.4 を参照してください。

4.3 Cookie サポートの追加¶
アプリケーションが特に Cookie を使用しない場合を除き、ほぼすべての Web テストで Cookie サポートを使用する必要があります。Cookie サポートを追加するに は、テスト計画の各スレッド グループにHTTP Cookie Managerを追加するだけです。これにより、各スレッドが独自の Cookie を取得しますが、すべてのHTTP Requestオブジェクトで共有されます。

HTTP Cookie Managerを追加するには、 Thread Groupを選択し、[編集] メニューまたは右クリックのポップアップ メニューから [追加] → [構成要素] → [HTTP Cookie Manager] を選択します。
4.4 HTTP リクエストの追加¶
テスト計画では、2 つの HTTP リクエストを作成する必要があります。1 つ目は JMeter ホームページ (http://jmeter.apache.org/) 用で、2 つ目は変更ページ (http://jmeter.apache.org/changes.html) 用です。
最初のHTTP リクエスト を JMeter ユーザー要素に追加することから始めます (追加 → サンプラー → HTTP リクエスト)。次に、ツリーで HTTP Request 要素を選択し、次のプロパティを編集します (図 4.6 を参照)。
- 名前フィールドを「ホームページ」に変更します。
- パス フィールドを「/」に設定します。サーバー名フィールドを設定する必要がないことに注意してください。この値は、HTTP 要求のデフォルト要素で既に指定されているためです。

次に、2 番目の HTTP リクエストを追加し、次のプロパティを編集します (図 4.7 を参照)。
- 名前フィールドを「Changes」に変更します。
- パス フィールドを「/changes.html」に設定します。

4.5 リスナを追加してテスト結果を保存する¶
テスト計画に追加する必要がある最後の要素は Listenerです。この要素は、HTTP 要求のすべての結果をファイルに保存し、データのビジュアル モデルを提示する役割を果たします。
JMeter ユーザー要素を選択し、グラフ結果リスナーを追加します (追加 → リスナー → バックエンド リスナー)。
4.6 ウェブサイトへのログイン¶
ここではそうではありませんが、一部の Web サイトでは、特定のアクションの実行を許可する前にログインする必要があります。Web ブラウザーでは、ログインはユーザー名とパスワードのフォーム、およびフォームを送信するためのボタンとして表示されます。このボタンは POST リクエストを生成し、フォーム項目の値をパラメーターとして渡します。
JMeter でこれを行うには、HTTP リクエストを追加し、メソッドを POST に設定します。フォームで使用されるフィールドの名前と対象ページを知っておく必要があります。これらは、ログイン ページのコードを調べることで確認できます。[これが難しい場合は、JMeter Proxy Recorderを使用してログイン シーケンスを記録できます。] 送信ボタンのターゲットへのパスを設定します。[追加] ボタンを 2 回クリックし、ユーザー名とパスワードの詳細を入力します。ログインフォームに追加の非表示フィールドが含まれている場合があります。これらも追加する必要があります。

4.7 同じユーザーまたは別のユーザーを選択する¶
テスト計画を作成するとき、スレッド グループの反復ごとに、複数の反復を実行する同じユーザーをシミュレートするか、1 つの反復を実行する異なるユーザーをシミュレートするかを選択できます。スレッド グループ要素でこの動作を構成し、HTTP キャッシュ マネージャー、HTTP Cookie マネージャー、HTTP 承認マネージャーをこの設定で制御できます。

CookieManager/CacheManager/Authorization Manager で Cookie/キャッシュ コンテンツ/承認をクリアするか、スレッド グループによって制御されるかを選択できます。


