Apache JMeter

Apache JMeterは、クライアント・サーバシステムの性能測定や負荷テストを行うJavaアプリケーションです。この記事では、JMeterのできることや、使い方をサンプルを交えてご紹介します。

ダウンロード

JMeterをダウンロードするには、Apache JMeterの公式サイトから「Donwload Release」のページに行き、JMeterのインストーラをダウンロードする。

Windowsの場合、「Binaries」の「apache-jmeter-X.X.zip」をダウンロードする。

ダウンロードした「apache-jmeter-X.X.zip」を任意のフォルダに展開する。

ZIPファイルの展開にLhaplusを使った場合、「正常に解凍できません。CRCが一致しないか、出力先ファイルが使用中です。」というエラーが出ることがある。この場合、WindowsエクスプローラでZIPファイルを展開する。

JMeterはJavaアプリケーションなので、別途JRE (Java Runtime Environment)またはJDK (Java Devepopment Kit)をダウンロードしてインストールしておく必要がある。

使い方

インストールフォルダの bin\jmeter.bat を実行する。

Apache JMeter
Figure 1. Apache JMeter

シナリオ

JMeterシナリオを作成するには、まずスレッドグループを作成する。スレッドグループを作成するには、「テスト計画」を右クリックしてコンテキストメニューを表示させて「追加」-「Threads (Users)」-「スレッドグループ」をクリックする。または「編集」メニューから「追加」-「Threads (Users)」-「スレッドグループ」をクリックする。

スレッドグループの設定項目を次の表に示す。

項目 説明
名前 スレッドグループを複数作成したときに、それぞれを識別できるように任意の名前を付ける。
コメント スレッドグループの説明を記述する。
スレッド数 1回のテストケースで生成されるスレッドの数を指定する。
Ramp-Up期間(秒) 何秒間ですべてのスレッドを生成するかを指定する。0を指定した場合、すべてのスレッドを同時に生成する。
ループ回数 テストケースの生成を何回行うかを指定する。
無限ループ テストケースの生成を無限に行う。

JMeterで設定した内容は、JMeter設定ファイル(*.jmx)として保存できる。

サンプラー

スレッドグループを右クリックしてコンテキストメニューを表示させて「追加」- 「サンプラー」- 「HTTPリクエスト」をクリックする。

サンプラーにはさまざまな種類がある。サンプラーの種類を次の表に示す。

サンプラー
サンプラー 説明
Access Log Sampler アクセスログを使用してHTTPリクエストを送信する。
AJP/1.3 Sampler TomcatのAJP 1.3コネクターへリクエストを行なう。
Bean Shellサンプラー BeanShellスクリプトを使用する。
Debug Sampler デバッグ用のサンプラー。JMeterのプロパティ値、変数およびシステムのプロパティ値を取得する。
FTPリクエスト FTPリクエストを送信する。
HTTPリクエスト HTTPリクエストを送信する。
Javaリクエスト Javaリクエストを行なう。
JDBC Request JDBCリクエストを送信する。
JMS Point-to-Point JMS(Point to Point型)リクエストを送信する。
JMS Publisher JMS(Publish/Subscribe型)リクエストを送信する。
JMS Subscriber JMS(Publish/Subscribe型)リクエストを送信する。
JSR223 Sampler JSR223スクリプトを使用する。
JUnit Request JUnitによるテストクラスを使用する。JMeter/lib/junitにあるテストクラスが読み込まれる。
LDAP Extended Requestt LDAPリクエスト(拡張版)を送信する。
LDAPリクエスト LDAPリクエストを送信する。
Mail Reader Sampler Mailリーダーのサンプラー。
OS Process Sampler OSコマンドを実行する。
SMTP Sampler SMPTを送信する。
TCPサンプラー TCPを送信する。
Test Action Test Actionサンプラー。スレッドの停止、一時停止などを行なう。

FTPリクエスト

FTPリクエストはJMeterシナリオでFTPリクエストを送信するサンプラーである。

FTPリクエストの設定項目を次の表に示す。

項目 説明
名前 FTPリクエストサンプラーを複数作成したときに、それぞれを識別できるように任意の名前を付ける。
コメント サンプラーの説明を記述する。
サーバ名またはIP FTPサーバのホスト名またはIPアドレスを指定する。
ポート番号 FTPサーバのポート番号を指定する。
Remote File リモート(FTPサーバ側)ファイルのパス名を指定する。
Local File ローカル(FTPクライアント側)ファイルのパス名を指定する。
get(RETR) FTPサーバからファイルをダウンロードするときに選択する。
put(STOR) FTPサーバへファイルをアップロードするときに選択する。
Use Binary mode? ファイルをバイナリモードで転送するときに選択する。
Save File in Response? 応答をファイルに保存するときに選択する。
ユーザー名 FTPサーバにログインするユーザ名を指定する。
パスワード FTPサーバにログインするパスワードを指定する。

HTTPリクエスト

HTTPリクエストはJMeterシナリオでHTTPリクエストを送信するサンプラーである。

HTTPリクエストの設定項目を次の表に示す。

項目 説明
名前 HTTPリクエストサンプラーを複数作成したときに、それぞれを識別できるように任意の名前を付ける。
コメント サンプラーの説明を記述する。
プロトコル Webサーバのプロトコルを指定する。
サーバ名またはIP Webサーバのホスト名またはIPアドレスを指定する。
ポート番号 Webサーバのポート番号を指定する。
メソッド HTTPリクエストのメソッドを指定する。
パス Webサーバのパスを指定する。
Parameters リクエストで送るパラメータを指定する。
Body Data ボディデータを指定する。

OS Process Sampler

OS Process SamplerはJMeterシナリオでOSコマンドを実行するサンプラーである。

OS Process Samplerの設定項目を次の表に示す。

項目 説明
名前 OS Process Samplerを複数作成したときに、それぞれを識別できるように任意の名前を付ける。
コメント サンプラーの説明を記述する。
Command 実行するOSコマンドを指定する。
Working directory 作業ディレクトリを指定する。
Command parameters 実行するOSコマンドのパラメータ(引数)を指定する。
Environment variables 環境変数を設定する。
Standard input (stdin) 標準入力を指定する。
Standard output (stdout) 標準出力を指定する。
Standard error (stderr) 標準エラー出力を指定する。
Check return code 戻り値をチェックする場合に、期待する戻り値を指定する。
Timeout (ms) 実行タイムアウトを設定する場合に、その時間をミリ秒単位で指定する。

リスナー

「リスナー」とは、テスト中に収集した情報を表示したり、ファイルに保存する機能である。

リスナーにはさまざまな種類がある。リスナーの種類を次の表に示す。

リスナー 説明
Aggregate Graph テストの結果の集計をグラフ化する。
Backend Listener
Bean Shell Listener テストの結果をBeanShellで処理する。
Comparsion Assertion Visualizer Compare Assertionの比較結果を表示する。比較内容が違う場合にデータ比較が表示される。
JSR223 Listener テストの結果をJSR223 スクリプトで処理する。
Response Time Grapth テストの結果の応答時間をグラフ化する。
Summery Report テストの結果の集計を表示する。
アサーション結果 アサーションの結果を表示する。
グラフ表示 応答結果をグラフ表示する。
シンプルデータライタ 応答結果をファイルに出力する。他のリスナーにも含まれる。
メーラービジュアライザ テスト結果の成功・失敗の件数が設定した閾値を超えたらメールする。
応答をファイルへ保存 テストの応答を個別にファイルへ保存する。
結果の概要を生成 結果の概要をコンソールまたはログファイルへ出力する。
結果をツリーで表示 テストの実行結果をツリー状の形式で表示する。
結果を表で表示 テストの実行結果を表形式で表示する。
統計レポート テストの結果の集計を表示する。