Load Tester (multiple remote servers) Powered by Apache JMeter™でCSV Data Setを利用する (旧バージョン用)
Load Tester (multiple remote servers) Powered by Apache JMeter™でCSV Data Setを利用してファイルから値を読み取りそれをテストに利用する方法を説明します。
最新のLoad Testerでは、この記事で紹介する方法よりも簡単にリモートのJMeterサーバーへのテストデータファイルの配布をできるようになっています。 その手順はこちらの記事をご覧ください。
Load Tester (multiple remote servers) Powered by Apache JMeter™は、Apache JMeter™をMicrosoft Azure上の複数のサーバーで稼働させ、大規模な負荷テストができるものです。
JMeterではリクエストごとに異なるパラメーター値を渡したい場合、CSVファイルにその値を用意しておくことができます。
JMeterのリモートテストを実施する場合、このCSVファイルをすべてのJMeterサーバーに配布する必要があります。
ここでは、その方法を説明します。
手順概要
- CSVファイルを用意する
- CSVファイルをJMeterサーバーのローカルディスクにコピーする
- CSV Data Set ConfigでCSVファイルを参照し設定する
- サンプラーでそのパラメーターを利用する
- リスナーを追加する
- テストを実施する
- 結果を確認する
手順詳細
すべてのJMeterサーバーで同じCSVファイルを利用する場合は、そのファイルを用意して共有ディスクに配置します。
JMeterサーバーごとに異なるCSVファイルを利用する場合は、サーバーごとにファイルを用意して共有ディスクに配置します。
ここでは、このそれぞれの方法を説明します。
すべてのJMeterサーバーで同じCSVファイルを利用する場合
-
CSVファイルを用意する
JMeterクライアントで、/mnt/jmuserdata 配下にテストデータとなるCSVファイルを作成します。
クライアントおよびサーバーの /mnt/jmuserdata にはネットワークディスクがマウントされています。例) /mnt/jmuserdata/prefecture.csv
code,prefecture 01,Hokkaido 02,Aomori 03,Iwate 04,Miyagi 05,Akita 06,Yamagata 07,Fukushima 08,Ibaraki 09,Tochigi 10,Gunma
-
CSVファイルをJMeterサーバーのローカルディスクにコピーする
ネットワークディスクのCSVファイルをそのまま利用することも可能ですが、ファイルアクセスが遅いためお奨めしません。
そのため、JMeterサーバーのローカルディスクにCSVファイルをコピーします。- JMeterを起動する
- Test Planに"setUp Thread Group"を追加する
Add (追加) > Threads (Users) > setUp Thread Group - setUp Thread Groupに"OS Process Sampler"を追加する
Add (追加) > Sampler (サンプラー) > OS Process Sampler
- Name: Copy CSV files
- Command: bash
- Command parameters (Value)
( [ Add (追加) ] をクリックして以下の行を追加します)- -c
- cp -f /mnt/jmuserdata/* /tmp
- Check Return Code: チェックして、値は"0"
上記の例では、/mnt/jmuserdataに作成したファイルをJMeterサーバーの/tmpにコピーしています。
- setUp Thread Groupに"View Results Tree"を追加する
Add (追加) > Listener (リスナー) > View Results Tree (結果をツリーで表示) - 実行することでCSVファイルをコピーする
MENU > Run (実行) > Remote Start All (全て開始(リモート)) - 結果を確認する
View Results Tree (結果をツリーで表示)でResponse codeが0であればコマンドは成功しています。
念のためJMeterサーバーにsshで接続してファイルがコピーされていることを確認してもよいでしょう。もし失敗する場合(Response codeが1)は、試しにローカル実行してResponse dataに出力されるエラー情報が参考になります。
- setUp Thread Groupを無効化する “setUp Thread Group"を右クリックし"Disable (無効)“を選択します。
JMeterサーバーの数を増加した場合は、追加されたJMeterサーバーではこのコピー処理は実施されていないため、再度このコピーを実行する必要があります。
-
CSV Data Set ConfigでCSVファイルを参照し設定する
- Test Planに"Thread Group"を追加する
Add (追加) > Threads (Users) > Thread Group (スレッドグループ)
“Loop Count (ループ回数)” を “3” などとしておく - Test PlanあるいはThread Groupに “CSV Data Set Config” を追加する
Add (追加) > Config Element (設定エレメント) > CSV Data Set Config
- Configure the CSV Data Source
- Filename: 先にコピーしたCSVファイル名
- Variable Names (comma-delimited): CSVファイルにヘッダ行がない場合は、列名をカンマ区切りで記入します。
- Configure the CSV Data Source
- Test Planに"Thread Group"を追加する
-
Samplerでそのパラメーターを利用する
今回はCSVファイルのデータをHTTP RequestサンプラーでGETリクエストのQueryStringとして渡すこととします。
CSVファイル内の値は、"${列名}” とすることで渡されます。Thread GroupにHTTP Requestサンプラーを追加する
Add (追加) > Sampler (サンプラー) > HTTP Request (HTTP リクエスト)
- Web Server
- Protocol [http]: プロトコル (http or https)
- Server Name or IP: サーバー名あるいはIPアドレス
- HTTP Request
- (Method) GET
- Parameters
[Add] をクリックし、パラメーターを追加する- Name: パラメーター名 (例: prefecture)
- Value: パラメーター値 (例: ${prefecture})
- Web Server
-
リスナーを追加する
動作確認のためにTest Planあるいは同じThread Groupに"View Results Tree"を追加します。
Add (追加) > Listener (リスナー) > View Results Tree (結果をツリーで表示) -
テストを実施する
メニューの Run (実行) > Remote Start All (全て開始(リモート)) -
結果を確認する
View Results TreeでいくつかのHTTP Requestを確認します。
JMeterサーバーごとに異なるCSVファイルを利用する場合
今回は、3台のJMeterサーバーでそれぞれ別々のCSVファイルを利用してリクエストをしてみます。
前述の同じCSVファイルを利用した設定から変更していきます。
-
CSVファイルを用意する
-
各JMeterサーバーのIPアドレスを確認する CSVファイルのファイル名にJMeterサーバーのIPアドレスを含めることで、JMeterサーバーが利用するCSVファイルを判断できるようにします。
JMeterのメニュー > Run (実行) > Remote Start (開始(リモート)) を開き、そこに表示されるIPアドレスの一覧をメモします。(ポート番号は不要です)
-
IPアドレスを名前とするディレクトリをJMeterサーバー分作成する
-
各ディレクトリにCSVファイルを作成する
例) /mnt/jmuserdata/10.0.2.4/prefecture.csv
code,prefecture 01,Hokkaido 02,Aomori 03,Iwate 04,Miyagi 05,Akita 06,Yamagata 07,Fukushima 08,Ibaraki 09,Tochigi 10,Gunma
/mnt/jmuserdata/10.0.2.5/prefecture.csv
code,prefecture 11,Saitama 12,Chiba 13,Tokyo 14,Kanagawa 15,Niigata 16,Toyama 17,Ishikawa 18,Fukui 19,Yamanashi 20,Nagano
/mnt/jmuserdata/10.0.2.6/prefecture.csv
code,prefecture 21,Gifu 22,Shizuoka 23,Aichi 24,Mie 25,Shiga 26,Kyoto 27,Osaka 28,Hyogo 29,Nara 30,Wakayama
-
-
CSVファイルをJMeterサーバーのローカルディスクにコピーする
-
テストを実施する
MENU > Run (実行) > Remote Start All (全て開始(リモート))
※ サンプラーやリスナーは変更不要です。 -
結果を確認する
View Results TreeでいくつかのHTTP Requestを確認します。
Sampler resultに出力されるIPアドレスとRequest > Request Bodyに出力されるQueryStringの組み合わせが、作成したCSVファイルとマッチしていることを確認してください。