JMeterの概要
Apache JMeterは、Javaベースのオープンソーステストツールであり、主にWebアプリケーションの負荷テストやパフォーマンス評価に利用されます。HTTP/HTTPS、FTP、SOAP、Javaなどのプロトコルをサポートしており、高い拡張性を持つデスクトップアプリケーションとして機能します。
公式サイト:https://jmeter.apache.org/
インストールと初期設定
- 事前にJava実行環境(JRE/JDK)がシステムにインストールされていることを確認してください。
- 公式サイトから最新バージョンのアーカイブファイルをダウンロードし、適当なディレクトリに展開します。
- 設定ファイルの編集:
bin/jmeter.propertiesを開き、以下の項目を変更します:language=ja_JP(日本語表示にする場合)sampleresult.default.encoding=UTF-8
- 起動方法:
binディレクトリへ移動し、jmeter.bat(Windows)またはjmeter.sh(Linux/Mac)を実行します。
主要コンポーネントの構成
- テスト計画(Test Plan): 全体のテスト構造を定義するルート要素です。
- スレッドグループ(Thread Group): ユーザー数や繰り返し回数など、負荷条件を設定します。
- サンプラー(Sampler): 実際のリクエスト(GET/POSTなど)を生成します。
- アサーション(Assertion): レスポンスデータの検証を行います。
- リスナー(Listener): テスト結果の可視化・記録を担当します。
スレッドグループの設定
テスト計画配下に「Threads (Users)」→「Thread Group」を追加し、以下のようなパラメータを設定できます:
- Number of Threads (users): 同時接続ユーザー数
- Ramp-up period (seconds): 全スレッド起動までの時間
- Loop Count: 各スレッドの繰り返し回数
HTTPリクエストの作成例
GETリクエスト
// サンプラー追加: HTTP Request
Path: /api/users
Method: GET
POSTリクエスト(Form Data)
Method: POST
Path: /api/login
Parameters:
username=admin&password=pass123
POSTリクエスト(JSON Body)
Method: POST
Path: /api/data
Body Data:
{
"name": "test",
"value": 100
}
// Header ManagerでContent-Type: application/jsonを設定
タイムアウト設定
各HTTPリクエスト内で「Response Timeout」をミリ秒単位で指定可能です。
設定要素の活用
共通設定コンポーネント
- HTTP Request Defaults: 共通のベースURLやポート番号などを一括設定
- HTTP Header Manager: リクエストヘッダーの一括管理
- HTTP Cookie Manager: 自動Cookie処理の有効化
- HTTP Cache Manager: ブラウザキャッシュ動作のシミュレーション
Cookie管理の詳細
JMeterではCookieを自動的に処理できますが、「HTTP Cookie Manager」をスレッドグループに追加することで明示的に有効化する必要があります。
Header管理の応用
SOAPやREST APIなど特定のヘッダーが必要な場合、「HTTP Header Manager」を使用して以下のように設定します:
Name: Content-Type
Value: text/xml
レスポンス検証(アサーション)
一般的なアサーション種別
- Response Assertion: レスポンス本文、コード、ヘッダーの文字列比較
- Duration Assertion: レスポンスタイムの上限チェック
- JSON Assertion: JSONパスによるフィールド値検証
- Size Assertion: レスポンスサイズの検証
JSON Assertionの使用例
JSON Path: $.status
Expected Value: success
Response Assertionの設定
パターンマッチングルール(Substring, Equals, Matchesなど)を選択し、期待するテキストを入力します。
テスト結果の監視
主なリスナータイプ
- View Results Tree: 個別のリクエスト・レスポンス詳細の確認
- Aggregate Report: 平均値、90%ラインなどの統計情報
- Graph Results: 時系列での応答時間グラフ表示
- View Results in Table: 表形式での簡易結果一覧
View Results Treeの導入
「Add」→「Listener」→「View Results Tree」を選択して追加します。