JMeterAtoZ

負荷テストツールの代表選手、JMeter。シナリオの作り方から実行方法までまとめて解説!

シナリオ作成テクニック

レスポンスを次のリクエストに活用できる「正規表現抽出」

2016/10/15

ECサイトなどやログインが必要になるサイトでは、レスポンスデータを次のリクエストのパラメータに利用している場合が多々あります。

レスポンスデータはアクセスの度にかわるため、その都度レスポンスデータを解析して、次のリクエストパラメータに設定してあげる必要があります。

JMeterでは、正規表現抽出を利用することで、動的にかわるレスポンスの内容を次のリクエストに活用することができるようになります。

正規表現抽出設定方法

hidden項目を取得したいHTTPリクエストのサンプラーに対して、正規表現抽出を設定します。追加したいHTTPリクエストを選び、「追加 > 後処理 > 正規表現抽出」で設定が可能です。

正規表現抽出

正規表現抽出

項目 概要
参照名 他のサンプラーで参照するための名前です。nameとした場合、参照するときは${name}とする必要があります
正規表現 取得したい内容を正規表現で取得します
テンプレート ()が複数ある場合に、何番目にマッチした内容を取得するかを指定します
一致番号 何番目にマッチしたものを利用するかを記載します。0はランダムです
初期値 マッチするものがなかった場合の値を記載します

正規表現抽出設定例

hiddenから項目を取得し、次のリクエストで利用する

例えば、次のレスポンスからnameのvalueの値(名前)を取得する場合を想定します。

項目 設定例
参照名 name
正規表現 <input type="hidden" name="name" value="(.*)"/>
テンプレート $1$
一致番号 0
初期値 not-provided

取得した名前を次のリクエストで利用するためには、変数${name}で記載してあげる必要があります。下の例では、hiddennameの項目に取得したhiddenの中身を代入しています。

正規表現抽出をリクエストに設定

正規表現抽出をリクエストに設定

実際に動かしてみると、hiddenで取得した内容が設定されていることがわかります。hiddenをGET送信のリクエストに「hiddenname=名前」があるのが分かると思います。

hiddenの取得結果

hiddenの取得結果

チェックボックスから一つ選択する

次のようなチェックボックスから一つランダムに値を取得することも可能です。

ポイントは、一致番号です。「0」を指定することで、チェックボックスの値をランダムで取得してきています。もしaaaのみ取得したい場合は、一つ目の条件にマッチするので「1」を指定します。bbbであれば「2」です。

項目 設定例
参照名 name
正規表現 <option>(.*)</option>
テンプレート $1$
一致番号 0
初期値 not-provided

また、下の例のようにclassやid属性が連番になっているときは、正規表現とテンプレートを工夫します。

連番部分を(.*)としてしまうことでヒットさせることが可能です。テンプレートの番号をあげるのを忘れないようにしましょう。

項目 設定例
参照名 name
正規表現 <option class="(.)">(.)</option>
テンプレート $2$
一致番号 0
初期値 not-provided

-シナリオ作成テクニック