ストレステストシナリオで分岐ロジックが必要な場合(例:前のリクエストのレスポンス値に基づいて異なる API を呼び出す場合)、条件判断命令を使用して、指定した条件が満たされているかどうかによって、実行する API を制御できます。
条件ロジックの仕組み
Performance Testing (PTS) では、シナリオエディターでの配置方法に応じて、条件間に次の 2 種類の論理関係をサポートしています。
| 配置 | 論理関係 | 動作 |
|---|---|---|
| ネスト(ある条件を別の条件の内側に配置) | AND | すべての条件が true の場合にのみ API が実行されます |
| 並列(同一階層に条件を配置) | OR | いずれか 1 つの条件が true であれば API が実行されます |
PTS はストレステスト中に条件を順に評価します。API は、そのブランチ内の条件が満たされた後にのみ実行されます。
条件で使用できる値のタイプ
条件の判断対象と比較値では、次のタイプを使用できます。
| 値のタイプ | サポート | 説明 |
|---|---|---|
| 文字列リテラル | はい | "success" や "200" などの固定文字列 |
| レスポンスパラメーター | はい | シナリオ内の前の API から抽出された出力値 |
| グローバルパラメーター | はい | シナリオレベルで定義されるパラメーター |
| カスタムパラメーター | はい | ユーザー定義の変数 |
| ファイルパラメーター | はい | 外部データファイルから読み込まれる値 |
| システム関数 | いいえ | 判断対象または比較値として使用できません |
| パラメーターと文字列の混在式 | いいえ | パラメーターと文字列を連結した式はサポートされません |
複数の値またはパターンに一致させるには、比較値で正規表現を使用します。
条件判断命令の追加
PTS コンソールにログインし、[パフォーマンス・テスト] > [シナリオ作成] を選択します。[PTS] をクリックします。
HTTP ノードのリクエストパラメーターを設定します。詳細については、「基本的なリクエストパラメーター」をご参照ください。
後続の条件が出力値を参照できるように、初期 API の応答パラメーターを設定します。詳細については、「API 応答パラメーター」をご参照ください。
例として、レスポンスパラメーター設定を 1 つ追加します。[Output parameter name] を
paraに設定し、[Source] には [Body : JSON] を選択し、[Parse expression] をparaに設定します。[ビジネスセッション] セクションで、[指示の追加] ドロップダウンリストをクリックし、[条件判定] を選択します。
[条件判定の開始] を展開し、[条件] パラメーターを設定します。
例として、コンソールで [Judgment conditions] を次のように設定します。判断対象に
${para}を入力し、演算子として [Greater than or equal] を選択し、比較値に10を入力します。
条件判断命令は、開始ブロックと終了ブロックのペアで使用する必要があります。判断対象は、ファイルパラメーター、前の API のレスポンスパラメーター、またはカスタムパラメーターなどのパラメーターを参照する必要があります。
例
AND 条件:両方の条件が満たされる場合
目的:para が 10 以上 100 以下の場合にのみ API を実行します。
ロジック:para >= 10 AND para <= 100
設定:2 つ目の条件(para <= 100)を 1 つ目の条件(para >= 10)の内側にネストします。ネストすることで AND 関係になり、両方の条件が true の場合にのみ API が実行されます。
OR 条件:いずれかの条件が満たされる場合
目的:para が 10 から 100 の範囲外にある場合に API を実行します。
ロジック:para < 10 OR para > 100
設定:2 つの条件を同一階層(並列)に配置し、各ブランチの下に同じ API 呼び出しを追加します。並列に配置することで OR 関係になり、いずれかの条件が true であれば API が実行されます。
Conditional Judgment ① は ${para} < 10 であり、API-1 (GET メソッド) を含みます。Conditional Judgment ② は ${para} > 100 であり、API-2 (GET メソッド) を含みます。この 2 つの条件判断は同一階層に配置されており、その後に無条件の API-3 (GET メソッド) が続きます。3 つの API はいずれもリクエストアドレス http://www.example.com/ を使用します。
AND/OR の組み合わせ条件
目的:para3 が 100 に等しく、かつ para4 > 100 または para4 < 10 のいずれかを満たす場合に API を実行します。
ロジック:para3 = 100 AND (para4 > 100 OR para4 < 10)
設定:2 つの OR 条件(para4 > 100 と para4 < 10)を同一階層に配置し、両方を AND 条件(para3 = 100)の内側にネストします。外側の条件が true であり、かつ内側の条件の少なくとも 1 つが true である必要があります。