SOAtestは、Parasoft Recorder でキャプチャした API トラフィックから Web アプリケーションの API テストを自動的に作成できます。Parasoft Recorder でキャプチャした API トラフィックを処理するとき 、SOAtest は AI を使用して Smart API テストを作成します。すぐに使用可能な実装は、API テストをすぐに開始できるように設計されていますが、Smart API テストの生成方法を SOAtest に「トレーニングする」こともできます。このセクションの内容:
概要
Smart Test Template (.stt) ファイルを作成し、テスト生成動作のルールを定義します。Smart Test Template ファイルは、1 つ以上の Resource Suite で構成されます。Resource Suite を使用すると、ルールを適用するパスを指定できます。Resource Suite には 1 つ以上の Resource Template が含まれます。Resource Template にツールを連結し、特定のテスト生成動作を定義するよう設定できます。Resource Template を利用すると、連結されたルールを適用する範囲を指定することもできます。
SOAtest は、新しい Smart API テストを作成するとき、.stt ファイルで指定されたルールを読み取り、適用します。
手動でのテスト テンプレートの作成および設定
Smart Test Templates ビュー を使用して .stt ファイルの作成と管理を行うことができます。また、複数の .stt ファイルを追加し、フォルダーを使用して整理することもできます。
- [Parasoft] > [ビューの表示] > [Smart Test Templates] をクリックして Smart Test Templates ビューを開きます (ビューがまだ開かれていない場合)。
- [Add Template] ボタンをクリックし、.stt ファイルの名前と場所を指定します。
- (オプション) ネストされたフォルダーを作成し、.stt ファイルを整理することもできます。
- [次へ] をクリックします。
作成する Resource Suite のタイプを選択します。空のスイートを作成することも、サービス定義に基づいてスイートを作成することもできます。
定義ファイルを使用する場合の詳細については、以下のセクションを参照してください。
- サービス定義に基づいてスイートを作成する場合、[ 次へ] をクリックして、定義ファイルの場所を指定します。空のスイートを作成する場合は、このステップを省略します。
- [終了] をクリックします。
- .stt ファイルを展開して Resource Suite ノードをダブルクリックします。
- (オプション) [デフォルト名の使用] オプションを無効化してファイルの名前を指定できます。
- このスイートのルールを適用するエンドポイントを識別するパターンを [一致] フィールドに指定します (「Defining Smart API Test Generation Scope」を参照)。[解決済み] フィールドにパターンのプレビューが表示されます。ネストされた Resource Suiteは親 Resource Suite から [一致] の設定を継承します。テンプレート ファイルの構築方法および一致するパターンを設定する方法を定義できます。よくあるユースケースについては「Example Smart Test Template」を参照してください。
- Resource Suite を右クリックし、[新規追加] > [Resource Template] をクリックします。
- (任意) [デフォルト名の使用] オプションをオフにし、[名前] フィールドに Resource Template の名前を指定します。
[メソッド] ドロップダウン メニューからメソッドを選択し、テンプレートのルールを適用するエンドポイントを識別するパターンを [一致] フィールドに指定します (「Defining Smart API Test Generation Scope」を参照)。[解決済み] フィールドにパターンのプレビューが表示されます。Resource Template は親 Resource Suite から [一致] の設定を継承します。[完全一致] オプションをオフにすると、 SOAtest は [一致] フィールドで指定されたすべてのサブパスに対してテストを生成します。[完全一致] オプションは、デフォルトでオフです。
Resource Template の設定に一致する場合、すべての連結されたツールの設定が適用されます。テンプレート ファイルの構築方法および一致するパターンを設定する方法を定義できます。よくあるユースケースについては「Example Smart Test Template」を参照してください。JSON Assertor の連結
JSON Assertor Resource Template に連結されたツールは、トラフィックからの値がある場合、それを使用するよう設定できます。詳細については「Adding JSON Assertions」を参照してください。
- Resource Template を右クリックし、[出力の追加...] をクリックします。
- 生成されるテストに含めるツールを選択し、設定を指定します。たとえば、HTTP Authentication ツールを連結して設定し、テンプレートを使用して生成されるすべてのテスト スイートが自動的にテスト対象アプリケーションの認証を行うようにできます (詳細については「Enabling Authentication」を参照)。
- 必要に応じて他の Resource Suite および Resource Template を追加します。.stt ファイルは最初から最後の順で処理されます。各 Resource Suite がその階層に従って処理されてから、次のスイートの処理に移ります。任意の数のスイートおよびテンプレートを追加し、必要なだけツールを連結して SOAtest をトレーニングできます。
- 変更を保存します。
既存のトラフィックファイルからテストを生成するか、Parasoft Recorder ブラウザー拡張機能を使用して新規テストを作成すると、.stt ファイルに定義された設定が適用されます。
SOAtest Smart API Test Generator のスコープ定義
Resource Suite および Resource Template で定義されたパターンは、次のルールに従って比較されます。
- 波括弧
{}
はワイルドカードを表し、任意のテキストを含めることができます。たとえば、プロトコル、ホスト、ポートに変換されるパターンを指定できます。{scheme}://{host}:{port}
- アスタリスク (
*
) もワイルドカードを表します。単一のアスタリスクと波括弧 {} は、同じように使用できます。{scheme}://{host}:*/parabank/*/accounts/{id}
- 2 つのアスタリスクは、複数のディレクトリに一致します。
{scheme}://{host}:*/parabank/**/{id}
- プロトコル、ホスト、ポートを省略すると、すべてのプロトコル、ホスト、ポートに一致します。たとえば、次のパターンは任意のホスト、ポート、メソッドの特定のパスに一致します。
/parabank/services_proxy/bank/accounts/{id
}
- ポートに負数または
65535
より大きい値を指定すると、ポートはワイルドカードとして扱われます。 - Resource Template およびネストされた Resource Suite は親 Resource Suite から [一致] の設定を継承します。
- [完全一致] オプションをオフにすると、 SOAtest は [一致] フィールドで指定されたすべてのサブパスに対してテストを生成します。Resource Template では、[完全一致] オプションは、デフォルトでオンです。
デフォルトスコープ
デフォルトでは、SOAtest はシナリオ内で呼び出されているすべてのリソースに対してテストを作成し、Resource Template ツールで識別されたリソースにだけトレーニング ツールを適用します。しかし、tst_configuration.properties ファイルの includeURLPatterns
および excludeURLPatterns
に Ant 形式のパターンを指定することで、指定された URL をテスト生成に含める、または生成から除外するよう SOAtest を設定できます。詳細については「テスト作成プロパティ」を参照してください。
認証の有効化
SOAtest は HTTP Authentication ツールを使用してテストのための認証情報を設定します。HTTP Authentication ツールは、.stt ファイルでだけ利用できる特別なツールです。SOAtest が Resource Template ツールの設定と一致すると、生成されたテストに HTTP Authentication ツールで設定された認証情報が適用されます。
- Resource Template ツールを右クリックし、[出力の追加...] をクリックします。
- リクエスト メニューを展開し、[トランスポート ヘッダー] を選択します。
- ツール パネルから [HTTP 認証] を選択し、[終了] をクリックします。
- HTTP Authentication ツールで認証を設定します。次の認証タイプがサポートされています。
- ベーシック (HTTP プロトコル組み込みのシンプルな認証)
- NTLM
- Kerberos
- Digest
認証の設定については、以下のセクションを参照してください。
SOAtest
Virtualize
ヘッダーの追加
SOAtest は HTTP Header ツールを使用してテストのためのヘッダー フィールドを設定します。HTTP Header ツールは、.stt ファイルでだけ利用できる特別なツールです。SOAtest が Resource Template ツールの設定と一致すると、生成されたテストに HTTP Header ツールで設定された任意のヘッダーが適用されます。このツールを使用すると、テスト作成時にキャプチャされたヘッダーの値を上書きすることもできます。
- Resource Template ツールを右クリックし、[出力の追加...] をクリックします。
- リクエスト メニューを展開し、[トランスポート ヘッダー] を選択します。
- ツール パネルから [HTTP ヘッダー] を選択し、[終了] をクリックします。
- ツール設定セクションで [追加] をクリックして値を定義します。
- 変更を保存します。
JSON Assertion の追加
Resource Template ツールに JSON Assertion を連結して設定すると、トラフィックの値を使用できます。==
または equals
を演算子として使用し、[Smart - From Traffic]
値フィールドを設定します。
タイプごとの JSON Assertor の動作
テストで利用可能なアサーションにはいくつかのタイプがあります (詳細については「JSON Assertor」を参照)。次のセクションは、SOAtest が各タイプのアサーションに対してどのように設定を適用するかを説明しています。
値アサーション
- 値アサーションの [期待値] フィールドは、
[Smart - From Traffic]
が指定されている場合、記録されたトラフィックから設定されます。 - 値オカレンス アサーション、数値アサーション、文字列比較アサーションの要素値フィールドおよび期待値フィールドは、
[Smart - From Traffic]
が指定され、演算子が==
またはequal
である場合、記録されたトラフィックに基づいて設定されます。 - 値オカレンス アサーションの [期待値] フィールドは、
[Smart - From Traffic]
が指定され、演算子が==
である場合、1
または0
が設定されます。 - 正規表現アサーション、式アサーション、カスタム アサーションのフィールドは、トラフィックからは設定されません。
構造アサーション
- オカレンス アサーションの [期待値] フィールドは、
[Smart - From Traffic]
が指定され、演算子が==
である場合、1
または0
が設定されます。 - Has Contents アサーション、Has Children アサーション、Type アサーションのフィールドは、トラフィックからは設定されません。
差分アサーション
- ベース値フィールドは、
[Smart - From Traffic]
が指定され、トラフィック値が正常に検証された場合、記録されたトラフィックに基づいて設定されます。 - 数値アサーションの [差分値] フィールドは、
[Smart - From Traffic]
が指定されている場合、0
が設定されます。 - 日付差分アサーションおよび DateTime 差分アサーションの差分設定フィールドは、トラフィックからは設定されません。
範囲アサーション
- 下限値および上限値フィールドは、
[Smart - From Traffic]
が指定され、値が正常に検証された場合、記録されたトラフィックに基づいて設定されます。この場合、同じトラフィック値がアサーションのすべてのフィールドに適用されます。
その他の JSON Assertor の動作
デフォルトでは、SOAtest はタイムスタンプを無視しますが、ニーズに合わせて他のパラメーターも無視するよう設定できます。詳細については「テスト作成プロパティ」を参照してください。
.tst ファイルのアサーションに基づくテンプレートのトレーニング
既存の .tst ファイルからアサーション ロジックを適用して Smart API Test Generator をトレーニングすることができます。「Training Based on .tst Files」を参照してください。
テスト スイート参照の追加
.stt ファイルで他のテスト スイートを参照できます。すると、適切にテストを実行するために必要になる可能性がある追加のセットアップ ステップを含めることができます。1 つの Resource Template ツールに 1 つの参照テスト スイートを追加できます。参照によってインクルードされたテストは生成されたスイートの最初のテストとして追加されます。 参照の詳細については「エンドツーエンド テストのためのテスト スイートの再利用 / モジュール化 」を参照してください。
- Resource Template ツールを右クリックし、[出力の追加...] をクリックします。
- Suite カテゴリを展開して [開始] を選択します。
- Smart カテゴリで [テスト スイートの参照] を選択し、[終了] をクリックします。
- テスト スイートの参照エディターで参照するテスト スイートの場所を指定します。
[ファイル システム] または [ワークスペース] をクリックして、参照する .tst ファイルの場所を選択できます。 - 変更を保存します。
.tst ファイルに基づくトレーニング
既存の REST Client からの認証設定とJSONアサーション ロジックを含むテストを生成するように SOAtest をトレーニングできます。SOAtest は、REST Client で指定されたパスに最も近いリソース テンプレートの下に HTTP Authentication または JSON Assertor を作成します。一致がなかった場合、各 REST Client URL のリソース テンプレートを含む新しい .stt ファイルが作成されます。これらの .stt ファイルには、Resource Suite および Resource Template が含まれ、[一致] 設定は REST Client のエンドポイントに一致するよう設定されています。
新規 .stt ファイルの一致パターンは、SOAtest をトレーニングしているルールのタイプに基づきます。認証の場合、REST Client の スキーマ、ホスト、ポートを使用して親スイートの一致パターンが設定されます。親スイートに含まれるリソース テンプレートは、REST Client の basePath およびすべてのサブパスとメソッド タイプと一致するよう設定されます。
アサーション ルールとテスト スイートの構造を SOAtest にトレーニング場合、REST クライアントの basePath を使用して、親スイートの一致が設定されます。サブパターンは、ネストされたスイートの一致パターンおよび/またはリソース テンプレートの一致パターンに設定されます。リソース テンプレートは、特定のメソッド タイプの "Exact" フィールドと一致するよう設定されます。
- テスト エクスプローラーで .tst ファイル、テスト スイート、REST Client ノードを右クリックし、[スマート テスト テンプレートのトレーニング] をクリックします。
確認を求められたら、サマリーを確認します。SOAtest は、既存の .stt ファイルのリソースを比較し、新しいルールを追加しようとします。一致する .stt が見つからない場合、新しいファイルが作成されます。
JSON Assertor を使用した Smart API Test Generator のトレーニング
トラフィックに基づいて固定値を使用する等価性アサーション (
==
またはequals
演算子を使用するアサーション) が作成されます。値が非等価性アサーションを使用してパラメータライズされる場合、リソースに連結されたアサータ―は[Smart - User Input]
に設定された固定値に変換されます。 パラメータライズされた等価性アサーションの場合、値は[Smart - From Traffic]
になります。.stt ファイルの既存のアサーションに新しいアサーションが追加されます。
- [OK] をクリックして更新するか、新しい .stt を REST Client の設定を含む Smart Test Template ビューに追加します。新しい .stt ファイルが作成される場合、ファイル名は元のクライアントの URL に従って付けられます。テンプレート リソースは、ベース パス セグメントごとにグループ化されます。Smart Test Template ビューでファイルを右クリックし、名前を変更できます。
- Resource Suite および Resource Template をダブルクリックし、[一致] 設定でテスト生成スコープを定義します。「Defining Smart API Test Generation Scope」を参照してください。
- その他のリソースを手動で追加して .stt ファイルの設定を終了できます。「Manually Creating and Configuring Test Templates」を参照してください。
既存の .tst ファイルへの Smart Test テンプレートの適用
.stt ファイルで定義されたルールを使用するように既存のテストを更新できます。既に REST Client があり、テンプレートからアサーション、認証設定、ヘッダーの標準セットをすばやく適用したい場合、通常この機能を使用します。
- ルールを適用する .tst ファイルを右クリックして [Apply Smart Test Template] を選択します。
- SOAtest は、リソース パスを REST クライアント URL と照合し、.stt で定義されたルールを、一致する URL を持つクライアントに適用します (一致条件の詳細については Defining Smart API Test Generation Scope を参照してください)。更新を確認し、[OK] をクリックします。
Smart Test Template のサンプル
テンプレートの構造は、希望するアプリケーション テスト方法によって異なります。次の例の .stt は、テスト対象アプリケーション (CTP) の 1 つの方法を表しています。
リソース スイートは、ホスト "emdemo" の任意のプロトコル、ポート、パスに一致するよう設定されています。結果として、emdemo に対して作成されるすべてのテストに Test Reference Suite のツール参照が含まれます。また、テストには HTTP Authentication ツールおよび HTTP Header ツールで設定された認証情報とヘッダーが設定されます。
各 Resource Template は emdemo の下の特定のパスを指します。各 Resource Template で指定されたパスに対して生成されるテストには、連結されたツールの設定が含まれます。たとえば、"Resource 3" は "/em/virtualassets/manage" パスと一致するよう設定されています。結果として、このパスを含むテストには、レスポンスで返されるアセット設定を検証する JSON Assertor が含まれることになります。
Salesforce 用の Smart API テスト生成の構成
Salesforce アプリケーション アーキテクチャでは、特定の構成を実装してテストを適切に生成するために、Smart API テスト生成が必要です。
tst_creation.properties ファイルを開き、Salesforce の Smart API テスト生成を有効にする以下のプロパティを設定します。
customHandlerClass.1=com.parasoft.webtool.testcreator.handlers.salesforce.AuraConfig
次のプロパティを構成することも推奨します:
includeContentTypes=application/json, application/x-www-form-urlencoded, text/html, text/plain disableDiffCreation=true disableDiffParameterization=true includeURLPatterns=**.force.com,**.salesforce.com
次の設定で指定されるパターンは、Salesforce サーバーの構成によって異なります:
excludeURLPatterns=*/jslibrary/,/file-asset/,/auraFW/resources/,/auraCmpDef?,*/LayoutMeta?,*/cometd/,/_nc_external/system/,/apex/,/l/**
次の設定は任意ですが、ノイズを減らすのに役立つ場合があります:
requestPayloadParameterizationExcludeNames.1=^pageSize$ requestPayloadParameterizationExcludeNames.2=^max[A-Za-z]+ requestPayloadParameterizationExcludeNames.3=^actionsRequestId$ requestPayloadParameterizationExcludeNames.4=^request$ requestPayloadParameterizationExcludeNames.5=^numRecordsToShow$ requestQueryStringParameterizationExcludeNames.1=^r$
tst_configuration.properties ファイルの他のプロパティは、デフォルト設定または設定したカスタム値を使用するように構成できます。
テスト作成プロパティ
tst_creation.properties 構成ファイルで追加のテスト作成プロパティを定義できます。tst_creation.properties ファイルは、SOAtest ワークスペースの TestAssets フォルダーの下にあります。デフォルトでは、SOAtest サーバーに接続するすべての Web Proxy が、このファイルの設定を使用します。
既存の tst_creation.properties ファイルは、更新中に保持されます。既存のファイルを移動または削除すると、すべてのデフォルト設定に加えて、最新の更新から追加された新しい設定が適用されます。
includeContentTypes | トラフィック処理対象に含めるコンテント タイプのカンマ区切りリストを指定します。デフォルトは application/json,application/x-www-form-urlencoded です。 |
---|---|
excludeContentTypes | トラフィック処理時に除外するコンテント タイプのカンマ区切りリストを指定します。デフォルトは空です。 |
disableDiffCreation | diff の作成を有効化/無効化します。詳細については「Diff」を参照してください。デフォルトは |
disableDiffParameterization | diff のパラメータライズを有効化/無効化します。パラメータライズを使用すると、diff でデータ バンクに格納された値を使用できます。diff のパラメータライズが無効な場合 (このプロパティに true が指定されている場合)、静的な値だけを利用できます。デフォルトは false です。 |
disableEnvironmentCreation | 環境および環境変数の作成を有効化/無効化します。デフォルトは false です。 |
disableDataBankCreation | データ バンクの作成を有効化/無効化します。詳細については「Data Exchange ツール」を参照してください。デフォルトは |
disableAssertorCreation | JSON Assertor ツールの作成を有効化/無効化します。デフォルトは false です。詳細については「JSON Assertor」を参照してください。 |
customHandlerClass.<number> | |
diffToolIgnoreNames.<number> | diff 作成時に無視する要素名に一致する正規表現を指定します。デフォルトは プロパティを追加し、 例:
|
diffToolIgnoreValues.<number> | diff 作成時に無視する値に一致する正規表現を指定します。デフォルトでは、タイムスタンプを無視します。
プロパティを追加し、 例:
|
assertorToolIgnoreQueryParameterNames.<number> | JSON Assertor ツール作成時に無視するクエリー パラメーター名に一致する正規表現を指定します。 デフォルトでは、"maxResultsSize" で始まるクエリー名を無視します。
プロパティは大文字と小文字を区別しません。 プロパティを追加し、 |
assertorToolIgnoreQueryParameterValues.<number> | JSON Assertor ツール作成時に無視するクエリー パラメーター値に一致する正規表現を指定します。 パラメーター値のパターンに基づいてアサーションを作成する場合、クエリー パラメーターを無視します。 デフォルトでは、タイムスタンプを無視します。
プロパティを追加し、 |
assertorToolIgnoreFieldNames.<number> | JSON Assertor ツール作成時に無視するレスポンス ペイロード値に一致する正規表現を指定します。デフォルトでは、time、date、url、href、SessionId または transactionId で始まるレスポンス ペイロードの値を無視します。 デフォルトでは、タイムスタンプを無視します。
プロパティは大文字と小文字を区別しません。 プロパティを追加し、 |
assertorToolIgnoreFieldValues.<number> | JSON Assertor ツール作成時に無視する値に一致する正規表現を指定します。デフォルトでは、タイムスタンプを無視します。
プロパティを追加し、 例:
|
includeURLPatterns | テスト生成対象に含める URL パターンのカンマ区切りリストを指定します。Ant 形式の構文を使用して、大文字/小文字を区別したパターンを指定できます。デフォルトでは、すべての URL が対象になります。 次の例では、parasoft.com ドメインのすべての URL が対象になります。
|
excludeURLPatterns | テスト生成時に除外する URL パターンのカンマ区切りリストを指定します。Ant 形式の構文を使用して、大文字/小文字を区別したパターンを指定できます。デフォルトでは、すべての URL が対象になります。 次の例では、parasoft.com ドメインのポート 8443 のすべての URL が除外されます。
|
requestPayloadParameterizationExcludeNames.<number> | パラメータライズから除外する必要があるリクエスト ペイロードのフィールド名に一致する正規表現を定義します。 次の例は、パラメータライズから日付と時刻のフィールド名を除外します。
|
requestQueryStringParameterizationExcludeNames.<number> | パラメータライズから除外する必要があるリクエスト クエリーのフィールド名に一致する正規表現を定義します。 次の例は、パラメータライズから日付と時刻のフィールド名を除外します。
|
useServerSettings | ローカルの tst_creation.properties 設定ファイルの代わりに SOAtest サーバーの tst_creation.properties ファイルの設定を使用するかどうかを指定します。デフォルト値は true です。 |
includeContentTypes=application/json, application/x-www-form-urlencoded excludeContentTypes=image/png,font/ttf,text/css,application/javascript disableDiffCreation=false disableDiffParameterization=false disableEnvironmentCreation=false disableDataBankCreation=false disableAssertionCreation=true # Ignore values that start with "time", "date", "url" or "href" in diff tool, case insensitive diffToolIgnoreNames.1=(?i)^(time|date|url|href).* # Ignore values that end with "time", "date", "url" or "href" in diff tool, case insensitive diffToolIgnoreNames.2=(?i).*(time|date|url|href)$ # Ignore values like a timestamp in diff tool, e.g. 2018-03-21T07:00:00.000Z diffToolIgnoreValues.1=[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]{1,3})?(([+-][0-9]{2}:[0-9]{2})|Z)? # Ignore query parameters when creating assertions based on parameter name pattern assertorToolIgnoreQueryParameterNames.1=(?i)^(maxResultSize).* # Ignore query parameters when creating assertions based on parameter value pattern assertorToolIgnoreQueryParameterValues.1=[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]{1,3})?(([+-][0-9]{2}:[0-9]{2})|Z)? # Ignore fields in payload when creating assertions based on field name pattern assertorToolIgnoreFieldNames.1=(?i)^(time|date|url|href|SessionId|transactionId).* # Ignore fields in payload when creating assertions based on field value pattern assertorToolIgnoreFieldValues.1=[0-9]\{4}-[0-9]\{2}-[0-9]\{2}T[0-9]\{2}:[0-9]\{2}:[0-9]\{2}([.][0-9]\{1,3})?(([+-][0-9]\{2}:[0-9]\{2})|Z)? # Comma separated list of URL patterns where pattern matching is the same as Apache Ant. URLs can be case sensitive. includeURLPatterns=http://{host}:8080/path/**/resources/* excludeURLPatterns=https://{host}:8443/path/**/resources/* # Exclude from being parameterized field names in request payload requestPayloadParameterizationExcludeNames.1=(?i)^(time|date).*