【JMeter】負荷テスト実行はGUIから行ってはならない


GUIで負荷テスト実行はダメ

JMeterで負荷テストを行うとき、テスト実行をGUI上から行ってはいけません。JMeterのGUIがボトルネックになって正しい結果が得られないことがあるからです。

GUIはテスト計画の作成のためだけに使い、正式な負荷テストではコマンドラインから実行するのが正しい使い方です。

公式のGetting Startedには以下のように繰り返しかつ強い口調で負荷テストでGUIモードを使ってはいけないと記載されています(太字による強調は。

Don't run load test using GUI mode !

(負荷テストをGUIモードで実行しないで!)

GUI mode should only be used for creating the test script, NON GUI mode must be used for load testing

(GUIモードはテストスクリプトの作成にのみ使用し、負荷テストには非GUIモードを使用しなければなりません。)

For load testing, you must run JMeter in this mode (Without the GUI) to get the optimal results from it.

(負荷テストの場合、最適な結果を得るためにはJMeterを(GUIの無い)このモードで実行しなければなりません。)

非GUIモード(コマンドラインモード)

非GUIでテストを実行するために、JMeterには以下のコマンドラインオプションが用意されています。

オプション 説明
-n JMeterを非GUIモードで起動
-t [ファイル名] テスト計画のJMXファイル名を指定
-l [ファイル名] テスト結果を格納するJTLファイル名を指定1
-j [ファイル名] JMetterの実行ログファイル名を指定
-g [CSVファイル名] (テストは実行せずCSVファイルを読み込んで)レポートを出力する
-e 負荷テスト後にレポートを出力する
-o [フォルダ名] レポートを出力するフォルダを指定する。存在しないフォルダ名か空のフォルダを指定しなければならない。

他にもプロキシの設定やリモートサーバー上でテストを実行するためのオプションなどもありますので本家を参照してください。

【例】
my_test.jmxに定義されたテストを実施してlog.jtlに結果を出力する。

jmeter -n -t my_test.jmx -l log.jtl

結果表示・解析

コマンドで実行したテストの結果表示・解析方法はいくつかあります。

リスナによる解析

出力したjtlファイルをJMeter(GUI)のリスナに読み込ませることで結果を解析することができます。

下の画像はグラフ表示リスナにjtlファイルを読み込ませた例です(赤枠内でjtlファイルを指定しています)。

Report Dashboard(HTMLレポート)

リスナによる解析結果の表示のほか、詳細なHTMLレポートを出力することもできます。-gオプションまたは-eオプションを利用します。

【例】
my_test.jmxに定義されたテストを実施してlog.jtlに結果を、reportフォルダにレポートを出力する。

jmeter -n -t my_test.jmx -l log.jtl -e -o report

出力されるHTMLの一部です。

うーんかっこいい2。これを使うとJenkinsで定期的に負荷テストを実施してレポートを出力なんて事もできちゃいますね。

レポート出力に関する説明や設定方法の詳細は公式ガイドに書いてあります。

参考

この記事を書いた時点でのJMeterのバージョンは3.1です。


  1. ドキュメントには記載がありませんが、-oオプションと同様に-lオプションも存在しないファイル名を指定しなければいけないようです。 

  2. レポートを出力しただけで満足するいけないパターン。