はじめに
こんにちは!業務でAPI負荷テストを担当することになり、JMeterを使用しました。
今回はJMeterのインストールからGUIの基本操作、よく使う用語の解説、そしてCSV Data Set Configやスループットコントローラといった便利な機能の概要までをまとめていきます。
1. JMeterとは
Apach JMeterとはWebアプリケーションやAPIに対して負荷テストを行うためのオープンソースツールです。
「同時に何人がアクセスしたらどうなるか」「レスポンスは何秒以内に返ってくるか」といったことを測定でき、GUIで直感的にテストシナリオを作成することができます。
2. インストール方法(ダウンロード〜起動まで)
まずは前提としてJava 8以上がインストールされていることを確認してください。
java -version
でバージョンが表示されていればOKです。
インストールされていない場合は、macだとHomebrewを使用して
brew cask install adoptopenjdk
でインストールが可能です。
これでJMeterをインストールする準備が整いました!ここからJMeterを入れていきます。
ダウンロードと起動
JMeterの準備は以下になります。
- Apache JMeter公式サイト からBinariesのzipをダウンロード
- zipを解凍
- bin フォルダ内のファイルを実行
- Mac: jmeter.sh
起動すると左側のツリーに「テスト計画(Test Plan)」が表示されます。

この画面で設定をしていく形になります!
3. 基本用語の説明
JMeterを使う上で出てくる用語になります。
テスト計画
テスト全体の入れ物です。全ての設定やテストシナリオはこの中に配置します。
ユーザー定義変数
テスト計画全体で使い回す値を変数として定義できる機能です。
テスト計画の画面にあり、下にある「追加」ボタンを押すと追加することができます。
例えばホスト名やAPIキーなどを変数にしておけば複数のリクエストで同じ値を使い回すことができ、変更も一箇所で済みます!
スレッドグループ
仮想ユーザの振る舞いを定義する単位になります。
テスト計画を右クリック → threads(Users)→ スレッドグループから追加できます。
ここでは「何人のユーザーが」「どのくらいの時間」リクエストを送り続けるかを設定します。
スレッドグループ内で設定するものは下記になります。
| 項目 | 説明 |
| サンプラーエラー後のアクション |
|
| スレッド数 |
|
| Ramp-Up期間(秒) |
|
| ループ回数 |
|
| 持続時間(秒) |
|
| same user on each iteration |
|
| Delay thread creation until needed |
|
| スケジューラ |
|
ヘッダーマネージャ
HTTPリクエストに任意のヘッダーを追加できる機能です。APIテストではAuthorization(認証トークン)やContent-Type(リクエストボディの形式)を指定することが多く、ほぼ必須と言える設定エレメントです。
追加方法はHTTPリクエストを右クリック → 追加 → 設定エレメント → HTTPヘッダマネージャから追加できます。

設定画面では「名前」と「値」の形式でヘッダーを追加できます。例えばJSON形式のAPIを叩く場合は下の画像のように設定します。
${api_token}のようにユーザー定義変数で設定した値を参照することもできるので、トークンの管理が楽になります!
アサーション(Throughput)
レスポンスが期待通りかを検証する要素です。
テスト計画やスレッドグループを右クリック → threads(Users)→ スレッドグループから追加できます。
- レスポンスアサーション … ステータスコードが200であること等を検証
- 持続時間アサーション …レスポンスタイムが指定ミリ秒以内であることを検証
リスナー(Listener)
テスト結果を集計・表示する要素です。「統計レポート」や「Summary Report」でリクエストごとの平均応答時間、エラー率、スループット(1秒あたりの処理リクエスト数)などを確認できます。
4. 基本的な使い方
大体の用語がわかったので、GUIで実際に操作してみましょう!
要素の追加方法
親要素を右クリックして「追加」メニューから選択します。
- スレッドグループの追加: テスト計画を右クリック → 追加 → スレッド(ユーザー) → スレッドグループ
- HTTPリクエストの追加: スレッドグループを右クリック → 追加 → サンプラー → HTTPリクエスト
- ヘッダマネージャの追加: HTTPリクエストを右クリック → 追加 → 設定エレメント → HTTPヘッダマネージャ
- アサーションの追加: HTTPリクエストを右クリック → 追加 → アサーション → レスポンスアサーション
- リスナーの追加: テスト計画を右クリック → 追加 → リスナー → 統計レポート
スレッドグループの逐次実行
テスト計画の「スレッドグループを別々に実行(Run Thread Groups consecutively)」にチェックを入れると、スレッドグループが上から順番に実行されます。
たとえば「ログイン → 商品検索 → 購入」のように順番に実行したいシナリオがあった場合はチェックを入れる必要があります。
知っておくと便利な機能
- CSV Data Set Config
テストデータを外部CSVファイルから読み込む機能です。リクエストボディにデータをハードコードする代わりに、CSVから動的にデータを差し込めます。
例えば以下のようなCSVを用意して、(ファイル名はsample.csv)
U001,1001,10
U002,1002,10
U003,1003,20
CSV Data Set Configで Variable Names に name_id,user_id,branch_cd と設定すると、リクエストボディで ${user_id} や ${branch_cd} のように変数として参照できます。
リクエストごとにCSVの次の行が読み込まれるので、異なるデータで繰り返しテストが可能です。
CSVファイルは参照ボタンから入れることができます!
なお数値型は ${user_id}(クォートなし)、文字列型は "${name_id}"(クォートあり)で記述する点に注意してください。

スループットコントローラ
リクエストの実行比率を制御する機能です。
名前に「スループット」とついていますが、リスナーで確認できる指標のスループット(1秒あたりの処理リクエスト数)とは別物です!
「全フィールド更新70%、必須のみ更新30%」のように、種類の異なるリクエストを指定した割合で混在させることができます。
スレッドグループを右クリック → 追加 → ロジックコントローラ → スループットコントローラから追加できます。
設定方法としてはスレッドグループの中に複数のスループットコントローラを配置し、それぞれに実行割合(Percent Executions)を設定します。
比率の合計は100%になるようにしてください。


おわりに
この記事ではJMeterの導入から基本用語、GUIの使い方、そしてCSV Data Set Configとスループットコントローラの概要を紹介しました。
はじめは操作に手こずりましたがGUIでの操作について学ぶことができました!
