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?

NeoLoadの変数エクストラクタ機能で動的データを再利用する

0
Posted at

背景

前回(NeoLoadを触ってみた - 負荷テストツール入門編)ではテストの作成から実行までを紹介しました。

APIやWebアプリの負荷テストでは、レスポンスに含まれるトークンやIDを次のリクエストへ受け渡す「関連付け(Correlation)」が必須です。本記事では変数エクストラクタの作成と運用に焦点を当てます。

変数エクストラクタの種類

  • 正規表現エクストラクタ: HTMLやテキストレスポンスから必要箇所を抽出。
  • JSONパスエクストラクタ: REST APIで最も使用頻度が高い。複数値をリストとして取得可能。
  • XPathエクストラクタ: SOAP/XML APIに活用。
  • カスタムスクリプト(JavaScript): 変換処理や複雑なロジックが必要な場合に使用。

UIでの設定フロー

  1. Designタブで抽出元のリクエストを開き、レスポンスパネルを表示
  2. 抽出したい値を選択 → Create Variable → Extractorの種類を選択
  3. Variable name・Occurrence・Default valueを設定
  4. 次のリクエストのパラメータ/ヘッダー/本文で ${variable_name} として参照

正規表現エクストラクタ・サンプル: csrfTokenをHTTPレスポンスから取得し、次のリクエストURLに組み込むケース。

image.png

// 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を取得する場合

image.png
ここで取得した変数csrfTokenを後続のPOST処理などで利用可能です。

image.png

※なお、JSONPathやxPathを利用する場合は同じ画面のこちらのオプションを選択し
Pathの場所を指定する事で可能です。
image.png


変数の前処理と組み合わせ

  • 文字列加工: 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の検証結果を確認する

まとめ

  • 変数エクストラクタは負荷テストの再現性を支える重要要素
  • 抽出の成否を監視・検証し、異常時に素早く原因特定できる運用体制を整える

参考リンク

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?