Apache JMeterによるパフォーマンステストの実施方法

JMeterの概要

Apache JMeterは、Javaベースのオープンソーステストツールであり、主にWebアプリケーションの負荷テストやパフォーマンス評価に利用されます。HTTP/HTTPS、FTP、SOAP、Javaなどのプロトコルをサポートしており、高い拡張性を持つデスクトップアプリケーションとして機能します。

公式サイト:https://jmeter.apache.org/

インストールと初期設定

  1. 事前にJava実行環境(JRE/JDK)がシステムにインストールされていることを確認してください。
  2. 公式サイトから最新バージョンのアーカイブファイルをダウンロードし、適当なディレクトリに展開します。
  3. 設定ファイルの編集:
    • bin/jmeter.propertiesを開き、以下の項目を変更します:
    • language=ja_JP(日本語表示にする場合)
    • sampleresult.default.encoding=UTF-8
  4. 起動方法:
    • 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」を選択して追加します。

タグ: JMeter Performance Testing Apache Load Testing API Testing

5月27日 18:25 投稿