実際のストレステストシナリオでは、リクエストの応答から出力パラメーターを抽出し、抽出した情報を次のリクエストの入力として使用できます。単一の API で複数の出力パラメーターを定義できます。このトピックでは、出力パラメーターの抽出方法について説明します。
出力パラメーターの設定
次の表に、出力パラメーターの要素を示します。
要素 | 説明 |
|
Output Parameter Name |
出力パラメーターの名前です。名前には、文字、数字、アンダースコア (_)、ハイフン (-) を使用できます。名前は文字で始まる必要があります。 |
|
ソース |
応答の解析メソッドです。次のいずれかの解析メソッドを選択できます。
|
|
Parsing Expression |
応答からコンテンツを抽出し、出力パラメーターとして使用するための解析式です。 |
|
Nth match |
このパラメーターは、ソースが Body : TEXT に設定されている場合にのみ適用されます。解析式で複数の一致が見つかった場合、このパラメーターを使用して 1 つを選択します。インデックスは 0 から始まります。-n のような負の数は、末尾から n 番目の一致を選択します。値は [-99, 99] の範囲内である必要があります。ランダムな一致を選択するには、random と入力します。 |
Body : JSON 解析メソッド
Body : JSON ソースタイプは、`Content-Type` ヘッダーが `application/json` および `text/json` の応答をサポートします。
PTS は、新旧両バージョンの JSONPath 構文をサポートしています。新旧バージョンの JSONPath 式の違いを明確にするため、以下のセクションでは、両バージョンの JSONPath 構造のサンプルと JSONPath 式の構文および説明を示します。
新しいバージョンの JSONPath 構文を使用することを推奨します。
JSONPath 式 (新バージョン)
次のサンプルコードは、新バージョンの JSONPath 構造の例です。次の表に、新バージョンの JSONPath 式の構文と説明を示します。
JSONPath 構文 | 説明 |
$ | ルートオブジェクトです。たとえば、 |
[num] | 配列内の要素を取得します。num 変数は数値を指定します。たとえば、 |
[num0,num1,num2...] | 配列内の複数の要素を取得します。num 変数は数値を指定します。この場合、配列内の複数の要素が返されます。たとえば、 |
[start:end] | 配列内の開始要素と終了要素で定義された範囲の要素を取得します。たとえば、 |
[?(@.key)] | 空でないオブジェクト属性を取得します。たとえば、 |
[?(@.key > 123)] | 比較演算によって数値型のオブジェクト属性を取得します。サポートされている比較演算子には、等しい (=)、等しくない (!=)、より大きい (>)、以上 (>=)、より小さい (<)、以下 (<=) があります。たとえば、 |
[?(@.key = '123')] | 比較演算によって文字列型のオブジェクト属性を取得します。サポートされている比較演算子には、等しい (=)、等しくない (!=)、より大きい (>)、以上 (>=)、より小さい (<)、以下 (<=) があります。たとえば、 |
[?(@.key like 'aa%')] | like 句によって文字列型のオブジェクト属性を取得します。ワイルドカードとしてパーセント記号 (%) のみを使用できます。not like 句もサポートされています。たとえば、 |
[?(@.key rlike 'regexpr')] | 正規表現によって文字列型のオブジェクト属性を取得します。Java 開発キット (JDK) の構文が使用され、not rlike 句もサポートされています。たとえば、 |
[?(@.key in ('v0', 'v1'))] | in 句によってオブジェクト属性を取得します。文字列型および数値型のオブジェクトがサポートされています。not in 句もサポートされています。たとえば、 |
[?(@.key between 234 and 456)] | between 句によってオブジェクト属性を取得します。数値型のオブジェクトがサポートされています。not between 句もサポートされています。たとえば、 |
length() or size() | 配列内の要素数を取得します。たとえば、 |
.. | 特定の属性を取得します。たとえば、 |
* | オブジェクト内のすべての属性を取得します。たとえば、 |
randomIndex() | 配列内のランダムな要素を取得します。たとえば、 |
['key'] | 属性を取得します。たとえば、 |
['key0','key1'] | 複数の属性を取得します。たとえば、 |
$.store.book[0].title と $['store']['book'][0]['title'] 式のセマンティクスは同じです。
JSONPath 式 (旧バージョン)
次のサンプルコードは、旧バージョンの JSONPath 構造の例です。次の表に、旧バージョンの JSONPath 式の構文と説明を示します。
{
"info": "success",
"message": "Succeeded.",
"data": {
"id":13509, "code":0,
"items": [
{"name": "name1", "value": "1234"},
{"name": "name2", "value": "8448"},
{"name": "name3", "value": "1298"},
{"name": "name4", "value": "3049"},
{"name": "name5", "value": "7648"}
]
}
}
出力パラメーター値 | 旧バージョンの解析式 | 新バージョンの解析式 (比較用) |
info オブジェクトの値。 |
|
|
data 配列の ID 値。 |
|
|
items 配列の最初の要素の値。相対位置がサポートされています。 |
|
|
items 配列の最後から 2 番目の要素の値。相対位置がサポートされています。 |
| サポートされていません |
items 配列全体。 |
|
|
items 配列のランダムな要素。 |
|
|
Body : TEXT 解析メソッド
Body : TEXT ソースタイプは、任意のテキスト形式をサポートし、正規表現を使用してデータを抽出します。正規表現で複数の一致が見つかった場合、インデックスでどの一致を使用するかを指定できます。デフォルトのインデックスは 0 で、最初の一致を選択します。
次のサンプルコードは、API 応答の例です。
<input name="id" value="34729XXXX">
<input name="token" value="acdfo4dfopasdf44dXXXX">
...
<script>
var planId=4587;
var planId=5689;
var planId=8906;
</script>
|
目的の値 |
Parsing Expression |
N 番目の一致 |
名前が id の値。 |
| 0 |
名前が token の値。 |
| 0 |
3 番目の PlanID 要素の値。 |
| 2 |
ランダムな PlanID 要素の値。 |
| random |
フォーマット規則:
-
スキャンはレスポンスボディの先頭から開始されます。式に一致する最初の値が使用され、スキャンは停止します。したがって、複数の一致のいずれかが許容される場合を除き、解析式が目的の値のみに一致するように十分に具体的であることを確認してください。
一致するテキストには、中括弧 ({}) や丸括弧 (()) などの特殊文字を含めることはできません。
正規表現を使用して JSON 応答から情報を抽出する場合、キーと値のペアのキーと値の間のコロンの後にスペースを追加する必要はありません。JSON データの視覚効果を最適化するために、各キーと値のペアのキーと値の間のコロンの後にスペースを追加できます。
Cookie : K/V および Header : K/V 解析メソッド
Cookie : K/V および Header : K/V 解析メソッドは、それぞれ Cookie フィールドと Header フィールドを抽出するために使用されます。解析式で抽出したいキーを指定できます。たとえば、Cookie フィールドに token=1234;path=/ が含まれており、token の値を抽出したい場合は、解析式に token と入力します。
ステータスコード解析メソッド
ステータスコード解析メソッドを使用して、リクエストの応答ステータスコードを抽出できます。ほとんどの場合、この解析メソッドはチェックポイントや条件付きジャンプに使用します。ステータスコードが異なると、返されるページ情報も異なります。
JDBC ノードの出力パラメーター
SQL クエリの結果から出力パラメーターを抽出するには、[Body : JSON] ソースを選択します。結果は次の JSON オブジェクトとして構造化されています:
{
"data": [
{
"Column 1": "value",
"Column 2": "value"
},
{
"Column 1": "value",
"Column 2": "value"
}
...
]
}
たとえば、次のテーブルは SQL クエリの結果を示しています。最初の行の name 列の値 (name1) を出力パラメーターとして解析するとします。
id | name |
1 | name1 |
2 | name2 |
次の解析式を使用します。
$.data[0].name出力パラメーターのデバッグ
解析式が正しいかどうかを判断できない場合は、シナリオデバッグで解析式と関連する出力パラメーターをデバッグできます。次のステップを実行します。
-
PTS Scenarioページで、下部にある Debugをクリックします。表示される Debug Scenarioダイアログボックスで、シナリオ名をクリックします。右側の詳細ペインで API を選択し、Click to test the regular expression for the output parameterをクリックします。
-
表示されるダイアログボックスで、ソースタイプを選択し、解析式を入力し、N 番目の一致を指定し、出力パラメーター名を入力します。Test Expressionをクリックします。応答の詳細と一致結果を照合して、抽出されたコンテンツが正しいことを確認します。
-
構成を保存するには、Sync Output Parameterをクリックして、この式を API の出力パラメーターのリストに追加します。
説明シナリオのデバッグが完了した後、出力パラメーターを同期した場合は、ストレステストのシナリオ設定タブに戻ります。その API の Output Parameter Definitionタブで、同期された出力パラメーターの名前を設定する必要があります。
例:出力パラメーターの設定
財務管理ビジネスでは、顧客の消費能力に基づいて適切なサービスを推奨したい場合があります。この場合、各顧客の消費能力レベルを出力パラメーターとして抽出し、その出力パラメーターを使用してサービスを推奨する必要があります。
次のステップを実行します。
-
PTS コンソールにログインし、 を選択して、[PTS] をクリックします。
-
PTS Scenarioページで、消費能力を取得し、プロダクトを推奨するための API を追加します。たとえば、それぞれ消費能力 (出力パラメーター付き) とプロダクト推奨という名前を付け、それぞれの URL を入力します。
-
消費能力 (出力パラメーター付き) API について、応答から消費能力情報を抽出するための出力パラメーターを設定します。出力パラメーター名 (例:
output) と解析式 (例:data.items[0].value) を入力します。 -
PTS Scenarioページの左下隅にあるパラメーターリストをクリックします。カスタムパラメータータブで、作成した出力パラメーターを表示できます。パラメーター名 (例:
output) またはコピーアイコン
をクリックして、パラメーターリファレンスをクリップボードにコピーします。 -
プロダクト推奨 API の設定で、Body Definitionタブに移動します。コピーしたパラメーターリファレンスを本文に貼り付けます。

文字列、パラメーター、または関数を組み合わせるなど、本文のコンテンツを編集することもできます。