包含検査ポイントの追加

包含検査ポイントを使用することで、サービスによって返された XML コンテンツの 1 つまたは複数のエレメントが、検査ポイントで指定された XML フラグメントに一致するかを検査できます。

このタスクについて

検査ポイントを追加すると、サービス応答の結果が、検査ポイント・テスト・エレメントに指定された予期されるコンテンツと比較されます。等価、または包含 検査ポイントを使用すると、サービスが戻す XML コンテンツを直接比較できます。

複雑なサービス要求や検査ポイントには、テスト・スクリプトに必要ない空の XML 要素が含まれている場合があります。そのような空の XML 要素はテストの再生時にスキップできます。「ウィンドウ」 > 「設定」 > 「テスト」 > 「テスト・エディター」 > 「サービス・テスト」で、「XML ツリー・ビューアーで「空の場合スキップ」列を表示する」チェック・ボックスが選択されていることを確認します。このオプションは要求のツリー・ビューに「空の場合スキップ」列を表示します。その後、スキップする XML 要素を選択することができます。

手順

  1. テスト・エディターを開いて、サービス応答エレメントを選択します。
  2. 「テスト・エレメントの詳細」エリアで、「メッセージ」タブをクリックし、「フォーム」または「ツリー」ビューを選択します。
  3. エンベロープ行を展開し、検査するエレメントを右クリックして、「包含検査ポイントの作成」をクリックします。このアクションにより、記録された応答の XML エレメントが含まれた包含検査ポイントが作成されます。
    注: 「テスト・コンテンツ」ペインでメッセージ応答を選択して「追加」 > 「包含検査ポイント」を選択することで、メッセージ応答での包含検査ポイントを作成することもできます。ただし、検査ポイントにメッセージ応答の XML コンテンツ全体が含まれることになるため、結果は実質的に等価検査ポイントと同じになります。
  4. 検査ポイントを選択して、「テスト・エレメントの詳細」ペインで、検査ポイントの名前を入力します。
  5. 以下のように検査オプションを選択します。
    • 単純名ではなく、XML 文書の修飾構造 (名前空間タグを含む) に関して検査を実行する場合は、「XML 名前空間を使用したテスト」チェック・ボックスを選択します。エレメントの単純名と最終戻り値のみを検査する場合は、このオプションを使用不可にします。
    • 検査にテキスト・エレメントのコンテンツを含めるには、「XML テキスト・ノードのテスト」チェック・ボックスを選択します。
    • 検査に属性のコンテンツを含めるには、「XML 属性のテスト」チェック・ボックスを選択します。
  6. 必要であれば、「フォーム」ビュー、「ツリー」ビュー、または「ソース」ビューを選択して、予期される XML フラグメントを編集します。

    等価検査ポイントの場合、予期される XML データには、応答テスト・エレメントからの XML 文書が含まれています。 必要に応じて、予期される XML データを編集できます。

    「ツリー」ビューで、標準の Java™ 正規表現を指定することができます。 属性またはテキスト値の行にある「正規表現」列を選択し、「値」列に正規表現を入力します。例えば、次の正規表現では、電子メール・アドレスが正しくフォーマットされているかどうかが検査されます。/^([a-zA-Z0-9_¥.¥-])+¥@(([a-zA-Z0-9¥-])+¥.)+([a-zA-Z0-9]{2,4})+$/

    正規表現を使用する場合は、検査ポイントにおける XML ノードまたは XML フラグメントの数と予期されるノードの数が一致する必要があります。XML フラグメントのすべての正規表現が一致する場合に、検査ポイントは合格状況を返します。

包含検査ポイントを使用して、特定の値を持つ特定のエレメントのみがメッセージ応答に含まれているかを検査できます。例えば、以下のメッセージ応答について考えます。
<s:Envelope
 xmlns:a="http://www.w3.org/2005/08/addressing"
 xmlns:s="http://www.w3.org/2003/05/soap-envelope">
  <s:Header>
    <a:Action
     s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/soap/fault</a:Action>
    <a:RelatesTo>uuid:ed9bc447-d739-452f-989d-cd48344d494a</a:RelatesTo>
  </s:Header>
  <s:Body>
    <s:Fault>
      <s:Code>
        <s:Value>s:Sender</s:Value>
        <s:Subcode>
          <s:Value
           xmlns:a="http://schemas.xmlsoap.org/ws/2005/02/sc">a:BadContextToken</s:Value>
        </s:Subcode>
      </s:Code>
      <s:Reason>
        <s:Text
         xml:lang="en-US">The message could not be processed. This is most likely because the action &apos;http://Samples.ICalculator/Add&apos; is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint&apos;s binding.</s:Text>
      </s:Reason>
      <s:Node>http://www.w3.org/1999/xlink</s:Node>
      <s:Role>http://www.w3.org/1999/xlink</s:Role>
      <s:Detail
       xmlns:tns0="http://schemas.com/2003/10/Serialization/"
       xmlns:tns15="http://Samples.Windows"
       tns0:Id="id"
       tns0:Ref="idref">
        <tns15:GetCallerIdentityResponse>
          <tns15:GetCallerIdentityResult>str</tns15:GetCallerIdentityResult>
        </tns15:GetCallerIdentityResponse>
      </s:Detail>
    </s:Fault>
  </s:Body>
</s:Envelope>
Subcode エレメントについて検査する場合、包含検査ポイントの予期されるコンテンツは、以下の XML フラグメントになります。
<s:Subcode
  xmlns:a="http://www.w3.org/2005/08/addressing"
  xmlns:s="http://www.w3.org/2003/05/soap-envelope">
   <s:Value
   xmlns:a="http://schemas.xmlsoap.org/ws/2005/02/sc">a:BadContextToken</s:Value>
</s:Subcode>
デフォルトでは、包含検査ポイントは、Subcode というエレメントに Value というエレメントが含まれているかどうかを検査します。以下のオプションを使用できます。
  • XML 名前空間を使用したテスト: このオプションを使用すると、検査ポイントは、"http://www.w3.org/2003/05/soap-envelope":SubCode というエレメントに "http://www.w3.org/2003/05/soap-envelope":Value という 1 つのエレメントが含まれているかどうかを検査します。
  • XML テキスト・ノードのテスト: このオプションを使用すると、検査ポイントは、Value というエレメントにテキスト a:BadContextToken が含まれているかどうかも検査します。
  • XML 属性のテスト: このオプションを使用すると、検査ポイントは、予期される XML フラグメントに属性が一致するかも検査します。この例では、Subcode エレメントに属性がないため、「XML 属性のテスト」 オプションは必要ありません。
Detail エレメントが GetCallerIdentityResult の特定の値を適切に返しているかを検査する場合は、包含検査ポイントの予期されるコンテンツは、以下の XML フラグメントになります。
<s:Detail
 xmlns:a="http://www.w3.org/2005/08/addressing"
 xmlns:s="http://www.w3.org/2003/05/soap-envelope"
 xmlns:tns0="http://schemas.com/2003/10/Serialization/"
 xmlns:tns15="http://Samples.Windows"
 tns0:Id="regular_expression"
 tns0:Ref="idref">
  <tns15:GetCallerIdentityResponse>
    <tns15:GetCallerIdentityResult>IdentityValue</tns15:GetCallerIdentityResult>
  </tns15:GetCallerIdentityResponse>
</s:Detail>
以下のオプションを使用できます。
  • XML テキスト・ノードのテスト: このオプションを使用すると、検査ポイントは、GetCallerIdentityResult というエレメントにテキスト IdentityValue が含まれているかどうかも検査します。
  • XML 属性のテスト: このオプションを使用すると、検査ポイントは、tns0:Id によって参照される属性 Id に予期される値が含まれているかも検査します。 検査ポイントの「ツリー」ビューにある「正規表現」列を使用することで、この値の正規表現を指定することができます。例えば、tns0:Id="[a-zA-Z]" は、値に数値が含まれていないかを検査します。

次のタスク

テスト・エディターで検査ポイントを右クリックし、「使用可能にする」または「使用不可にする」をクリックすることによって、各検査ポイントを使用可能または使用不可にすることができます。

フィードバック