You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Current »

このセクションでは XML Assertor ツールについて説明します。XML Assertor ツールは XML メッセージ中のデータの正確性を高めます。  このツールを使用するには有効なライセンスが必要です。このセクションの内容:

XML Assertor ツールとは

XML Assertor ツールは通常、サービスが返すデータを検証するために、 SOAP Client ツールまたは Messaging Client ツールに接続されます。XML Assertor ツールは、スクリプトを必要とすることなく、複雑なメッセージ検証のニーズを支援します。ユーザーは、XML メッセージの違反アサーションを簡単に作成して保守することができます。

サービスの結果を検証する際に、特定のルール コンフォーマントをビジネス要件に適用したい場合があります。この場合、変化が発生したことを検証するだけでは不十分です。容認できる XML メッセージは何から構成されるのかをルールとして定義し、このルールを適用するのが良いでしょう。

XML Assertor ツールは、さまざまなアサーションを提供します。 XML Assertor ツールのアサーションを使って、 XML メッセージの妥当性のために、より論理的でビジネスに適したルールを強化できます。

このツールは、一般的には XML メッセージの [回帰コントロールの作成/更新] で [値アサーションの作成] オプションを選択することで追加されます。この方法で XML Assertor を追加するには、 「個々のレスポンス要素値の検証」を参照してください。 


[出力の追加] ウィザードから追加することも可能です。詳細については、 「テスト出力の追加」を参照してください。
 

XML Assertor ツールの構成

XML Assertor ツールは次の 3 つのメイン タブから構成されます。

  • 概要: 設定された XML アサーションの詳細が表に表示されます。
  • 設定: XML アサーションを作成して設定します。
  • 期待される XML: 要素を選択できるテンプレートを作成する、期待される XML レスポンスを指定します。このツールが (たとえばトラフィックから、あるいは連結先のクライアント ツールで定義されて) 正常な XML メッセージを受信する場合、このパネルに自動的にデータが投入されます。代わりに、サンプル メッセージを [リテラル] タブや [ツリー] タブにコピーすることも可能です。注意: 期待される XML はデフォルトでは保存されませんが、保存したい場合は、[期待される XML を保存] をオンにします。

XML Assertor ツールを構成するには、次の操作を行います。 

  1. XML Assertor の [設定] タブで [追加] をクリックします。

     [アサーションの選択] ウィザードが表示されます。
  2. アサーションの種類を選択します。利用可能なアサーション タイプの概要を次に説明します。
    • 値アサーション: 次の値アサーションが利用できます。
      • 値アサーション: 特定の要素の値を強制します。
      • 値オカレンス アサーション: 特定の値を持つ要素が、指定された数だけ含まれているかを検証します (たとえばドキュメントに XPath セレクターと指定された値文字列の両方に一致する要素が n 個存在するかなど)。
      • 数値アサーション: 要素の数値を強制します。
      • 文字列比較アサーション: 指定された要素のテキスト コンテンツの値を強制します。
      • 正規表現アサーション: 要素が正規表現と一致することを強制します (サポートされる正規表現の式については ここをクリック してください)。
      • 式アサーション: 要素から構成される式の値を強制します。
      • カスタム アサーション: カスタム ロジックを用いて要素の値を強制します。
    • 構造アサーション: 次の構造アサーションが利用できます。
      • オカレンス アサーション: 要素のオカレンスの数を強制します。
      • Has Content アサーション: 要素にテキスト コンテンツがあるか (つまりテキストの長さが > 0 であるか) を検証します。
      • Has Children アサーション: 要素に 1 つ以上の子要素があることを強制します。
    • 複合アサーション: 次の複合アサーションが利用できます。
      • AND アサーション: すべて成功しなければならない複数のアサーションをグループ化します。
      • OR アサーション: 少なくとも 1 つが成功する必要がある複数のアサーションをグループ化します。
      • 条件付きアサーション: 条件を満たす場合にだけアサーションを適用します (条件はこれまでに定義したアサーションの組み合わせです) 。
    • 差分アサーション: 次の差分アサーションが利用できます。
      • 数値差分アサーション: 特定要素の値に対して数値の差分を強制します。要素の数値が、ユーザー定義のベース値からユーザー定義の数値の分だけ異なることをアサートします。たとえば、摂氏温度の値は氷点下 3 度であるとアサートするには、ベース値を 0、差分を -3 に設定します。
      • 日付差分アサーション: 特定要素の値に対して日付の差分を強制します。
      • DateTime 差分アサーション: 特定要素の値に対して日時の差分を強制します。
    • 範囲アサーション: 次の範囲アサーションが利用できます。
      • 数値範囲アサーション: 要素の数値が、数値範囲の包括的な範囲内にあることを強制します。
      • 日付範囲アサーション: 特定要素の値に対して日付の範囲を強制します。
      • DateTime 範囲アサーション: 特定要素の値に対する日時の範囲を強制します。
  3. [次へ] をクリックします。ツリー ビューが表示されます。
  4. ツリー ビューで、このアサーションでチェックする要素を選択し、[終了] をクリックします。XML Assertor ツールの [期待される XML] タブで、このツリー構造を編集できます。 

    デフォルトでは、XPath フィールドは大文字と小文字を区別しますが、Virtualize の起動時に適切なシステム プロパティを指定することにより、大文字と小文字の区別を変更できます。詳細については「大文字と小文字の区別」を参照してください。

[構成] タブで [追加] をクリックすることで、メッセージに適用するアサーションをさらに追加することもできます (たとえば price 要素で強制する数値アサーションなど)。

後でアサーションが参照する要素を変更したい場合、[設定] タブの下部にある [要素の変更] をクリックします。ダイアログが開き、グラフィカルに、あるいは手動で要素を編集できます。期待される XML に対する XPath 表現を確認するには、 [XPath の評価] をクリックします。
 
[コンテンツのトリム] オプションは、期待されるテキストと比較する前に、抽出した文字列の先頭から末尾までにある空白を取り除きます。たとえば、「 bar 」が抽出された場合は「bar」となります (すべての例でかぎ括弧は無視してください。空白を表すために使用しているだけです)。[コンテンツのトリム] オプションがオフの場合、これは「bar」に一致し、「 bar 」には一致しません。

次のような XML があり、

<foo>
bar
</foo>

「bar」の値の前後にある改行文字が大抵はフォーマットの問題である場合、このオプションを有効にすれば、抽出を作成するときに XML のフォーマットを説明する必要がありません。

XPath のパラメータライズ

XPath をパラメータライズし、テスト スイートまたはレスポンダー スイートの変数、環境変数、データ ソース値を参照できます。変数を参照するための構文は、${myVariableName} です。XML Data Bank の値と XML Data Source の値を参照する構文は ${myColumnName} です。${myColumnName} です。 

たとえば、データ ソース列名が ${XPath Key} の場合、次の構文を使用できます。

/*[local-name(.)="bookstore" and namespace-uri(.)=""]/*[local-name(.)="book" and namespace-uri(.)=""][child::node()[local-name(.)="title" and text()="${XPath Key}"]]

ビデオ チュートリアル

このビデオは、XML レスポンスで目的のアサーションを追加する方法について説明します。

関連するチュートリアル

以下のチュートリアルでこのツールの使い方を説明しています。

  • No labels