主張 SoapUIスクリプト、XQuery、XPath の型に関するチュートリアル

アサーションとは何ですか?

アサーションとは、何かを肯定したり主張したりする行為を意味します。 チェック ポイントまたは検証ポイントとして解釈することもできます。

リクエストが Web サーバーに送信されると、レスポンスが受信されます。 応答に予期したデータが含まれているかどうかを検証する必要があります。 応答を検証するには、アサーションを使用する必要があります。

アサーションの種類

返答を表明する方法は様々ありますが、ここでは一般的に使用されている方法に焦点を当てます。 SoapUI レスポンスを検証する際のアサーションの種類。以下はオープンソース版で利用可能なものです。 SoapUI.

  1. プロパティコンテンツ
  2. 適合状況基準
  3. スクリプト
  4. SLA
  5. JMS
  6. セキュリティ
主張の種類 SoapUI
主張の種類 SoapUI

上記のものとは別に、PRO バージョンには組み込みの JDBC アサーションもあり、これを使用して Web サービスがデータベースを正しく更新したかどうかをアサートできます。

アサーションを含む

指定された文字列の存在を検索します。 正規表現もサポートしています。

WSDL リクエストを使用して、前のチュートリアルと同じ例を続けます。 http://www.dneonline.com/calculator.asmx.

ステップ1: デフォルトではアサーションはありません。

  • アサーションの数は「アサーション」タブに表示されます。
  • 新しいアサーションを追加するには、[新しいアサーションの追加] ボタンをクリックします。

アサーションを含む

ステップ2: 今、

  1. アサーション カテゴリを選択します。
  2. アサーション タイプを選択します。
  3. 「追加」をクリックします

アサーションを含む

ステップ3: 文字列「46」が応答に存在するかどうかを検証してみましょう。 「OK」をクリックします

注: 大文字と小文字を無視して正規表現を追加することもできます。

アサーションを含む

ステップ4: 追加すると、すぐにアサーションが実行され、VALID か INVALID が表示されます。

アサーションを含む

ステップ5: では、'Contains Assertion in' の内容を変更するとしましょう。 SoapUI「47」に変更して、何が起こるか見てみましょう。

アサーションを含む

ステップ6: アサーションが実行され、結果がユーザーにスローされます。 応答内に文字列「47」がないため、アサーションは失敗しました。

アサーションを含む

アサーションは含まれていません

指定した文字列が存在しないかを検索します。 正規表現もサポートしています。

ステップ1: 「新しいアサーションを追加」ボタンをクリックした後、

  1. アサーション カテゴリを選択します。
  2. アサーション タイプを選択します。この場合は「含まれていない」です。
  3. 「追加」をクリックします

アサーションを含まない

ステップ2: 文字列「intA」が応答に存在するかどうかを検証してみましょう。 「FromCurrency」という文字列を入力し、「OK」をクリックします。

アサーションを含まない

ステップ3: アサーションが追加されるとすぐに実行され、結果が表示されます。これまでに 2 つのアサーションを追加したので、両方のアサーションが実行され、結果が表示されます。

アサーションを含まない

ステップ4: 次に、「Not Contains アサーション」の内容を変更して、何が起こるかを見てみましょう。 文字列「AddResult」が存在しないことを確認します。

アサーションを含まない

ステップ5: 文字列「AddResult」は実際には応答に存在するため、以下に示すように「NOT Contains」アサーションは失敗します。

アサーションを含まない

XPATH 一致アサーション

あなたが使用します XPath 式を使用してターゲット ノードとその値を選択します。 XPath は、XML ドキュメントからノードを選択するための XML クエリ言語です。

ステップ1: [新しいアサーションの追加] ボタンをクリックした後、

  1. アサーション カテゴリを選択します。
  2. アサーション タイプを選択します。この場合は「XPath Match」です。
  3. 「追加」をクリックします

XPath 一致アサーション

ステップ2: XPath の追加ウィンドウが開きます。

追加する前に SoapUI XPath では、名前空間を宣言する必要があります。XML 名前空間は、Uniform Resource Identifier (URI) 参照によって識別される名前の集合であり、XML ドキュメントでは要素名および属性名として使用されます。 SOAP UI XPathアサーション。

XML 名前空間を宣言するには、[宣言] ボタンをクリックするだけで自動的に作業が行われます。また、手動で名前空間を自分で宣言することもできます。

名前空間を宣言した後、作成した名前空間を使用して XPath を参照する必要があります。

「宣言」ボタンをクリックすると、URIが2つあるため、2つの名前空間が表示されます。そのうちの1つはスキーマです。 URL そしてもう一方とは、実際のウェブサービスに対応するものです。 URLXPathを参照する際には、Webサービスが配置されている実際の名前空間を使用する必要があり、スキーマの名前空間は使用しないでください。

XPath 一致アサーション

名前空間soap='http://schemas.xmlsoap.org/soap/envelope/'を宣言します。

名前空間 ns1='http://tempuri.org/' を宣言します。

XPath 一致アサーション

ステップ3: ここで、検証する必要がある XML ノードの XPath を入力する必要があります。

//ns1:AddResult で囲まれたノードの値を返します。 & ns1 は、「http://tempuri.org/」を指す宣言された名前空間に対応します。

XML を入力した後、現在の応答からの値が今後の比較のために選択されるように、[現在から選択] をクリックする必要があります。

XPath 一致アサーション

ステップ4: これまでのところ、

  1. 名前空間を宣言した後、検証する必要がある XML ノードの XPath を入力しました。
  2. 現在の値を期待値にするには、「現在から選択」をクリックする必要があります。
  3. 現在の値がユーザーに表示され、必要に応じて変更できます。
  4. [保存]をクリックします。

XPath 一致アサーション

ステップ5: 追加された主張 SoapUI 以下のように表示されます。

XPath 一致アサーション

アサーションのスクリプト作成

このアサーション手法は、何百ものアサーションを管理および維持することが非常に難しいため、最も広く使用されています。

SOAP UI どちらかを使用します Groovy スクリプトまたは Javaスクリプト スクリプトのアサーション用。スクリプト技術は開発に採用されています。ping SOAPをテストするためのフレームワーク。スクリプトによるアサーションは、以下の状況で使用されます。

スクリプトを使用すると、ユーザーは、それぞれセットアップ メソッドとティア ダウン メソッドを使用して、テストケースの実行前と実行後にいくつかの操作を実行できます。セットアップは、特定のメソッド (例: オブジェクトの作成と初期化) を実行する前に実行される手順であり、ティア ダウンは、メソッドの実行後に実行される手順です (例: オブジェクトの破棄とクリーンアップ)。この機能は他のアサーション タイプでは使用できず、コーディングを通じてのみ実行できます。

これにより、ユーザーはプロジェクトの開閉を実行して、プロジェクト関連の設定を初期化またはクリーンアップしたり、スクリプト作成時に非常に役立つ環境変数を操作したりすることができます。

これは、動的な応答コンテンツをアサートするのに役立ちます。

スクリプトアサーションは、事前に定義されていないユーザー定義アサーションを作成するために使用されます。 SOAP UI.

スクリプトのアサーションを実証するには SoapUIそこで、以前に作成したテストケース「Add」と計算機WSDLを使用します。

ステップ1: Groovy スクリプトを追加する手順は、アサーションが事前定義されたものではないことを除いて、他のアサーションの手順と同じです。 代わりに、これはユーザー定義のアサーションであり、組み込みのものよりも優れた柔軟性を提供します。

アサーションを追加する必要があるテスト ステップを選択します。

アサーションのスクリプト作成

以下に示すように、「アサーションを追加」ボタンをクリックします。

アサーションのスクリプト作成

ステップ2: 次に、「アサーション」カテゴリを選択します。

  1. この場合はスクリプトです。
  2. 選択 SoapUI スクリプトアサーションであり、それに関連付けられたサブタイプはありません。
  3. 「追加」をクリックします。

アサーションのスクリプト作成

ステップ3: スクリプト ダイアログが開き、ユーザーは応答 XML を検証するためのユーザー定義スクリプトを作成できます。

アサーションのスクリプト作成

ステップ4: 次に、コンバージョン率を検証するための Groovy スクリプトを作成しましょう。 スクリプトはコメントが埋め込まれた状態で以下に添付されています。 についての知識を持っておくことをお勧めします Java スクリプトまたは Groovy 独自のスクリプトを作成する前にスクリプトを作成してください。

//Define Groovy Utils and holder for validating the XML reponse content
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent)

//Define the NameSpace
holder.namespaces["ns1"] = "http://tempuri.org/"

//Get the Value of the Node 'AddResult' and assign to a variable
def addResult = holder.getNodeValue("//ns1:AddResult")

//print the value of the result in the Output panel
log.info "The result value for integers is " + addResult

//Comparing the value to print 'Pass' or 'Fail'
if(addResult=="46")
{ log.info "Pass" }
else
{ log.info "fail"}
  1. 「実行」ボタンをクリックして実行をトリガーします。
  2. スクリプトの出力は、[出力] ペインに表示されます。 コンバージョン値と最終結果 (合格または不合格) の両方が出力されます。
  3. 「スクリプトアサーションに合格しました」という情報が表示されます。[OK] をクリックします。

注: スクリプトの構文が正しい限り、最後の情報ポップアップには常に「スクリプト アサーションが合格しました」というメッセージが表示されます。 スクリプト内のあなたの主張とは何の相関関係もありません。

アサーションのスクリプト作成

[OK]をクリックします。

ステップ5: アサーション タブには、このテスト スイートに追加したすべてのアサーションが、それぞれのアサーションに対するステータスとともに表示されます。

アサーションのスクリプト作成

ステップ6: Now

  1. ナビゲーターツリーからテストスイートを選択します
  2. 「実行」ボタンをクリックします
  3. テスト スイート全体の結果が表示されます。

アサーションのスクリプト作成

Xquery一致アサーション

これは、XQuery 式を使用してターゲット プロパティからコンテンツを選択します。XQuery アサーションをよりよく理解するためには、はるかに大きなレスポンス XML が必要です。 SoapUIでは、以下に示すように、別のWSDLをインポートしてみましょう。 http://www.webservicex.net/medicareSupplier.asmx?WSDL

ステップ1: 既存のプロジェクトを右クリックし、「WSDL の追加」を選択します。

Xquery一致アサーション

ステップ2: 既存のプロジェクトを右クリックし、「WSDL の追加」を選択します。 他のオプションはデフォルトのままにし、「OK」ボタンをクリックします。

Xquery一致アサーション

ステップ3: すべての操作は以下のようにリストされます。

Xquery一致アサーション

ステップ4: ここで、を追加しましょう テストケース 作成したのと同じテストスイート内で テスト 通貨換算機。

Xquery一致アサーション

ステップ5: テストケースの名前を入力し、「OK」ボタンをクリックします。

Xquery一致アサーション

ステップ6: テストケースは以下のように作成します。

Xquery一致アサーション

ステップ7: 追加
以下に示すように、「Soap Test Request」と入力して新しいテスト ステップを作成します。

Xquery一致アサーション

ステップ8: テストステップの名前を入力します。 「Supplier_by_City」と言うと、より意味のあるものになります。「OK」をクリックします。

Xquery一致アサーション

ステップ9: まず Opera検証したい項目を選択します。この場合は、「MedicareSupplierSoap -> GetSupplierByCity」です。「OK」をクリックします。

Xquery一致アサーション

ステップ10: テスト ケースの名前を入力し、[OK] をクリックします。

Xquery一致アサーション

ステップ11: リクエスト XML アウトラインは以下のように表示されます。

 Xquery一致アサーション

ステップ12: ここで、「ニューヨーク」市のすべてのサプライヤー情報を検索してみましょう。

これを行うには、コードに次の行を追加します。

<GetSupplierByCity xmlns="http://www.webservicex.net/">

<City>New York</City>

</GetSupplierByCity>

以下のWSDL URL – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity

Xquery一致アサーション

ステップ13: テストを実行すると、以下の応答を受け取ります

Xquery一致アサーション

ステップ14: すべてのサプライヤー番号を検証する必要があるとします。 何百もの XPath アサーションが必要なため、XPath アサーションは使用できません。 したがって、この場合には XQuery の使用が避けられません。

XQuery アサーションは、本質的に反復的な XML 応答のグループを検証するのに役立ちます。

Xquery一致アサーション

ステップ15: 次に、「アサーションを追加」をクリックします。

  1. 「アサーション カテゴリ」 (この場合はプロパティ コンテンツ) を選択します。
  2. アサーション タイプとして「XQuery アサーション」を選択します。
  3. 「追加」をクリックします。

Xquery一致アサーション

ステップ16: XPath アサーションと同様に、名前空間を宣言する必要があります。

  1. 「宣言」ボタンをクリックすると自動的に許可されます SOAP UI 名前空間を宣言するには、[宣言]ボタンをクリックします。[宣言]ボタンをクリックすると、「代わりにスキーマから名前空間を宣言してください」というメッセージが表示されたポップアップが表示されます。[はい]をクリックして、以下に示すように続行してください。

    注意: 「宣言ボタン」を押すと、異なる結果になる可能性があります URL's は名前空間宣言として使用されますが、コーディングにおいては実際の Web サービスの場所の名前空間が考慮されます。

    Xquery一致アサーション

  2. すべてのサプライヤー番号を取得するには、XPath クエリを作成する必要があります。それを <SupplierNumber> 内に配置し、 タグ。
  3. 「現在から選択」をクリックすると、現在の応答から実行されます。
  4. 「現在から選択」をクリックすると、すべてのサプライヤー番号がリストされます。
  5. [保存]をクリックします。
// Namespace declaration
declare namespace soap='http://schemas.xmlsoap.org/soap/envelope/';
declare namespace ns1='http://www.webservicex.net/';
declare namespace x = '';

// Placing the result in Myresult Tags

{
// Iterating through all the supplier number 
for $x in //ns1:GetSupplierByCityResponse/ns1:SupplierDataLists/ns1:SupplierDatas/ns1:SupplierData

//Return all the Supplier number within ‘SupplierNumber’ Tags.
return {data($x/ns1:SupplierNumber)}
}

Xquery一致アサーション

ステップ17: XQuery アサーションが実行され、以下に示すように「アサーション」パネルに最終結果が表示されます。 これで、すべてのサプライヤー番号情報を検証した Xquery アサーションが正常に追加されました。 リクエストが Web サーバーに送信されるたびに、同じことが実際の値と比較されます。

注: 実際の値は表示されません。すべての実際の値が期待値と同じ場合は VALID と表示され、そうでない場合は 'Failed' と表示されます。

Xquery一致アサーション

組み込みアサーションをいつ使用するか?

  • 応答が短い場合、組み込みアサーションのいずれかを使用して検証できる場合。
  • Web サーバーから送信される応答が常に静的である場合は、組み込みアサーションを使用することもできます。 動的である場合、組み込みアサーションを使用してそれをアサートすることはできません。
  • タイムアウト アサーションやセキュリティ アサーションなどの組み込みアサーションの使用が避けられない場合。
  • 組み込みアサーションは、テストを繰り返す必要がない XNUMX 回限りの使用には十分に適しています。

アサーションのオプション

作成されたアサーションは、以下で強調表示されているコントロール パネルを使用して最適に制御できます。

アサーションのオプション

作成されたアサーションにより、テスターはアサーション ツールボックスから次の項目を構成できるようになります。

オプション 詳細説明

アサーションのオプション

選択したアサーションの順序が上に移動します。

アサーションのオプション

選択したアサーションの順序が下に移動します。

アサーションのオプション

選択したアサーションを削除します

アサーションのオプション

選択したアサーションを再構成/編集します。
  • 以下はPROバージョンでのみ利用可能な機能です。 SOAP UIPRO版では、アサーションをグループ化する機能も備えているため、作成したアサーションにさらに検証レイヤーを追加できます。
  • AND: すべてのアサーションは VALID アサーションとして評価され、グループ条件が PASSED になります。OR: グループ PASSED 条件をアサートするには、グループ内のアサーションの少なくとも XNUMX つが VALID である必要があります。

  • プロバージョンでも可能 アサーションの複製: このオプションを使用すると、テスターはアサーションを同じプロジェクトまたは別のプロジェクト内の別のテスト ステップにコピーできるようになります。
  • アサーションの無効化/有効化: このオプションを使用すると、グループ化されたアサーションまたはグループ化されていないアサーションを無効または有効にできます。アサーションが無効になっている場合はグレー表示され、テスト ケースが実行されても、無効なアサーションは実行されません。
  • アサーションのグループ解除: テスターが決定した場合は、グループ化されたアサーションをグループ解除できます。

さまざまなアサーション タイプで使用できるメソッドの完全なリスト

アサートメカニズム

詳細説明

プロパティのコンテンツ
含まれています 指定された文字列の存在を検索します。 正規表現もサポートしています。
含まない 指定した文字列が存在しないかを検索します。 正規表現もサポートしています。
XPath の一致 XPath 式を使用して、ターゲット ノードとその値を選択します。
XQueryの一致 Xquery 式を使用して、ターゲット プロパティからコンテンツを選択します。
コンプライアンス、ステータス、規格
HTTP すべてのリソースをダウンロード ダウンロード後に HTML ドキュメントを検証し、HTML を含むすべてのプロパティを保持します。
無効なHTTPステータス Codes HTML 応答に、定義されたコードのリストにないステータス コードが含まれているかどうかを確認します。
SOAP フォールトではない 最後に受信したメッセージが SOAP フォールトではないかどうかを検証します。 これが SOAP テスト ステップにのみ適用されることは明らかです。
スキーマのコンプライアンス 最後に受信したメッセージが WSDL または WADL 標準スキーマ定義に準拠しているかどうかを検証します。 SOAP および REST テスト ステップに適しています。
SOAP フォルト 最後に受信したメッセージが SOAP フォールトかどうかを確認します。 これは、「NOT SOAP」障害アサーションの逆です。
SOAP応答 最後に受信した応答が有効な SOAP 応答であるかどうかを検証し、SOAP テスト リクエスト ステップにのみ有効です。
有効なHTTPステータス Codes HTMLレスポンスに、定義済みのコードリストに含まれるステータスコードが含まれているかどうかを確認します。これは「無効なHTTPステータス」の逆です。 Codes'の主張。
WS アドレッシング要求 最後に受信したリクエストに適切な WS-Addressing ヘッダーが含まれているかどうかを確認します。
WS アドレス指定応答 最後に受信した応答に適切な WS-Addressing ヘッダーが含まれているかどうかを確認します。
WS-セキュリティステータス 最後に受信したメッセージに有効な WS-Security ヘッダーが含まれており、SOAP リクエストに対してのみ有効であるかどうかを検証します。
スクリプト
スクリプトアサーション ユーザーがカスタム スクリプトを実行してユーザー定義の検証を実行できるようにします。
SLA
応答SLA 最後に受信した応答の応答時間が定義された制限内であるかどうかを検証します。
JMS
JMSステータス テスト ステップの JMS リクエストが正常に実行され、JMS エンドポイントを使用したテスト ステップに対して良好な状態を維持しているかどうかを検証します。
JMSタイムアウト テスト ステップの JMS 応答に指定された期間を超えていないかどうかを検証します。
セキュリティ
機密情報の漏洩 応答メッセージがターゲット システムに関する機密情報を公開していないかどうかを確認します。 このアサーションは、REST、SOAP、および HTTP のテスト ステップに使用できます。

上記のアサーションを含む SOAPUI プロジェクトをダウンロードします

一般的なエラーとトラブルシューティング

正しい名前空間を使用してください。名前空間は URL ウェブサービスが設置されている場所。

開発中にエラーが発生した場合ping スクリプトのアサーションでは、「log.info」を使用して変数の内容を表示します。

目的の出力が得られなかった場合は、リクエストに有効な入力が渡​​されているかどうかを確認してください。

たとえば、通貨コンバータで、「intA」を整数ではない「x」として入力すると、出力では障害コード「SOAP-Client」がスローされます。これは、通貨コンバータから渡されるパラメータに問題があることを意味します。クライアント側。

一般的なエラーとトラブルシューティング

一般的なエラーとトラブルシューティング

XPATH および XQuery アサーションを使用するときは、正しい構文を使用していることを確認してください。 上記のアサーションを使用するときは、コロン(:) の代わりにドット(.) を使用しないでください。 構文は //namespace:Tagname であり、//namespace.tagname ではありません。 そうすると、タグ名が正しいにもかかわらず、「現在の応答には一致しません」というメッセージが表示される可能性があります。

一般的なエラーとトラブルシューティング