JMeterでテストシナリオを設定(後半)
5.コントローラーの作成
今回のテストシナリオでは、ログインした後に複数回メモ追加処理を行います。つまり、ログイン→メモ追加→ログイン→メモ追加ではなく、ログイン→メモ追加→メモ追加のような処理の流れになります。先ほどのサンプラーを作成しただけだと、交互にリクエスト処理を繰り返すだけになってしまうので、ログインのリクエスト処理は最初の一度だけという設定にしたいところです。
こういった場合には、コントローラーが有効です。コントローラーでは、サンプラーなどの処理をコントロールすることにより、複雑なテストシナリオを行うことができます。基本的にコントローラーはそれ自身の子要素に、コントロール対象のサンプラーなどを配置します。ある要素をある要素の子要素にしたい場合には、順番を並び替えるのと同じで、ドラッグ&ドロップして、[子として追加]を選択すればできます。コントローラーの種類を表にまとめました。
| コントローラー名 | 概要 |
| シンプルコントローラ | 実行処理は変わらないが、子要素に入れてグルーピングするのに使われる |
| インターリーブコントローラ | 複数の子要素の中から順番に一つの要素を実行する |
| ランダムコントローラ | インターリーブコントローラーの順番がランダムになったもの |
| ループコントローラ | 全ての子要素を指定された回数繰り返し実行する |
| 一度だけ実行されるコントローラ | 全ての繰り返し処理の中で1度だけ実行する |
ここでは、一度だけ実行されるコントローラーを使用します。スレッドグループで右クリックして[追加]→[ロジックコントローラー]→[一度だけ実行されるコントローラー]を選択してください。さらに、ログイン処理のサンプラーを作成したコントローラーの子要素になるように移動させます。下のような構成になればOKです。
6.HTTPクッキーマネージャの作成
JMeterでは、基本的なHTTPリクエストを送信するだけでなく、セッション、クッキー、Basic認証などの機能もサポートしています。今回のテストでは、ログイン後にユーザIDを保持するためにクッキーによるセッションを使用しています。ここでは、セッションを確立してリクエストを送受信するための設定を解説します。ちなみに、JMeterではURLリライトによるセッション確立もサポートしています。
クッキーを使用するためには、次の手順に従い、HTTPクッキーマネージャーを追加します。[スレッドグループ]を右クリックして[追加]→[設定エレメント]→[HTTPクッキーマネージャー]を選択します。ここではクッキーの値を設定することができますが、これはサーバーからクッキーを受信してそのまま送信するだけであれば設定する必要はありません。クッキーの値は、独自にオリジナルなクッキーを送信したい場合に使用します。また、クッキーはスレッドごとに別々に管理されているので値がかぶってしまうようなことはありません。
7.タイマの作成
今回のテストシナリオでは、2秒おきにリクエストを送信するというものになっています。通常特に何も設定しなければ、タイムラグがほとんどない状態で大量のリクエストが送信されてしまうことになります。これを防ぐにはタイマを使用します。タイマは、リクエスト送信のタイムラグを特定の値にすることができます。下にタイマの種類を表にしました。
| タイマ名 | 概要 |
| 定数タイマ | リクエスト送信ごとに特定の時間ポーズ |
| 一様乱数タイマ | 各スレッドでランダムな間ポーズ |
| ガウス乱数タイマ | 各スレッドでランダムな間ポーズ(ガウス分布を使用) |
ここでは、リクエスト送信ごとに2秒のポーズを発生させたいため、定数タイマを使用します。[スレッドグループ]を右クリックして[追加]→[タイマ]→[定数タイマ]を選択します。そしてスレッド遅延時間に2000ミリ秒を設定すれば完了です。
8.アサーションの作成
JMeterには、パフォーマンス的な情報の取得/解析だけでなく、レスポンス情報の内容が正しいかなどを判定するアサーション機能も持っています。JMeterのアサーション機能には以下のようなものがあります。
| アサーション名 | 概要 |
| アサーション | レスポンスのコードやテキストを検査 |
| アサーションの持続 | 指定された時間内にサーバから応答があったかどうかを検査 |
今回のテストで返されるレスポンスは、正常であれば必ずメモの一覧画面であるはずなので、レスポンスのテキストの中に、一覧画面のタイトルタグの文字列が含まれるかどうかを検証してみます。含まれていれば、少なくとも一覧画面の一部が正常に表示されていることになります。
アサーションを追加するには、[スレッドグループ]を右クリックして[追加]→[アサーション]→[アサーション]を選択します。今回は、テキストのレスポンスに<title>JMeter-MemoList</title>が含まれていた場合にOKとします。画面では下のような設定になります。
9.リスナーの作成
リスナーとは、テストの実行に得られる情報の収集・表示をするためのものです。JMeterでは、収集した情報を、表形式、メールで送信、グラフ表示などのさまざまな形式で表示することができます。また、リスナーは複数を同時に作成することもできます。
では、リスナーを作成して必要な値を設定していきます。サンプルテストを右クリックして[追加]→[リスナー]→[結果を表で表示]を選択し、表を追加します。同様に、アサーション結果、グラフ表示を作成します。ここでは特別に値を設定する必要はありません。
また、リスナーには今回のHTTPリクエスト以外にも以下のようなリスナーがあります。これらを使用することにより、さまざまな形でテスト結果を解析することができます。
| リスナー名 | 概要 |
| メーラー・ビジュアライザー | エラー情報をメールで送信 |
| スプライン・ビジュアライザー | 応答時間をスプライン曲線で表示 |
| ビュー・リザルト・ツリー | レスポンスをツリー表示 |
10.テスト計画の保存
設定したテスト計画は、jmxという拡張子のXMLファイルで保存しておくことができます。テスト計画を保存するには、メニューから[ファイル]→[テスト計画を保存]を選択します。
テスト計画を保存しておくことにより、Webアプリケーションのプログラムが修正される度に負荷テストを行うといったことが簡単にできます。そのため、テスト計画のパターンをいくつか作って保存しておくといいでしょう。





