自動データ相関は手動による調整が必要な場合がありますが、複雑な手動による相関を行うには、ときにテストされたアプリケーションがどのようにして実装されたかを詳しく理解する必要があります。
テストを実行する際、サーバーの負荷が予期したとおりでなかったり、データベースが予期したとおり更新されていないことに気付く場合があります。このような問題が、不完全または誤ったデータ相関によって引き起こされる可能性があります。データ相関の問題を早期に識別するために有効な推奨手順を説明します。
- テストを個々に実行します。(スケジュールから実行している場合は、スケジュール・エディターで、「実行ヒストリー・ログ・レベル」を「すべて」に設定します。
単一のテストとしてテストを実行する場合、これがデフォルト設定になります。)
- テストの実行が完了したら、『実行ヒストリーのオープン』で説明したとおり、実行ヒストリーを開きます。
- 『プロトコル・データ・ビューでの実行ヒストリー詳細の検査』で説明したとおり、サーバーに対する各呼び出しが、予期したとおりのデータを戻していることを検査します。
当然ながら、テスト・ジェネレーターのデータ相関アルゴリズムは、アプリケーション設計者がよく使用する既知のベスト・プラクティスに基づいています。これらのベスト・プラクティスは、絶えず進化するため、次のような自動データ相関のエラーが発生する可能性があります。
- 不十分な相関: 相関すべきテスト値が相関されませんでした。原因には次の 3 つが考えられます。
- 相関対象の 2 つのパラメーターが異なる名前を保有。
- 値が、予期したとおりのロケーションに存在しない前の値と相関する必要があった。
- パラメーターまたは値が、計算された値であるためにテストに存在しない前のパラメーターまたは値と相関する必要があった。
- 過剰な相関: 関係ないテスト値が相関しています。
- 誤った相関: 相関すべきテスト値が誤って相関しています。
不十分な相関: パラメーターが異なる名前を保有、または予期しないロケーションに存在する
相関対象の 2 つのパラメーターが異なる名前を保有する場合、自動データ相関はそれら 2 つのパラメーターが関係していることを認識できません。例えば、要求 http://www.madeupsite.com?id=12345 を想定してください。サーバーの応答は、この要求は id=12345 ではなく、customer_id=12345 に相関させるべきというものでした。パラメーター ID は、customer_id と相関させる必要があります。
同様に、データ相関は通常サーバーからの応答値と次の要求値を関係付けます。自動相関アルゴリズムは、いつもの場所、すなわち URL および POST データに相関候補がないか探します。しかし、パラメーターを戻す他のスキームも可能です。例えば、要求 http://www.madeupsite.com?id=12345 を想定してください。サーバーの応答は、この要求は id=12345 ではなく、名前とエンティティーのペア、href name="id" entity="12345" に相関させるべきというものでした。パラメーター ID は、name="id" および entity="12345" という値 12345 と相関させる必要があります。
より一般的な例を 2 つ挙げます。
- Siebel は星形配列フォーマットを使用します。標準の相関アルゴリズムはこのフォーマットからの取得方法、このフォーマットへの置換方法を把握していません。
- SOAP は相関パラメーターを外部の XML ファイルに指定します。相関アルゴリズムは、外部ファイルのパラメーターとテスト内のパラメーター間の対応関係を把握していません。
このような場合には手動で相関させます。
- テスト検索とブラウズを使用して、相関の対象になる 2 つのパラメーターを見つけます。
- テストで最初に現れたパラメーターにジャンプします。『参照またはフィールド参照の作成』で説明したとおり、パラメーターを参照の中に配置します。(このパラメーターはすでに参照の中に配置されている場合があり、その場合はこのステップは必要ありません。)
- 他のパラメーターにジャンプします。『要求値と参照の相関』で説明したとおり、2 番目のパラメーターを前の参照に相関させます。
不十分な相関: パラメーターに名前がない
パラメーターまたは値を、計算するためにテストでは名前が付いてない (例えば JavaScript プログラム) 前のパラメーターや値と相関させなければならない場合があります。この場合、正確な相関を行うには、そのパラメーターを計算する方法と場所を理解し、カスタム・コード・ブロックを使用する必要があります。カスタム・コードについての説明は、『カスタム Java コードによるテストの拡張』を参照してください。
例えば、URI http://www.madeupsite.com?login_stamp=12345_Dec_12_04 を想定してください。ここでは、login_stamp はログイン ID と当日日付を連結したパラメーターです。
この場合、ログイン ID と日付の連結を実行するカスタム・コードが必要です。
他の例を挙げると、サーバーがログイン ID と日付を別のエンティティー (href "customer_id=12345"
Date="Dec_12_04") として戻す場合を想定してください。この場合、これらのパラメーターを別の参照に置き、カスタマー ID と日付を使用する次の要求で、個別に置換することができます。
過剰な相関
自動データ相関はパターン・マッチングに基づいています。パラメーターまたはパラメーターの値は、正確に同じ、または似ている名前を持つ後続のパラメーターやパラメーターの値に相関します。しかし、パラメーターの名前が正確に同じ、またはよく似ていても、実際にはまったく関係ない場合があります。この場合最良のケースでは、不要な相関が存在してもほとんど影響がない、または不適切な負荷が多少かかる程度です。しかし最悪の場合、アプリケーションは相関を予期していないため、再生中に問題が発生します。
不必要なデータ相関を除去するには以下のようにします。
- テスト・エディターで、検索またはブラウズを使用して (相関値は赤色で表示されます)、相関する必要のない値を見つけます。
- 値を右クリックし、「置換の除去」を選択します。
または、以下のように行います。
- テスト・エディターで、不適切に相関した要求を含むページをクリックします。
- 「テスト・データ」テーブルの任意の場所を右クリックし、「参照の表示」を選択します。
- 不適切な相関を示すテーブル行 (赤色の文字で表示) をクリックして、テーブルの下の「置換の除去」ボタンをクリックします。
誤った相関
データ相関を必要とするパラメーターは、テスト中に数多く現れます。例えば、ユーザーのログイン時に最初に現れるセッション ID パラメーターは、後続の要求ごとに現れる可能性があります。テストのパラメーターの複数のインスタンスが同じではなく、相関アルゴリズムが誤ったインスタンスを選択する可能性があります。
テスト生成設定には、
「実行用の自動データ相関の最適化」という設定があります。
- 「正確性」: 各パラメーターのオカレンスは、直前のオカレンスと相関します。これはデフォルトです。
- 「効率」: 各パラメーターのオカレンスは、単一の前のオカレンスと相関します。
「正確性」の設定では、誤ったインスタンスの相関は発生しにくいですが、可能性がないわけではありません。この問題を手動で訂正するには以下のようにします。
- テスト・エディターで、検索、ブラウズ 、「テスト・データ」テーブルのページを使用して、誤って相関された値を見つけます。
- 値またはテーブル行を右クリックし、「置換の除去」をクリックします。
- 再度、値を右クリックし、「置換元」を選択して、正しいパラメーターを選択します。