背景
前回(NeoLoadを触ってみた - 負荷テストツール入門編)ではテストの作成から実行までを紹介しました。
APIやWebアプリの負荷テストでは、レスポンスに含まれるトークンやIDを次のリクエストへ受け渡す「関連付け(Correlation)」が必須です。本記事では変数エクストラクタの作成と運用に焦点を当てます。
変数エクストラクタの種類
- 正規表現エクストラクタ: HTMLやテキストレスポンスから必要箇所を抽出。
- JSONパスエクストラクタ: REST APIで最も使用頻度が高い。複数値をリストとして取得可能。
- XPathエクストラクタ: SOAP/XML APIに活用。
- カスタムスクリプト(JavaScript): 変換処理や複雑なロジックが必要な場合に使用。
UIでの設定フロー
- Designタブで抽出元のリクエストを開き、レスポンスパネルを表示
- 抽出したい値を選択 →
Create Variable→ Extractorの種類を選択 -
Variable name・Occurrence・Default valueを設定 - 次のリクエストのパラメータ/ヘッダー/本文で
${variable_name}として参照
正規表現エクストラクタ・サンプル: csrfTokenをHTTPレスポンスから取得し、次のリクエストURLに組み込むケース。
// Response
<BODY onload="doLoad();doubleColumnToSingleColumn();">
<input class="scrollAutoViewer" type="hidden" value="content_id:'document', parent_content_id:'parent_cs_items',scrollTop:'0',scrollLeft:'0'">
<input type="hidden" name="csrfToken" value="9f3a8c7d4e21b0a6dXXXXXXXXXXXXXXXXXXXXXX">
上記のようなサンプルbodyの中のcsrfTokenを取得する場合

ここで取得した変数csrfTokenを後続のPOST処理などで利用可能です。
※なお、JSONPathやxPathを利用する場合は同じ画面のこちらのオプションを選択し
Pathの場所を指定する事で可能です。

変数の前処理と組み合わせ
-
文字列加工: JavaScriptベースの
Variable Modifierで日付フォーマットやエンコードを実施 - 既存変数との統合: CSVデータでベース値を読み込み、レスポンスから得たIDと組み合わせる
// Variable 変更の例
var raw = context.variableManager.getValue("authToken");
context.variableManager.setValue("authHeader", "Bearer " + raw);
よくあるエラー対応
- レスポンスフォーマット変更: APIのスキーマ変更でJSONパスが無効になる → スキーマ検知用の統合テストを組み合わせる
-
URLエンコード忘れ:
%2Fなど特殊文字が含まれるIDはurlEncode()関数を使用も検討 - ステータスコード異常時の抽出: JavaScript処理はResponse codeが返されるのでUserPathの検証結果を確認する
まとめ
- 変数エクストラクタは負荷テストの再現性を支える重要要素
- 抽出の成否を監視・検証し、異常時に素早く原因特定できる運用体制を整える

