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 を実行する。
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リクエストは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リクエストはJMeterシナリオでHTTPリクエストを送信するサンプラーである。
HTTPリクエストの設定項目を次の表に示す。
項目 | 説明 |
---|---|
名前 | HTTPリクエストサンプラーを複数作成したときに、それぞれを識別できるように任意の名前を付ける。 |
コメント | サンプラーの説明を記述する。 |
プロトコル | Webサーバのプロトコルを指定する。 |
サーバ名またはIP | Webサーバのホスト名またはIPアドレスを指定する。 |
ポート番号 | Webサーバのポート番号を指定する。 |
メソッド | HTTPリクエストのメソッドを指定する。 |
パス | Webサーバのパスを指定する。 |
Parameters | リクエストで送るパラメータを指定する。 |
Body Data | ボディデータを指定する。 |
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 | テストの結果の集計を表示する。 |
アサーション結果 | アサーションの結果を表示する。 |
グラフ表示 | 応答結果をグラフ表示する。 |
シンプルデータライタ | 応答結果をファイルに出力する。他のリスナーにも含まれる。 |
メーラービジュアライザ | テスト結果の成功・失敗の件数が設定した閾値を超えたらメールする。 |
応答をファイルへ保存 | テストの応答を個別にファイルへ保存する。 |
結果の概要を生成 | 結果の概要をコンソールまたはログファイルへ出力する。 |
結果をツリーで表示 | テストの実行結果をツリー状の形式で表示する。 |
結果を表で表示 | テストの実行結果を表形式で表示する。 |
統計レポート | テストの結果の集計を表示する。 |