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 ファイルを追加し、フォルダーを使用して整理することもできます。
作成する Resource Suite のタイプを選択します。空のスイートを作成することも、サービス定義に基づいてスイートを作成することもできます。
定義ファイルを使用する場合の詳細については、以下のセクションを参照してください。
[メソッド] ドロップダウン メニューからメソッドを選択し、テンプレートのルールを適用するエンドポイントを識別するパターンを [一致] フィールドに指定します (「Defining Smart API Test Generation Scope」を参照)。[解決済み] フィールドにパターンのプレビューが表示されます。Resource Template は親 Resource Suite から [一致] の設定を継承します。[完全一致] オプションをオフにすると、 SOAtest は [一致] フィールドで指定されたすべてのサブパスに対してテストを生成します。[完全一致] オプションは、デフォルトでオフです。
Resource Template の設定に一致する場合、すべての連結されたツールの設定が適用されます。テンプレート ファイルの構築方法および一致するパターンを設定する方法を定義できます。よくあるユースケースについては「Example Smart Test Template」を参照してください。
JSON Assertor Resource Template に連結されたツールは、トラフィックからの値がある場合、それを使用するよう設定できます。詳細については「Adding JSON Assertions」を参照してください。 |
既存のトラフィックファイルからテストを生成するか、Parasoft Recorder ブラウザー拡張機能を使用して新規テストを作成すると、.stt ファイルに定義された設定が適用されます。
Resource Suite および Resource Template で定義されたパターンは、次のルールに従って比較されます。
{}
はワイルドカードを表し、任意のテキストを含めることができます。たとえば、プロトコル、ホスト、ポートに変換されるパターンを指定できます。{scheme}://{host}:{port}
*
) もワイルドカードを表します。単一のアスタリスクと波括弧 {} は、同じように使用できます。{scheme}://{host}:*/parabank/*/accounts/{id}
{scheme}://{host}:*/parabank/**/{id}
/parabank/services_proxy/bank/accounts/{id
}65535
より大きい値を指定すると、ポートはワイルドカードとして扱われます。デフォルトでは、SOAtest はシナリオ内で呼び出されているすべてのリソースに対してテストを作成し、Resource Template ツールで識別されたリソースにだけトレーニング ツールを適用します。しかし、tst_configuration.properties ファイルの includeURLPatterns
および excludeURLPatterns
に Ant 形式のパターンを指定することで、指定された URL をテスト生成に含める、または生成から除外するよう SOAtest を設定できます。詳細については「テスト作成プロパティ」を参照してください。
SOAtest は HTTP Authentication ツールを使用してテストのための認証情報を設定します。HTTP Authentication ツールは、.stt ファイルでだけ利用できる特別なツールです。SOAtest が Resource Template ツールの設定と一致すると、生成されたテストに HTTP Authentication ツールで設定された認証情報が適用されます。
認証の設定については、以下のセクションを参照してください。
SOAtest
Virtualize
SOAtest は HTTP Header ツールを使用してテストのためのヘッダー フィールドを設定します。HTTP Header ツールは、.stt ファイルでだけ利用できる特別なツールです。SOAtest が Resource Template ツールの設定と一致すると、生成されたテストに HTTP Header ツールで設定された任意のヘッダーが適用されます。このツールを使用すると、テスト作成時にキャプチャされたヘッダーの値を上書きすることもできます。
Resource Template ツールに JSON Assertion を連結して設定すると、トラフィックの値を使用できます。==
または equals
を演算子として使用し、[Smart - From Traffic]
値フィールドを設定します。
テストで利用可能なアサーションにはいくつかのタイプがあります (詳細については「JSON Assertor」を参照)。次のセクションは、SOAtest が各タイプのアサーションに対してどのように設定を適用するかを説明しています。
[Smart - From Traffic]
が指定されている場合、記録されたトラフィックから設定されます。[Smart - From Traffic]
が指定され、演算子が ==
または equal
である場合、記録されたトラフィックに基づいて設定されます。[Smart - From Traffic]
が指定され、演算子が ==
である場合、1
または 0
が設定されます。[Smart - From Traffic]
が指定され、演算子が ==
である場合、1
または 0
が設定されます。[Smart - From Traffic]
が指定され、トラフィック値が正常に検証された場合、記録されたトラフィックに基づいて設定されます。[Smart - From Traffic]
が指定されている場合、0
が設定されます。[Smart - From Traffic]
が指定され、値が正常に検証された場合、記録されたトラフィックに基づいて設定されます。この場合、同じトラフィック値がアサーションのすべてのフィールドに適用されます。デフォルトでは、SOAtest はタイムスタンプを無視しますが、ニーズに合わせて他のパラメーターも無視するよう設定できます。詳細については「テスト作成プロパティ」を参照してください。
既存の .tst ファイルからアサーション ロジックを適用して Smart API Test Generator をトレーニングすることができます。「Training Based on .tst Files」を参照してください。
.stt ファイルで他のテスト スイートを参照できます。すると、適切にテストを実行するために必要になる可能性がある追加のセットアップ ステップを含めることができます。1 つの Resource Template ツールに 1 つの参照テスト スイートを追加できます。参照によってインクルードされたテストは生成されたスイートの最初のテストとして追加されます。 参照の詳細については「エンドツーエンド テストのためのテスト スイートの再利用 / モジュール化 」を参照してください。
既存の 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" フィールドと一致するよう設定されます。
確認を求められたら、サマリーを確認します。SOAtest は、既存の .stt ファイルのリソースを比較し、新しいルールを追加しようとします。一致する .stt が見つからない場合、新しいファイルが作成されます。
トラフィックに基づいて固定値を使用する等価性アサーション ( .stt ファイルの既存のアサーションに新しいアサーションが追加されます。 |
.stt ファイルで定義されたルールを使用するように既存のテストを更新できます。既に REST Client があり、テンプレートからアサーション、認証設定、ヘッダーの標準セットをすばやく適用したい場合、通常この機能を使用します。
テンプレートの構造は、希望するアプリケーション テスト方法によって異なります。次の例の .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 テスト生成が必要です。
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).* |