2017年版 負荷テストツールApache JMeter入門
前回、Tsungの構築方法についてご紹介しましたが
今回はApache JMeterを使ってみました.
Tsungとの違い
インストール
ダウンロード
Apache JMeter - Download Apache JMeter
Binariesのapache-jmeter-3.2.zipをダウンロード
シナリオ作成
スレッドグループ
スレッドグループは、アクセスユーザ数やリクエスト発行時間を設定します.
テスト計画を右クリック > 追加 > Threads(Users) > スレッドグループ で追加.
- スレッド数: リクエストユーザ数
- Ramp-Up期間: シナリオ実行時間
- ループ回数: シナリオ実行回数
例えば、スレッド数60, Ramp-Up期間60, ループ回数2だと
60秒の間に、60ユーザがリクエストを2度送る(60ユーザx2ループ÷60秒 = 秒間2リクエスト)ことになります.
ループコントローラ
ループコントローラは、配下のシナリオを何回実行させるか指定するコントローラです.
後述するインターリーブコントローラのためにここで追加します.
スレッドグループを右クリック > 追加 > ロジックコントローラ > ループコントローラ で追加.
インターリーブコントローラ
インターリーブコントローラは、直下のシナリオを1ループについて1つだけ順番に実行してくれます.
ループコントローラを右クリック > 追加 > ロジックコントローラ > インターリーブコントローラ で追加.
シンプルコントローラ
シンプルコントローラは、シナリオ作成者がわかりやすくまとめるためだけで、特別な役割はありません.
インターリーブコントローラを右クリック > 追加 > ロジックコントローラ > インターリーブコントローラ で「2個」追加.
1つ目のシンプルコントローラの名前を「HTML」、2つ目のシンプルコントローラの名前を「パーツ」と設定します.
ループコントローラのループ数を「2」と設定します.
これにより、インターリーブコントローラの役割どおり
HTMLシナリオが実行された後にパーツシナリオが実行され、ブラウザの挙動の近いシナリオを実現できました.
HTTPリクエスト
HTTPリクエストは、httpやhttpsでGETやPOSTクエストを発行するシナリオです.
HTMLを右クリック > 追加 > サンプラー > HTTPリクエスト で追加.
パーツを右クリック > 追加 > サンプラー > HTTPリクエスト で何個か追加.
こういう感じで設定します.
localhostも指定可能です.
POSTも指定できます.
必要に応じてUse multipart/form-data for PSOTをONにしましょう.
また、Advancedタブでリクエストのタイムアウトも設定できます.
テスト時になかなかレスポンスが帰ってこなくて時間がかかりすぎる場合や
応答許容時間がある場合に指定するとよいでしょう.
アサーション
POSTの応答値をチェックした場合などに使います.
POSTリクエストを右クリック > 追加 > アサーション > アサーション で追加.
テストパターンに正常時のパラメータを指定しましょう.
この場合は、POST応答値に「"success":"true"」が含まれていたら正常となります.
統計レポート
統計レポートはテスト結果(jtlファイル)を読み込ませるか、GUI上テストした全体的な結果を確認できます.
テスト計画を右クリック > 追加 > リスナー > 統計レポート で追加.
結果をツリーで表示
統計レポートはテスト結果(jtlファイル)を読み込ませるか、GUI上テストした各リクエストの詳細内容を確認できます.
テスト計画を右クリック > 追加 > リスナー > 結果をツリーで表示 で追加.
結果を表で表示
統計レポートはテスト結果(jtlファイル)を読み込ませるか、GUI上テストした各リクエストの実行順番やバイト数を確認できます.
テスト計画を右クリック > 追加 > リスナー > 結果を表で表示 で追加.
保存
かならず最初の保存は、テスト計画にフォーカスを与えて保存しましょう.
(スレッドグループにフォーカスを与えてたりすると全部のシナリオが保存されないことがありました)