このセクションの内容:
SOAtest は、Parasoft Recorder で記録された API トラフィックから API テストを自動的に作成できます。この方法で作成されたテストは、Smart API テストと呼ばれます。すぐに使用できる実装は、API テストをすばやく開始できるように設計されていますが、Smart API テストを生成する方法を SOAtest に「教える」こともできます。
また、SOAtest に付属のテスト作成プロパティ ファイルの 1 つで設定を構成することにより、テストの生成方法をカスタマイズすることも可能です。
SOAtest は、Parasoft Recorder の構成に基づいた適切なテスト作成構成ファイルを使用してテストを自動的に作成します。詳細については「Parasoft Recorder」を参照してください。
Smart Test Template (.stt)ファイルを作成して、テスト生成の動作を決定するルールを定義できます。Smart Test Template ファイルは、1 つ以上の Resource Suite で構成されます。Resource Suite を使用すると、ルールを適用するパスを指定できます。
Resource Suite には 1 つ以上の Resource Template が含まれます。これは、Smart Test を生成するときに含める API メソッドとリソースの範囲を定義します。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 つの参照テスト スイートを追加できます。参照によってインクルードされたテストは生成されたスイートの最初のテストとして追加されます。
相対パスは、TestAssets プロジェクトを基準にしています。別のプロジェクトのテストを参照するには、${project_loc} 変数を使用します。 参照の詳細については「エンドツーエンド テストのためのテスト スイートの再利用 / モジュール化 」を参照してください。
SOAtestに、既存の REST Client からの認証設定と JSON アサーション ロジックを含むテストを生成するように教えることができます。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 テスト生成が必要です。SOAtestは、ワークスペースに TestAssets / test_templates ディレクトリを作成し、salesforce_tst_creation.properties 構成ファイルを生成します。このファイルには、デフォルトで次の推奨構成が含まれています。
applicationType=Salesforce customHandlerClass.1=com.parasoft.webtool.testcreator.handlers.salesforce.AuraConfig includeContentTypes=application/json, application/x-www-form-urlencoded, text/html, text/plain disableDiffCreation=true includeURLPatterns=**.force.com,**.salesforce.com excludeURLPatterns=*/jslibrary/,/file-asset/,/auraFW/resources/,/auraCmpDef?**,*/LayoutMeta?**,*/cometd/,/_nc_external/system/,/apex/,/l/**,**/contentDoor?**,/customerportal/**,**/promos.html requestPayloadParameterizationExcludeNames.1=^pageSize$ requestPayloadParameterizationExcludeNames.2=^max[A-Za-z]+ requestPayloadParameterizationExcludeNames.3=^actionsRequestId$ requestPayloadParameterizationExcludeNames.4=^request$ requestPayloadParameterizationExcludeNames.5=^numRecordsToShow$ requestQueryStringParameterizationExcludeNames.1=^r$ |
ファイルの複数のインスタンスを作成し、構成をカスタマイズすることで、テスト ゴールを達成するのに役立つ Smart Test を生成するよう SOAtest を設定できます。salesforce_tst_creation.properties ファイルのさまざまなインスタンスを作成する場合は、applicationType
プロパティを使用して一意の名前を指定することで、SOAtest インターフェースが構成のさまざまなインスタンスを区別できるように設定できます( トラフィックからの Smart API テストの作成 を参照)。
Guidewire アプリケーション アーキテクチャでは、テストを適切に生成するための特定の構成を実装するために、Smart API テストの生成が必要です。SOAtestは、ワークスペースに TestAssets/test_templates ディレクトリを作成し、guidewire_tst_creation.properties 構成ファイルをワークスペースに生成します。このファイルには、デフォルトで次の推奨構成が含まれています。
applicationType=Guidewire includeContentTypes=application/json, application/x-www-form-urlencoded, multipart/form-data disableDiffCreation=true includeURLPatterns=**/cag/j_spring_security_check,**/bc/*.do,**/pc/*.do |
ファイルの複数のインスタンスを作成し、構成をカスタマイズすることで、テスト ゴールを達成するのに役立つ Smart Test を生成するよう SOAtest を設定できます。guidewire_tst_creation.properties ファイルのさまざまなインスタンスを作成する場合は、applicationType
プロパティを使用して一意の名前を指定することで、SOAtest インターフェースが構成のさまざまなインスタンスを区別できるように設定できます( トラフィックからの Smart API テストの作成 を参照)。
tst_creation.properties 構成ファイルで追加のテスト作成プロパティを定義できます。tst_creation.properties ファイルは、SOAtest ワークスペースの TestAssets/test_templates フォルダーの下にあります。デフォルトでは、SOAtest サーバーに接続するすべての Web Proxy が、このファイルの設定を使用します。
ファイルの複数のインスタンスを作成し、構成をカスタマイズすることで、テスト ゴールを達成するのに役立つ Smart Test を生成するよう SOAtest を設定できます。tst_creation.properties ファイルのさまざまなインスタンスを作成する場合は、applicationType
プロパティを使用して一意の名前を指定することで、SOAtest インターフェースが構成のさまざまなインスタンスを区別できるように設定できます( トラフィックからの Smart API テストの作成 を参照)。
applicationType | Smart API トラフィックの生成ウィザードなどのさまざまな SOAtest インターフェースから読み取ることができるように、構成ファイルの一意の識別子を定義します( トラフィックからの Smart API テストの作成 を参照)。 |
---|---|
customHandlerClass.<number> | 「Salesforce 用の Smart API テスト生成の設定」を参照。 |
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」を参照してください。 |
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 が対象になります。 以下は一般的な例です:
# 'path' を含む URL を含める
|
excludeURLPatterns | テスト生成時に除外する URL パターンのカンマ区切りリストを指定します。Ant 形式の構文を使用して、大文字/小文字を区別したパターンを指定できます。デフォルトでは、すべての URL が対象になります。 以下は一般的な例です:
|
includeTextResponseValues.<number> | データ バンクへの抽出の可能性のためにテスト ジェネレータが考慮する値に一致する正規表現を定義します。一致するものが見つかった場合、括弧で囲まれたパターンに一致するサブストリングが考慮されます。目的の値とその境界を定義するには、少なくとも 1 セットの括弧が必要です。 デフォルトでは、2 つのパラメーターが次の正規表現パターンで設定されています。
|
includeTextResponseContentTypes | テスト ジェネレータが includeTextResponseValues パラメーターに対して処理するコンテンツ タイプのカンマ区切りのリストを定義します。デフォルトは text/html です。 |
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).* |
SOAtest を新しいバージョンにアップグレードすると、既存の tst_creation.properties ファイルの前に、リリースに含まれている新しいパラメーターが追加され、バージョン番号が付けられます。例:
version=2 # ====== SOAtest 2020.2 RELEASE UPDATES ====== # Consider values in text responses as candidates to be databanked based on matching pattern. # If a match is found, extract the substring that matches the pattern enclosed by the parentheses as the candidate. # At least one pair of parentheses is required; otherwise, no value will be extracted. includeTextResponseValues.1="([-A-Za-z0-9%_=+./]{10,})" includeTextResponseValues.2='([-A-Za-z0-9%_=+./]{10,})' # Consider only these text response types for extracting response values includeTextResponseContentTypes=text/html # ====== PREVIOUSLY CONFIGURED SETTINGS ====== includeContentTypes=application/json, application/x-www-form-urlencoded #excludeContentTypes= #disableDiffCreation=false #disableDiffParameterization=false #disableEnvironmentCreation=false #disableDataBankCreation=false #disableAssertorCreation=false # Ignore values that start with "time", "date", "url" or "href" in diff tool, case insensitive ... |
既存のファイルを移動または削除すると、すべてのデフォルト設定に加えて、最新の更新から追加された新しい設定が適用されます。元のファイルのバックアップは、.bak 拡張子で適用されます。