このセクションでは、 Diff ツールについて説明します。 Diff ツールは、保存データと受信データを比較し、差異をレポートします。
このセクションの内容:

Diff ツールとは

Diff ツールは、バイナリ、テキスト、 XML 、 JSON をサポートした、ベスト プラクティス回帰テスト ソリューションの現行のバックボーンです。Diff ツールは、他のツールのアウトプットとして受け取ったデータや、指定した他のインプットのデータとエディター上のデータを比較し、差分がある場合にレポートします。

Diff プロジェクトのコンフィギュレーション パネルは主に 2 つのセクションに分かれています。上部のセクションは全般オプションです。下部のセクションは [回帰コントロール] タブ、 [違いを無視] タブ、そして [オプション] タブです。 [オプション] タブでは、テキスト、バイナリ、 XML の比較オプションを設定できます。

テスト スイート内の Diff ツールの回帰オプションを設定する

テスト スイート内のすべての Diff 回帰コントロールのロジックやデータ ソースの使用方法をカスタマイズするには、次の操作を行います。

  • テスト ケース エクスプローラーでテスト スイート ノードをダブルクリックし、オプションを修正します。詳細については、「回帰オプション」を参照してください。

他のツールと同じように、プロジェクトにデータ ソースが追加されている場合、ツール用のデータ ソースを指定できます。Diff ツール用のデータ ソースは、コントロール値を与えるために使用されるデータ ソースを指定します。 データ ソースの詳細については「テストのパラメータライズ (データ ソース、変数、または他のテストの値を使用)」を参照してください。

Binary Diff モード

バイナリ ファイルの差分を確認するには、[比較モード] から [バイナリ] を選択します。

回帰コントロール

「コントロール」値 (今後のすべての結果で比較される値) として使用するデータ ソース値、ファイル、テキストを選択します。以下のいずれかのオプションを選択します。

  • エディター: テキスト エリアに入力されたテキストを回帰コントロールとして使用します。

  • ファイル: 回帰コントロールとして使用するファイルを指定します。ファイルのパスをプロジェクト ファイルに対して常に相対にしたい場合、[相対パスで保存] チェックボックスをオンにします。

  • データ ソース列: 回帰コントロールとして使用するデータ ソース列の値を指定します。このオプションは、プロジェクトにデータ ソースが含まれている場合にだけ利用可能です。

テキスト Diff モード

テキスト Diff モードの以下のオプションにアクセスするには、[比較モード] ドロップダウン リストから [テキスト] を選択します。

回帰コントロール

「コントロール」値 (今後のすべての結果で比較される値) として使用するデータ ソース値、ファイル、テキストを選択します。 以下のいずれかのオプションを選択します。

  • エディター: テキスト エリアに入力されたテキストを回帰コントロールとして使用します。

  • ファイル: 回帰コントロールとして使用するファイルを指定します。ファイルのパスをプロジェクト ファイルに対して常に相対にしたい場合、[相対パスで保存] チェックボックスをオンにします。

  • データ ソース列: 回帰コントロールとして使用するデータ ソース列の値を指定します。このオプションは、プロジェクトにデータ ソースが含まれている場合にだけ利用可能です。

違いを無視

テキスト モードの [違いを無視] タブでは、 [削除] ボタンをクリックして「無視するテキスト差異」を削除できます。

オプション

テキスト モードの [オプション] タブでは、以下のオプションを設定できます。

  • 正規表現: コントロール値を正規表現として解析するかどうかを指定します。このチェック ボックスがオフの場合、コントロール値は正規表現として解析されません。このチェック ボックスがオンの場合、コントロール値は正規表現として解析されます。
    たとえば、次の正規表現を入力したものとします。
    Java[a-zA-Z ]+\Q(\E[4-9]+th Edition\Q)\E
    この場合、抽出される実際の文字列はたとえば次のようになります。Java How to Program (4th Edition)
    まず、最初のサブストリングとして "Java" が出現しているかを解析します。 続いて、 a-z 、 A-Z 、半角スペースのいずれかの文字が、 1 回以上出現すること (大括弧 [] の後に + 記号で表現) をチェックします。\Q と \E で囲むことによって "(" と ")" をエスケープしていることに注意してください。"(" および ")" は正規表現の一部として認識されるため、文字列として認識させるにはエスケープ処理が必要です。また、開く括弧 "(" の次に出現する数字を [4-9]+ で表現しています。これは 4 から 9 までの数字が 1 回以上出現し、その後に "th Edition" が出現することを指定します。最後に、閉じ括弧 ")" で文字列は終わります。括弧は \Q\E でエスケープされています。
  • 空白を無視: 入力行と Diff コントロールの最初と最後の空行および空白を無視する場合、このチェックボックスをオンにします。このオプションがオフの場合、空行、先頭の空白、および末尾の空白によって回帰テストが失敗します。このオプションがオンの場合、空行、および先頭/末尾の空白が無視されます。
    空白には次のものが含まれます: 水平タブ、復帰改行、フォーム フィード、キャリッジ リターン、スペース。空行は、これらの空白を 1 つ以上含む行のことを指します。
  • UNIX 形式の diff で結果を出力: Diff ツールの出力の形式を指定します。このオプションがオフの場合、出力は表形式で表示されます。オンの場合、出力は UNIX 形式で表示されます。

XML Diff モード

XML Diff モードの以下のオプションにアクセスするには、[比較モード] ドロップダウン リストから [XML] を選択します。XML モードでは XML ファイルを解析し、要素ごと、そして属性ごとに XML ファイルを比較します (無視できる空白は無視します)。比較結果は XML 文書として表現されます。XML モードを使用する場合、両方の入力が整形式の XML 文書であり、同じ種類の文書要素を持っていることを確認してください。 

回帰コントロール

「コントロール」値 (今後のすべての結果で比較される値) として使用するデータ ソース値、ファイル、テキストを選択します。回帰コントロールの設定には、XML メッセージを設定するための 2 種類のグラフィカルな表現が用意されています。

リテラル XML 回帰コントロール

リテラル XML モードの [回帰コントロール] タブでは、以下のオプションを設定できます。

    • エディター: テキスト エリアに入力されたテキストを回帰コントロールとして使用します。

    • ファイル: 回帰コントロールとして使用するファイルを指定します。ファイルのパスをプロジェクト ファイルに対して常に相対にしたい場合、[相対パスで保存] チェックボックスをオンにします。

    • データ ソース列: 回帰コントロールとして使用するデータ ソース列の値を指定します。このオプションは、プロジェクトにデータ ソースが含まれている場合にだけ利用可能です。

  • WSDL から設定: WSDL に基づいた期待される値を使ってフォーム XML のコンテンツを初期化します。このボタンを利用できるのは、 SOAP クライアントに WSDL 文書が存在する場合だけです。

フォーム XML 回帰コントロール

フォーム XML を回帰コントロールとして選択した場合、[回帰コントロール] タブのオプションは XML ビュー ツリーと XML 設定に分割されます。

XML ビュー ツリーには、リテラル XML がツリー形式で表示され、個々のツリー ノードが 1 つの要素を表します。 XML ビュー ツリーのオプションは、 SOAP Client ツールのフォーム XML SOAP Envelope と同じように設定できます。  詳細については、「XML ビュー ツリーの操作」を参照してください。

XML 設定では、 XML コンポーネントの追加、削除、名前変更を行うことができます。XML 設定のオプションは、SOAP Client ツールのフォーム XML SOAP Envelope のオプションと同じように設定できます。詳細については、「XML 構成タブの操作」を参照してください。

違いを無視

XML モードの [違いを無視] タブから、適切なボタンをクリックすることで XPath の設定を追加または削除できます。詳細については、 「Understanding XPaths」 を参照してください。

XML オプション

XML モードの [オプション] タブでは、以下のオプションを設定できます。

  • Diff エンジン: ドロップダウン メニューから Diff エンジンを選択します。XMLUnit がデフォルトの Diff エンジンです。XMLUnit エンジンは、サイズの大きなメッセージや多くの差分が発生する比較をサポートしており、要素の順序を無視することもできます。必要に応じて VMTools または ExamXML MDCXML に切り替えることもできます。
  • 要素の順序を無視: 処理対象のドキュメント全体をとおして、要素の順序を無視するよう指定します。ドキュメントの特定の部分でだけ順序を無視する場合は、Diff ツールにドキュメントを渡す前に、XML Sort ツールを使用してその部分をソートします。詳細については「XML Sort」を参照してください。
  • SOAP モード: このチェック ボックスがオンの場合、以下のアクションが可能です。
    • 比較処理実行前に SOAP の多重参照 (multi-reference) が解決され、エラーとしてレポートされません。たとえば、 SOAP の多重参照を使用しているときに (つまり参照に異なる番号を与えているときに) Axis などの一部のサービスは予期せぬ方法で XML レスポンスを再編成します。このようなレスポンスの比較をテキスト モードで実行すると、たとえ SOAP メッセージが論理的に同等であっても、参照が異なるために失敗が発生します。
    • 名前空間の接頭辞が型に変わり、 arrayType 属性は無視されます。この処理は、 WSDL から Diff コントロールが自動的に生成される場合に必要です。なぜなら前もって接頭辞を決定できないからです。
    • 数値は数字と比較されます。たとえば、 1 と 1.0 の差異はエラーとしてレポートされません。
  • コメントの差異を無視する: XML コメントの変更を含めるには、このオプションを無効にします。デフォルトは「有効」です。

ExamXML MDCXML の使用

ExamXML はサードパーティ製のツールであり、A7Soft から別個に購入し、ライセンスを取得します。ExamXML MDCXML を選択する場合、実行モジュールおよびオプション ファイルの場所が指定されていることを確認してください。
注意:

  • 統合がテスト済みのバージョンは 4.74 および 4.38 です。
  • MDCXML.exe オプション ファイルには、無視する要素のリストなど、mdcxml 用のさまざまな設定が含まれます。次の A7Soft の Web サイトに、オプション ファイルのサンプルがあります: http://www.a7soft.com/mdcxml.html
  • オプション ファイルには、最低限でも以下の設定が含まれていなければなりません (SOAtest は、以下のパラメーターに関して、他の値の使用をサポートしていません)。

    • ValidationErrorAsFatal=0
    • InsertPI=1
    • InsertTags=0
    • InsertComments=0
  • ExamXML モードを使用する場合、Diff ツールのコントロールのコンテンツは、ファイルで指定する必要があります。 

回帰テストの構成」の説明にあるように、期待されるコンテンツを Diff ツールに埋め込むのではなく、ファイルに保存することによって、外部的な回帰コントロールを自動的に作成できます。

VMTools の使用

 VMTools は製品に組み込まれています。追加のライセンスは必要ありません。VMTools を選択した場合、以下のオプションを指定できます。

  • XML で結果を出力: Diff ツールの出力の形式を指定します。このチェックボックスがオフの場合、出力は表形式で表示されます。オンの場合、出力は XML で表示されます。Diff ツールのメッセージ出力に他のツールが接続された場合にだけ差異が反映されます。

  • SOAP モード: このチェックボックスをオンにすると、次の処理が有効になります。
    • 比較処理実行前に SOAP の多重参照 (multi-reference) が解決され、エラーとしてレポートされません。たとえば、 SOAP の多重参照を使用しているときに (つまり参照に異なる番号を与えているときに) Axis などの一部のサービスは予期せぬ方法で XML レスポンスを再編成します。このようなレスポンスの比較をテキスト モードで実行すると、たとえ SOAP メッセージが論理的に同等であっても、参照が異なるために失敗が発生します。
    • 名前空間の接頭辞が型に変わり、 arrayType 属性は無視されます。この処理は、 WSDL から Diff コントロールが自動的に生成される場合に必要です。なぜなら前もって接頭辞を決定できないからです。
    • 数値は数字と比較されます。たとえば、 1 と 1.0 の差異はエラーとしてレポートされません。

ある条件下で、 VMTools はテキスト ベースで差分を取得します。この現象は、 XML が非常に複雑で、差異の数が多すぎる場合や完了までに時間がかかりすぎる場合に起こります。

この現象が起こった場合、以下のいずれかのメッセージがコンソール ビューに表示されます。

Did not run XML Diff, there are too many differences.Performing text mode diffing instead.

Did not run XML Diff, it did not finish within 30.0 secs.Performing text mode diffing instead.

XML 差分チェックの最大実行時間は、 [設定] パネルの [その他] タブ ([接続設定] > [デフォルト タイムアウト]) に設定されたデフォルト値です。ただし、 120 秒を超えることはありません。この時間を超えるとテキスト モードに変更されます。

JSON Diff モード

[Diff モード] ドロップダウン メニューから [JSON] を選択すると、[回帰コントロール] および [違いを無視] オプションが利用可能になります。

回帰コントロール

JSON モードの [回帰コントロール] タブでは、以下のオプションを設定できます。

  • 名前: Diff ツールの名前を指定します。
  • 回帰コントロール ソース: 「コントロール」値 (今後のすべての結果で比較される値) として使用するデータ ソース値、ファイル、テキストを選択します。

    • エディター: テキスト エリアに入力されたテキストを回帰コントロールとして使用します。

    • ファイル: 回帰コントロールとして使用するファイルを指定します。ファイルのパスをプロジェクト ファイルに対して常に相対にしたい場合、[相対パスで保存] チェックボックスをオンにします。

    • データ ソース列: 回帰コントロールとして使用するデータ ソース列の値を指定します。このオプションは、プロジェクトにデータ ソースが含まれている場合にだけ利用可能です。

違いを無視

JSON モードの [違いを無視] タブから、適切なボタンをクリックすることで XPath の設定を追加または削除できます。

XPath とは

XML モードで Diff ツールを実行した場合、実際の出力と Diff 値との差異が XPath で表現されます。  XPath は XML 要素の位置を表し、差異が発生した箇所、差異の種類、およびその差異が変更、挿入、削除によって発生したものかどうかを示します。

Diff ツールを実行するときにどの XPath を無視するかを指定できます。 XPath 全体を無視することも、 Content: Insert 操作などの特定の XPath 操作だけを無視することもできます。

XPath の除外は、回帰テストを失敗させる変化する値を除外するのに役立ちます。たとえば、頻繁に変わるタイムスタンプ値が結果に含まれる場合などです。タイムスタンプ値が同じになることはないので、 Diff ツールの設定値にタイムスタンプ値が一致することはまずありません。これはテストを失敗させます。この場合、この値の XPath を無視するように指定すれば、テストは失敗しません。

無視する XPath を設定する方法として、以下の 3 つの方法があります。

  • [品質タスク] ビューから指定する: Diff ツールに XPath を無視させるもっとも簡単な方法です。失敗した回帰テストの後に品質タスク ビューのノードを右クリックし、「無視する XPath」を選択します。
  • 手動で XPath を入力する: Diff ツールの GUI で [無視する差異の構成] ボタンをクリックして手動で XPath を入力できます。
  • フォーム XML ツリーから「無視する XPath」を指定する: フォーム XML ツリーで要素を右クリックし、選択した要素に基づいて「無視する XPath」を設定できます。

品質タスク ビューから指定

Diff ツールに「無視する XPath」を入力するには、Diff ツールに手動で XPath を入力するよりも、 [品質タスク] ビューで右クリックをする方法が簡単です。 XPath の位置は、回帰テストが失敗した後に [品質タスク] ビューにツリー形式で表示されます。

回帰テストが失敗した後に「無視する XPath」を指定するには、次の操作を行います。

  1. [品質タスク] ビューでエラーを右クリックし、ショートカット メニューの [Ignore XPath]をクリックします。選択した XPath が自動的に入力された状態で [無視する XPath の設定] ダイアログが表示されます。



  2. 無視する XPath 操作のチェックボックスをオンにします。次のオプションがあります。次のオプションが利用可能です。
    • XPath: この設定を使用する XPath の位置を指定します。
    • 再帰的 (子に適用): 無視する XPath 設定を子要素に適用する場合、このチェックボックスをオンにします。
    • テキスト コンテンツ (変更 / 挿入 / 削除): 除外するコンテンツ操作のチェックボックスをオンにします。
    • 要素 / サブツリー (挿入 / 削除): 除外する要素またはサブツリー操作のチェックボックスをオンにします。
    • 属性 (変更 / 挿入 / 削除): 除外する属性操作のチェックボックスをオンにします。このチェックボックスがオンの場合、SOAtest は XPath 中で指定の属性名だけを無視します。特定の属性を除外するには、[属性] チェックボックスの隣のテキスト フィールドに属性名を入力します。 要素の XPath の場所で 1 つ以上の属性を無視したい場合、属性名を空のままにするか、ワイルドカード * を使用します (例: myAttribute*)。
    • 要素名および名前空間 (変更 / 挿入 / 削除): 無視する要素名操作を選択します。
  3. [OK] をクリックします。

    今後この Diff ツールを実行すると、指定した XPath 操作が比較処理から除外されます。また、この XPath 操作は Diff ツールの XML モードの [違いを無視] タブに表示されます。 XPath を変更する方法については 「Modifying XPath Settings」を参照してください。

手動での「無視する XPath」の入力

Diff ツールのコンフィギュレーション パネルで「無視する XPath」を手動で入力したり貼り付けたりすることができます。

XPath を手動で入力するには、以下の操作を行います。

  1. テキスト、 XML 、 JSON モードの Diff ツールで [違いを無視] タブをクリックします。
  2. [追加] をクリックします。[無視する XPath のリスト] の [XPath] 列に空のフィールドが表示されます。デフォルトでは、[設定] 列は自動的にすべての XPath 操作を指定した状態が入力されます。つまり、ユーザーが追加したすべての XPath は無視されます。1 つの XPath 操作だけを除外する方法については「Ignoring XPaths from the Form XML Tree」を参照してください。
  3. 空の [XPath] フィールドに XPath の位置を入力します。
  4. ステップ 1 から 3 を繰り返して XPath を追加します。
  5. [OK] ボタンをクリックします。

変更した回帰テストを今後実行すると、追加したすべての XPath が無視されます。「無視する XPath」を変更する方法については 「Modifying XPath Settings」を参照してください。

フォーム XML ツリーから「無視する XPath」を指定

[フォーム XML] タブのフォーム XML ツリーから直接「無視する XPath」を指定することもできます。次の操作を行います。

  1. フォーム XML ツリーで要素のノードを右クリックし、ショートカット メニューの [無視する XPath を設定] をクリックします。
    • 選択した要素が反復する要素ではない場合、選択した XPath が自動的に入力された状態で [無視する XPath の設定] ダイアログが表示されます。



    • 選択した要素が、同じローカル名の兄弟を持つ、反復する要素である場合、次のダイアログが表示されます。



      [Ignore All] または [選択された要素だけを無視] を選択できます。[OK] をクリックすると、選択した XPath が自動的に入力された状態で [無視する XPath の設定] ダイアログが表示されます。
  2. 無視する XPath 操作のチェックボックスをオンにします。次のオプションがあります。次のオプションが利用可能です。
    • XPath: この設定を使用する XPath の位置を指定します。
    • 再帰的 (子に適用): 無視する XPath 設定を子要素に適用する場合、このチェックボックスをオンにします。
    • テキスト コンテンツ (変更 / 挿入 / 削除): 除外するコンテンツ操作のチェックボックスをオンにします。
    • 要素 / サブツリー (挿入 / 削除): 除外する要素またはサブツリー操作のチェックボックスをオンにします。
    • 属性 (変更 / 挿入 / 削除): 除外する属性操作のチェックボックスをオンにします。このフィールドを選択した場合、Xpath 中の指定した属性名だけが無視されます。特定の属性を除外するには、[属性] チェックボックスの隣のテキスト フィールドに属性名を入力します。要素の XPath の場所で 1 つ以上の属性を無視したい場合、属性名を空のままにするか、ワイルドカード * を使用します (例: myAttribute*)。

    • 要素名および名前空間 (変更 / 挿入 / 削除): 無視する要素名操作を選択します。
  3. [OK] をクリックします。
    フォーム XML ツリーにおいて、選択した要素のノードが灰色で表示されます。変更した回帰テストを今後実行すると、指定したすべての XPath 操作が無視されます。
    XPath を無視する設定をリセット (解除) するには、その XPath ノードを右クリックし、ショートカット メニューの [無視する XPath を削除] をクリックします。ノードの色が灰色から黒に戻ります。このノードは今後無視されません。

「無視する XPath」の共有リストの作成

「無視する XPath」の設定を Diff ツール自体に持たせるだけでなく、共有リストを参照することもできます。共有リストは他の Diff ツールからも使用できます。 「無視する XPath」の共有リストを作成する方法については 「グローバルな無視する XPath プロパティ」を参照してください。

XPath 設定の変更

デフォルトでは、 [違いを無視] タブに XPath を追加すると、その XPath が取り得るすべての操作が [設定] 列に表示されます。そのため、次に回帰テストを実行したとき、これらのすべての操作が無視されます。しかし、XPath 設定を変更することで、すべての操作を除外するのではなく、特定の操作だけを除外することができます。

XPath 設定を変更するには、以下の操作を行います。

  1. [違いを無視] タブで、変更する XPath を選択して [変更] ボタンをクリックします。[無視する XPath の設定] ダイアログが表示されます。



  2. 無視する XPath 操作のチェックボックスをオンにします。次のオプションがあります。次のオプションが利用可能です。
    • 再帰的 (子に適用): 無視する XPath 設定を子要素に適用する場合、このチェックボックスをオンにします。
    • XPath: この設定を使用する XPath の位置を指定します。
    • テキスト コンテンツ (変更 / 挿入 / 削除): 除外するコンテンツ操作のチェックボックスをオンにします。
    • 要素 / サブツリー (挿入 / 削除): 除外する要素またはサブツリー操作のチェックボックスをオンにします。
    • 属性 (変更 / 挿入 / 削除): 除外する属性操作のチェックボックスをオンにします。このフィールドを選択した場合、Xpath 中の指定した属性名だけが無視されます。特定の属性を除外するには、[属性] チェックボックスの隣のテキスト フィールドに属性名を入力します。要素の XPath の場所で 1 つ以上の属性を無視したい場合、属性名を空のままにするか、ワイルドカード * を使用します (例: myAttribute*)。

    • 要素名および名前空間 (変更 / 挿入 / 削除): 無視する要素名操作を選択します。
  3. [OK] をクリックします。

変更した回帰テストを今後実行すると、指定したすべての XPath が無視されます。


ビデオ チュートリアル

回帰コントロールを生成して更新する方法について説明します。

  • No labels