0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JMeter ForEachコントローラーで前処理の結果をもとに繰り返し処理を行う

Posted at

はじめに

JMeterにて、リクエストの結果一覧をもとに、一覧の一行ずつ処理を回したい、というケースがあったとします。このようなケースに関しては、ForEachコントローラーとJSON Executor(または正規表現抽出)を組み合わせることにより実現できます。
日本語のサンプルが少なそうだったのでここで紹介したいと思います。

やり方

前提条件

まずは、前提条件として以下のような場面を想定してます。

  • 処理Aを行うと、JSONで以下のレスポンスが返る
{
   "members":[
      {
         "id":101,
         "name":"山田 太郎",
         "性別":"男"
      },
      {
         "id":102,
         "name":"山田 花子",
         "性別":"女"
      },
      ...
}
  • 処理Bでは、処理Aで帰ってきたリストの件数分、members要素のidの値をリクエストパラメータとして繰り返し処理を行う

JSON Executorの設定

サンプラーの処理Aの「後処理」→「JSON Executor」を選択する。
1.png

この例では、以下のような設定としています。

設定項目 設定値
Names of created variables members
JSON Path expressions $.mambers[*].id
Match No.(0 for Random) -1(※ForEachと組み合わせる場合は必ず負の値を指定する)

これにより、変数membersに、membersの要素idの値がコレクションとして格納されます。

JSON Executorではなく「正規表現抽出」を使用して実現する場合

こちらの処理は、JSON Executorではなく、後処理の「正規表現抽出」を使用しても実現可能です。
その場合の設定値の例は以下の通りです。

設定項目 設定値
参照名 members
正規表現 "id":([0-9]+)
テンプレート \$1\$
一致番号 -1(※ForEachと組み合わせる場合は必ず負の値を指定する)

ForEach Controllerの設定

次に、Foreach Controllerを設定します。この例では、members要素の件数分、リクエスト処理Bを行うことを想定しています。
2.png

この例では以下のような設定としています。

設定項目 設定値
Input変数名接頭辞 members
Output変数名 id

これにより、変数membersに格納されたidの値が1つずつ取り出されて変数idに格納され、membersの要素分ループすることとなります。

サンプラーの設定

処理BのサンプラーをForEachの子要素として追加します。
3.png

その後、この例では、以下のように、リクエストパラメータに、ForEach ControllerのOutput変数名に設定した変数(ここではid)を使用して値を設定します。

これにより、

  • 1回目のループ:パラメータmemberIdの値は101
  • 2回目のループ:パラメータmemberIdの値は102

として処理Bのリクエスト処理が実行されます。

参考記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?