動的値の相関
このトピックでは、スクリプト内の動的データを相関するために使用されるプロセスについて説明します。
このトピックの内容:
相関について
サーバーからブラウザーに送信されるWebページには、クライアントが後の要求 (たとえばタイムスタンプを含む可能性のあるセッションID) で送る必要がある動的データが含まれていることがよくあります。このデータは、ページにアクセスするたびに変更されます。
ビジネスプロセスを記録した後、スクリプトにはサーバー応答に動的な値が含まれることがあります。スクリプトが再生されると、これらの記録された値がサーバーに送信されます。ただし、Webサーバーは、これらの値が再生セッションで有効でないため、拒否します。一般的に、これが起こるとテストは失敗します。
再生を成功させるには、スクリプトで次のことを行う必要があります。
- ヘッダーを含むサーバー応答で動的データを探します。
- その動的データを抽出して保存します。
- 記録セッションのハードコードされた動的データを、現在の再生セッションのデータで置き換えます。
記録された動的な値の位置を特定、抽出、および再生時に有効な値で置換するこのプロセスは、「相関」と呼ばれます。
DevWebエンジンは、事前定義された相関ルールを適用するか、記録されたデータに対してレコードスキャンを実行することにより、スクリプト生成中に相関を処理します。
相関方法
動的値の自動相関には、ルールベースのスキャンとレコードベースのスキャンの2つの方法があります。どちらのスキャンも、抽出オブジェクトと適用オブジェクトを使用して、生成されたコードに相関を追加します。
標準設定では、ルールスキャンと記録スキャンは無効になっています。これらはgenerator_config.ymlファイル (またはVuGen、記録オプション > コード生成) で有効にします。
DevWebエンジンは、標準的な環境で動的な値を相関させるための、事前に定義された拡張可能なルールのセットを実装します。これらのルールは、相関ルールディレクトリの<correlation_rules>.ymlファイルで定義されています。
コード生成中に、オフラインスクリプトジェネレーターは、*.yml相関ルールファイルで見つかったすべてのアクティブ化されたルールをロードし、相関ルールに一致する値についてサーバーの応答をスキャンします。一致する値が見つかると、値を抽出してパラメーターに保存するためのステップがWeb要求に追加されます。
次に、スクリプトコードからその値がスキャンされ、一致したものがパラメーターへの参照に置き換えられます。
ルールベースの相関:
<DevWebルートフォルダー>\generator_config.ymlファイルのcorrelationセクション:
- rulesScanEnabledを
true
に設定して、ルールスキャンを有効にします。 - スクリプトに表示される抽出値のスキャンタイムアウトや最大長など、関連する他の相関パラメーターの標準設定を変更します。
相関ルールファイルの定義の詳細については、相関ルールの使用を参照してください。
記録ベースの相関
DevWebエンジンは、自動レコードベースの相関を提供します。レコードスキャンが有効になっている場合、コード生成段階で、エンジンはサーバーの応答を自動的にスキャンして相関がないか確認します。この検索は、内部エンジンの構成設定に基づいています。
一致する値が見つかると、ルールスキャン相関の場合と同じように、値を抽出してパラメーターに保存するステップがWeb要求に追加されます。ルールスキャンと記録スキャンの両方が有効になっている場合、ルールスキャンが優先されます。つまり、両方のスキャンで同じ値が識別された場合、エンジンはルールベースの相関を適用します。
レコードスキャンによって追加される抽出オブジェクトタイプは、境界式または正規表現 (定義された優先抽出オブジェクトタイプに応じて)、または検出されたコンテンツタイプに適した抽出オブジェクト (HTML、JSON、XPath抽出オブジェクトなど) です。
注: 記録スキャンでは、事前定義された設定を使用してコンテンツとパターンをフィルタリングし、相関候補の検出に役立てます。これらの構成は、<DevWebルートフォルダー>\resources\CorrelationEngine\record_scan_config.ymlファイルで定義されています。
このファイルは変更しないことをお勧めします。変更が必要な場合は、record_scan_config.ymlファイルを新しい場所にコピーし、コピーに変更を加えます。次に、以下に説明するように、recordScanConfigDirectoryキーのパスを変更します。
ルールベースの相関の使用:
-
<DevWebルートフォルダー>\generator_config.ymlファイルのcorrelationセクション:
- recordScanEnabledを
true
に設定して、レコードスキャンを有効にします。 - 必要に応じて、extractorTypeプロパティのプレーンテキストの優先抽出オブジェクトタイプをboundaryまたはregexpに変更します。
- 必要に応じて、recordScanConfigDirectoryプロパティのパスを更新します。
- スクリプトに表示される抽出値のスキャンタイムアウトや最大長など、関連する他の相関パラメーターの標準設定を変更します。
- recordScanEnabledを
-
スクリプトを記録します。レコードスキャンによって追加された抽出オブジェクトは、コメントに示されています。
- コード生成後、生成ログ..\<スクリプトフォルダー>\codegenを使用して、見つかった候補が実際の相関であるかどうかを識別できます。
抽出オブジェクトと適用オブジェクト
DevWebエンジンの相関は、抽出オブジェクトおよび適用オブジェクトに基づいています。抽出オブジェクトは、ルールベースまたはレコードベースのスキャンに基づくコード生成中に自動的に追加できます。またはスクリプトに手動で追加します。
サーバーの応答をスキャンするとき、オフラインスクリプトジェネレーターは、識別された動的な値ごとに抽出オブジェクトを追加します。これにより、値を抽出してパラメーターに保存できます。次に、スクリプトコードからその値がスキャンされ、一致したものがパラメーターへの参照に置き換えられます。
ヒント: ログレベル (rts.yml内) がdebugまたはtraceに設定されている場合、抽出オブジェクトの置換がログに報告されます。ログメッセージには、抽出オブジェクトが適用されるスクリプト内の各場所と、各インスタンスに使用される代替値が記録されます。
-
抽出オブジェクトは、応答内の動的データを見つけて抽出します。境界定義または正規表現に基づくことも、JSON、XML、およびHTML形式のデータ内のオブジェクト値を照会するために使用することもできます。また、Base64、URL、およびHTMLのエンコードとデコード用のコンバーターも含まれています。
抽出オブジェクトをスクリプトに追加して、コンテンツを検証および操作することもできます。たとえば、failOn valueオプションを使用してテキストチェック抽出オブジェクトを追加できます。
利用可能な抽出オブジェクトには、次のものがあります。
- BoundaryExtractor(name, options) : ExtractorObject
- RegexpExtractor(name, options) : ExtractorObject
- JsonPathExtractor(name, options) : ExtractorObject
- XpathExtractor(name, options) : ExtractorObject
- TextCheckExtractor(name, options) : ExtractorObject
- HtmlExtractor(name, options) : ExtractorObject
- CookieExtractor(name, options) : ExtractorObject
-
適用オブジェクトは抽出された値を適用するため、サーバーへの後続の要求では、記録された値の代わりに保存されたパラメーターが使用されます。適用オブジェクトを使用して、抽出された値が要求に適用される方法を調整します。ルールごとに1つ以上の適用オブジェクトを構成できます。以下の抽出オブジェクトと適用オブジェクトを参照。
ルールに適用オブジェクトが定義されていない場合は、標準設定の適用オブジェクトが使用されます。
次の表に、使用可能な適用オブジェクトの種類を示します。
サポートされているパラメーターの定義は、次のとおりです。適用オブジェクトパラメーター
適用オブジェクトタイプ | 説明 | サポートされているパラメーター |
---|---|---|
simple | 抽出された値を、抽出オブジェクトから作成された動的パラメーターに置き換えます。置換は、元の応答 (抽出オブジェクトを含むサーバー応答) に対する後続の要求で発生する可能性があります。 |
|
boundary | 定義された境界 (左と右) の間で抽出された値を、抽出オブジェクトから作成された動的パラメーターに置き換えます。置換は、元の応答 (抽出オブジェクトを含むサーバー応答) に対する後続の要求で発生する可能性があります。 |
|
regexp | 正規表現に従って抽出された値を、抽出オブジェクトから作成された動的パラメーターに置き換えます。置換は、元の応答 (抽出オブジェクトを含むサーバー応答) に対する後続の要求で発生する可能性があります。 |
|
none |
スクリプトで抽出オブジェクトの生成を有効にするが、抽出された値をスクリプトに適用しない場合に使用します。 これにより、標準設定の動作が回避されます。DevWebが抽出された値を適用する場所を見つけられない場合、抽出オブジェクトは生成されません。 |
n/a |
以下に、適用オブジェクトパラメーターの定義を示します。各適用オブジェクトタイプでサポートされているパラメーターを確認するには、上記の適用オブジェクトタイプを参照してください。
expression | 文字列 | 正規表現。 |
flags | 文字列 | 正規表現のフラグ。 |
leftBoundary | 文字列 | 左境界。 |
rightBoundary | 文字列 | 右境界。 |
caseInsensitive | ブール値 |
大文字と小文字を区別しない比較を使用して境界を検索します。 標準設定: true |
occurrence | 文字列/数値 |
置き換える値の出現:
occurrenceが定義されていない場合、最初の出現が置き換えられます。 |
scope |
文字列 |
値が置き換えられる関連HTTP部分: url、querystring、headers、body、またはall 標準設定: all |
fieldName | 文字列のリスト |
scope領域内のフォーカスを定義する1つまたは複数のキー。 たとえば、scopeの値が |
相関ルールの使用
Rules-based相関スキャンは、相関ルール定義ファイル<correlation_rules>.ymlで定義されたルールを使用します。カスタマイズされた相関ルールファイルを作成して、特定のDevWebスクリプトのルールを追加および編集します。
相関ルールファイルは (標準設定では) <DevWebのルートフォルダー>\CorrelationRules\ フォルダーにあります。このフォルダーには、ASP.NETテスト環境、correlation_ASP_NET.yml用に事前定義された相関ルールが含まれます。このファイルを編集するか、コピーを作成してテンプレートとして使用できます。テスト環境の必要に応じて、ルール定義を編集および拡張します。以下のサンプルファイルを参照することもできます。
各相関ルールグループには、抽出オブジェクトと適用オブジェクトが含まれます。ファイル内で、各ルールグループを有効または無効にしたり、相関ルールファイル全体を有効または無効にしたりできます。ルールスキャンがgenerator_config.ymlで有効になっている場合、コード生成中にオフラインスクリプトジェネレーターはCorrelationRulesフォルダー内のすべての*.ymlファイルをスキャンし、有効なすべてのルールを読み込みます。
ヒント: 次のビデオを確認します: チュートリアル#7: 相関
相関ルールを使用するには、次の手順を実行します。
-
テスト環境の相関ルールファイル (* .yml) を定義します。ファイルを標準設定の<DevWebのルートフォルダー>\CorrelationRules\フォルダーまたは別の場所に保存します。
- スクリプトを記録する前に、相関* .ymlファイルで必要なすべての相関ファイルとルールグループが有効になっていることを確認してください。
- <DevWebルートフォルダー>\generator_config.ymlファイルで相関パラメーターを構成します。これには、rulesScanEnabledを
true
に設定し、相関ルールファイルに別のフォルダーを使用している場合は、rulesDirectoryパスを変更します。(上記のルールベースの相関を参照してください。) - スクリプトを記録します。ルールに一致するものが見つかると、値の抽出オブジェクトがスクリプトに追加されます。
次に、注釈付きの<correlation_rules>.ymlファイルの例を示します。
categories: - name: category1 #The name of the category, not used in code, this is for the user enabled: true #Allows the user to enable or disable all the rules in a category rules: #A list of rules - name: myRule1 #The name of the rule, used in the code the user writes to identify the rule.Must be unique across all categories type: boundary #The type of rule.Can be "boundary", "regexp", "json", "xpath" enabled: true #Allows the user to enable and disable particular rules options: #The options particular to this rule type leftBoundary: abc #Left boundary of the boundary-based correlation rightBoundary: efg #Right boundary of the boundary-based correlation caseInsensitive: false #Search boundaries using case-insensitive comparison (default: true) scope: all #Scope define the required HTTP part: headers, body, or all Default: all appliers: - type: simple #The type of the applier.One of "simple", "boundary", "regexp" or "none" which prevent apply automatically scope: headers #Scope define the required HTTP part: url, querystring, headers, body, or all Default: all options: occurrence: first #Occurrence focus on how many items to apply on all, first, last or valid number fieldName: ["cookie"] #Field Name allow the applier to focus on one or more key entries - name: myRule2 type: regexp enabled: true options: expression: "[0..9]*" #The regular expression.See https://github.com/google/re2/wiki/Syntax for details flags: "im" #The flags of the regular expression groupNumber: 0 #The group number (Default: 1 - for the first group) scope: body #Scope define the required HTTP part: headers, body, or all Default: all appliers: - type: boundary scope: url options: leftBoundary: le> #Left boundary of the boundary based correlation rightBoundary: </t #Right boundary of the boundary based correlation caseInsensitive: false #Search boundaries using case-insensitive comparison (default: true) - name: category2 enabled: true rules: - name: myRule3 type: json enabled: true options: path: abc #The JSONPath.See http://goessner.net/articles/JsonPath/ for details appliers: - type: regexp scope: all options: expression: "\\w+(.*?)\\w+" #The regular expression see https://github.com/google/re2/wiki/Syntax for details flags: "i" #The flags of the regular expression, please note the group number is default 1 no need to define it occurrence: first - name: anotherRule3 #Appliers section is optional on this case it will use the Default Applier type: xpath enabled: true options: path: //myEntry #The XPath, see https://godoc.org/gopkg.in/xmlpath.v2 for details
ルールに適用オブジェクトが定義されていない場合は、標準設定の適用オブジェクトが使用されます。
appliers: - type: simple scope: all options: occurrence: all
関連項目: