Message Stub は SOAP Client を補足するツールであり、サービスをエミュレートするために使用します。このツールは、単一のメッセージを返すことでサービスをスタブ化します。スタブ ライセンスが有効な場合、Message Stub ツールは複数のメッセージに応答でき、またサービス定義内に定義された操作に対して自動生成できます。

このセクションの内容: 

Message Stub ツールとは

Message Stub ツールは、エンドツーエンド シナリオの一部として呼び出すことができます。SOAtest のローカル サーバーは、テスト シーケンスの一部として Message Stub テスト ステップが呼び出されると、メッセージの監視を開始します。Message Stub はメッセージを受信し、Message Stub ツールの構成で設定された方法で応答します。この処理が終了すると、テスト シナリオの次のテストが実行されます。

Message Stub ツールをエンドツーエンド テスト シナリオに統合し、テスト スイート実行フローの任意の時点で呼び出したり、他のテスト アクションをトリガーできます。

たとえば、ローン承認サービスの検証を例にとります。このサービスが、マネージャー承認サービスや外部の信用格付けサービスの呼び出しなどを含む複数のステップからなるビジネス プロセス ワークフローを実行する場合、次のテストで構成されるシナリオを構築できます。

これらのスタブは、データ ソースの値でパラメータライズできます。 

アプリケーションが実際のリソースではなくスタブと通信するようにしたい場合、スタブにアクセスするようアプリケーションを構成します。スタブは http://<localhost>:9080/servlet/MessageHandler にデプロイされます。この方法で作成およびデプロイされたすべてのスタブは、同じ URL を持つことに注意してください。これが可能であるのは、Message Stub は、テスト スイートのロジックに従って、1 回に 1 つずつ呼び出されるからです。

Message Stub ツールに Traffic Viewer ツールを連結すると、Message Stub ツールの振る舞いを可視化することができます。

サービス定義オプション

[定義] タブのオプションを指定すると、レスポンス メッセージの指定を容易にするアイテムが [レスポンス] タブに自動的に表示されます。期待されるリクエストおよび送信レスポンスを定義するサービス定義またはスキーマに関する以下のオプションを指定できます。

レスポンス オプション

[レスポンス] タブでは、特定のリクエストを受信したとき、エミュレートされたアセットが返すレスポンス値を構成します。 

使用できるオプションは、[ビュー] メニューで選択されたオプションに応じて異なります。

リテラル XML、 フォーム XML、 スクリプト XML、 フォーム入力ビュー

[リテラル XML]、[フォーム XML]、[スクリプト XML]、[フォーム入力] ビューに対して表示されるオプションは、SOAP Client ツールで表示されるものと似ています。 

[フォーム入力] ビューまたは [フォーム JSON] ビューでリソース セレクターが有効な場合、リソース セレクターを使用してレスポンスのリソースを選択できます。リソースを選択すると、フォーム入力/JSON ビューに適切な値および UI コントロールが設定されます (たとえば、ブーリアン値に対してはラジオ ボタン、数値または整数に対しては適切なコントロール、列挙型に対してはドロップダウンなど)。 

複数レスポンス ビュー

[複数レスポンス] ビューでは、特定のリクエストに対して使用するレスポンスを指定します。 

[条件] タブでは、レスポンスを送信するためにリクエストが満たす必要のある条件を指定します。XPath 関数および/または RESTful サービスの URL パラメーター (デフォルトでは GET および POST がサポートされています) を使用して条件を指定します。[メッセージ] タブでは条件を満たしたときに送信するレスポンスを指定します。

 以下の場合に [常に一致] オプションを有効にします。

  • 受信メッセージのコンテンツにかかわらず、常に返される単一のレスポンスを設定する場合
  • 複数のレスポンスがあり、スタブが返す最終的なレスポンスを指定する場合。この場合、指定されたレスポンスは、それまでの条件に一致しなかったすべてのリクエストに対する最終的なレスポンスの働きをします。たとえば、「常に一致」レスポンスを指定すると、サービスがリクエストを処理して受信した値に基づいたレスポンスを返すことができなかったことを示す SOAP エラーを返すことができます。

複数の XPath または URL パラメーターが一致する場合、SOAtest はリストで最初に一致したレスポンス ([上へ] または [下へ] ボタンを使用してレスポンスの順序を指定します) を返します。各レスポンスに指定された XPath または URL パラメーターがそれぞれ 1 つのリクエストに一致する場合、レスポンスの順序は関係ありません。 

スクリプト XML ビュー

[スクリプト XML] ビューでは、複雑なロジックを指定できます。詳細については「Using Scripted Logic」を参照してください。

トランスポート ヘッダー オプション

[トランスポート ヘッダー] タブでは、HTTP、JMS、または MQ メッセージのヘッダー プロパティを指定できます。

テスト応答条件オプション

[テスト応答条件] タブでは、この Message Stub ツール/テストが受け入れて処理するメッセージを指定します。スタブ URL に送信されるさまざまなメッセージは、ここでの設定に基づいて特定の Message Stub ツールに振り分けられます。たとえば、ある Message Stub ツールは顧客登録メッセージに応答し、別の Message Stub ツールは支払いメッセージに応答し、また別の Message Stub ツールは他のスタブの条件に一致しないときに使用されるデフォルトの「最終条件」として機能します。

以下の [テスト応答条件] タブ エリアで値を入力し、Message Stub が受け入れるメッセージを指定します。

1 つのタイプの応答条件を指定することも、複数のタイプの応答条件を指定することも、あるいは応答条件を指定しないこともできます。応答条件が指定されていない場合、メッセージ内のすべてが処理されます。 

 カスタム テスト応答条件は、カスタム メソッドの戻り値に基づきます。要件:

  • メソッドは 0 個または 1 個の引数を取る。
  • 任意引数は com.parasoft.api.ScriptingContext 型である。
  • メソッドは ScriptingContext オブジェクトを使用して受信メッセージのトランスポート ヘッダー、URL パラメーター、およびメッセージのコンテンツにアクセスできる。

CorrelationScriptingHookConstants の Javadoc により詳しい情報が記載されています ([Parasoft] > [ヘルプ] をクリックし、「Parasoft SOAtest Extensibility API」というブックを探します)。

たとえば、正規表現に基づいてプレーン テキストのメッセージをテストする場合、次のコードを使用できます。

 from com.parasoft.api import CorrelationScriptingHookConstants  
 from java.lang import *
 def match(context):
   strMessage = context.get(CorrelationScriptingHookConstants.MESSAGE_STR)   
   return String(strMessage).matches("myRegularExpression")

XML メッセージの要素をテストする場合、次のコードを使用できます。

from com.parasoft.api import CorrelationScriptingHookConstants from org.w3c.dom import *
from javax.xml.parsers import *
from javax.xml.xpath import *
from java.io import *
from java.lang import *
def match(context):
  xmlDocument = context.get(CorrelationScriptingHookConstants.MESSAGE_DOM)   
  if xmlDocument != None:
    xPathFactory = XPathFactory.newInstance();
    xpath = xPathFactory.newXPath()
    expression = xpath.compile("//*[local-name(.)='someElement' and namespace-uri(.)='someNamespace'][1]/text()")
    elementValue = expression.evaluate(xmlDocument)
    return String(elementValue).matches("myRegularExpression")
  return 0

トランスポート応答条件

トランスポート応答条件を構成するには、次の操作を行います。

  1. [応答条件の有効化] チェック ボックスをオンにします。
  2. [追加] をクリックします。新しいエントリ行が表示されます。
  3. 指定するメッセージ応答条件の [名前] および [値] を入力します。

リクエスト ボディ応答条件

リクエスト ボディ応答条件を構成するには、次の操作を行います。

  1. [応答条件の有効化] チェック ボックスをオンにします。
  2. [編集] ボタンをクリックします。[XPath 関数の編集] ダイアログが表示されます。
  3. 要素ツリーから要素を選択し、[関数] ドロップダウン メニューから関数を選択して [OK] をクリックします。

URL パラメーター応答条件

URL パラメーター応答条件を構成するには、次の操作を行います。

  1. [応答条件の有効化] チェック ボックスをオンにします。
  2. [追加] をクリックします。新しいエントリ行が表示されます。
  3. 指定する応答条件の [パラメーター名] および [値] を入力します。

データ ソース応答条件オプション

[データ ソース応答条件] タブでは、スタブの応答で使用するデータ ソース行の値を指定できます。

利点

[複数レスポンス] モードのスタブを構成する 1 つの方法は、手動で Message Stub ツールを構成し、受信メッセージの性質に基づいて異なるレスポンス メッセージを送信することです。 

適切なメッセージを使用して動的に応答するようスタブを構成するもう 1 つの方法は、データ ソースを使用することです。データ ソースの表 ( Excel など)に簡単に値を入力できます。データ ソースの各行には、スタブが応答する受信メッセージの値 (通常はリーフノードの値) が含まれ、別の列には、指定された条件を満たすときにスタブがどのように応答するかを指定します (詳細については「レスポンスのために既存のデータ ソースを使用またはデータ ソースをすばやく作成」を参照)。その後、リクエスト メッセージおよびレスポンス メッセージの値とデータ ソースの列のマッピングを構成します。  

これによって、編集しやすい表 (データ ソース) で簡単にリクエスト/レスポンスのユース ケースを構成でき、メッセージの数が増えたときにも対応可能な方法で管理することができ、またより柔軟にレスポンス メッセージを処理できます (なぜなら、フォーム入力では一部の値を固定し、他の値をパラメーターライズし、自動の値やスクリプト化された値も使用することができるからです)。

データ ソース応答条件は、非常に柔軟です。単なる比較/応答条件を超えたルールやロジックを使用して受信リクエスト値に応答するスタブを構成できます。たとえば、クレジット カード番号の下 4 桁を評価したり、数値が特定の値未満または特定の値を超えるかを評価したり、その他のパターンや式を評価できます。 

値の比較はワイルドカード * および ? をサポートしています。たとえば、"title keyword" という受信値に Linux という単語が含まれている場合にデータ ソースの行と一致させたい場合、データ ソースの値として "*Linux*" を指定できます。* はゼロ個以上の文字に一致し、? は 1 個の文字に一致します。

設定

データ ソースの値でスタブ レスポンスをパラメータライズするには、次の操作を行います。

  1. Message Stub で使用するデータ ソースが SOAtest に存在していることを確認します。
  2. [データ ソース応答条件] タブの適切な部分で [追加] ボタンをクリックし、XPath または URL パラメーターを指定し、適切な列名を選択します。デプロイされたスタブが実行されると、SOAtest はリクエストから指定された値を抽出し、指定された列を検索して抽出値と一致するものを探します。一致するデータが見つかった場合、該当するデータ ソース行のデータを使用してレスポンスに値が設定されます。
  3. (フォーム入力、フォーム XML などと) 同じデータ ソースの別の列を参照し、Message Stub の [レスポンス] エリアをパラメータライズします。列名マッピングに複数の XPath または URL パラメーターを追加できます。

処理の詳細

テスト スイート内で、またはホストされたスタブとして Message Stub が実行されると、受信メッセージはこれらの XPath 式/URL パラメーターによって評価されます。値と対応するデータ ソース値 (それぞれに対応する列) が比較され、値が一致する行が検索されます。 

一連の比較によって、各値をデータ ソースの行と比較します。比較が終了しても一致するものが見つからなかった場合、データ ソースの次の行に移動します。どの行とも一致しなかった場合、エラーが返されます。  

比較は次の順序で行われます。

  1. 文字列全体/リテラル文字列の比較
  2. ゼロ個以上の文字を表すワイルドカード * の比較。たとえば Linux*は、"Linux"、"Linux Administration"、"Linux Administration Handbook" などの値に一致します。
  3. データ ソースの値を正規表現として処理して比較します。たとえば、abc-\d{3}-123 は abc-576-123、abc-000-123 などの受信値と一致します (中間部は 3 桁の任意の数値)。
  4. データ ソースの値と受信値を数値として評価して比較します。たとえば、10 は 10.0 と一致します。
  5. 受信値を数値とみなし、データ ソース セルの値を先頭に比較演算子が付いた数値として比較します。使用できる演算子は <、>、<=、>=、!= または <> です。たとえば、データ ソースの値が <=14.99 の場合、14.99 以下の受信値と一致します。

データ ソースの行は、Message Stub のデータ ソース応答条件リストで指定されたすべての値が一致したときに一致とみなされます。

一致する行が見つかった場合、その行を使用して Message Stub のレスポンス メッセージのパラメータライズされた値が設定されます。このようにして、スタブは受信メッセージの値に基づいて目的のメッセージ値を返すことができます。 

アタッチメント オプション

[アタッチメント] タブでは、スクリプトを記述せずにバイナリまたは XML のアタッチメントを送信できます。アタッチメントを送信するには、次の操作を行います。

  1. [追加] をクリックします。[アタッチメント テーブル] に XML アタッチメント エントリが追加されます。
  2. XML アタッチメント エントリをダブルクリックします。[添付ファイルの編集] ダイアログが開きます。[編集] ダイアログが表示されます。
  3. [添付ファイルの編集] ダイアログで、 [モード] ドロップダウン リストから XML または バイナリを選択します。

XML モードでは次のオプションが利用できます。

バイナリ モードでは次のオプションが利用できます。

サービス オプション

[サービス オプション] タブでは、メッセージの処理方法を構成します。次のオプションが利用可能です。

カスタム ヘッダーの追加

カスタム ヘッダーを追加するには、次の操作を行います。

  1. [サービス オプション] タブで [追加] ボタンをクリックします。ダイアログが開きます。
  2. 指定するメッセージ応答条件の [名前] および [値] を入力します。
  3. [OK] をクリックします。

レスポンスのために既存のデータ ソースを使用またはデータ ソースをすばやく作成

データ ソースにレスポンス値を定義すると、大量のリクエスト/レスポンスのペアを効率的に追加できます。

既存のデータ ソースの使用

リクエスト パラメーターおよび対応するレスポンス パラメーターの値が定義されたデータ ソースが既に存在する場合、次の操作を行って、それらの値を使用できます。

  1. SOAtest にデータ ソースを追加します。
  2. Message Stub のデータ ソース マッピングを構成し、適切なリクエスト列を指定します(「Data Source Correlation Options」の説明を参照)。

データ ソースをすばやく作成する

使用可能なデータ ソースがまだ存在していないが、複数のリクエスト/レスポンスのセットをすばやく指定したい場合、次の操作を行います。

  1. メッセージ要素にデータ投入するためのデータ ソース テンプレートを生成」の手順に従って、Message Stub ツールのフォーム入力ビューから CSV ファイルを作成します。データ ソースが生成され、テスト スイートに追加されます。この生成されたデータ ソースには、レスポンスの列が含まれています。Message Stub ツールのフォーム入力ビューは、自動的にパラメータライズされます。
  2. レスポンスを決定するために使用する必要があるリクエスト パラメーターの分だけデータ ソースに新しい列を追加します (Excel、OpenOffice などのスプレッドシート アプリケーションを使用して)。ワイルドカードを使用できます。
  3. 追加した新しいリクエスト列を使用して Message Stub のデータ ソース マッピングを構成します。詳細については、「Data Source Correlation Options」 を参照してください。
  4. データ ソースに新しい行を追加し (Excel、OpenOffice などのスプレッドシート アプリケーションを使用)、リクエスト パラメーターおよび対応するレスポンス パラメーターに値を指定します 。

スクリプト化されたロジックの使用

スクリプトを使用して、受信リクエストに基づいてレスポンスの値を記述できます。これによって、スタブでより複雑なロジックを使用できます。さらに、Message Stub では、スクリプトからデータ ソースの値にアクセスできます。データ ソースの値へのアクセス方法は、Extension ツールからアクセスする場合と似ています。

以下は、Message Stub ツールでスクリプト化されたロジックを使用する手順の例です。

  1. Message Stub ツールの [定義] タブでサービス定義を入力します。
  2. [Message Stub] ノードを右クリックし、[出力の追加] をクリックします。[出力の追加] ウィザードが表示されます。
  3. [出力の追加] ウィザードの左側のペインで [受信リクエスト] を選択し、右側のペインで [XML Data Bank] を選択して [終了] をクリックします。
  4. [Message Stub] ノードの下の [受信リクエスト] > [XML Data Bank] ノードをダブルクリックします。GUI 右側のパネルに XML Data Bank ツールの構成パネルが表示されます。
  5. GUI 右側のパネルで、スクリプトからアクセスする値の XPath を追加します。



  6. [Message Stub] ノードをダブルクリックします。GUI 右側のパネルに Message Stub ツールの構成パネルが表示されます。
  7. [レスポンス] タブで [スクリプト] ビューを選択します。
  8. [データ ソースの使用] オプションをオンにします。



  9. ロジックを入力します。次のコードは、データ ソースおよびデータ バンクの値にアクセスするための基本的なテンプレートです。

    def customLogic(context):
        # Retrieve the data source value. "Data Source Name" should be replaced
        # with the name of your data source and "Column Name" should be the column
        # that your value is coming from. You can access many columns from the same
        # data source within this script. For Data Bank values, the table is always
        # named "Generated Data Source" so you only need to replace "Data Bank Column Name"     
        dataSourceValue = context.getValue("Data Source Name", "Column Name")     
        dataBankValue = context.getValue("Generated Data Source", "Data Bank Column Name")     
        # add custom logic that uses value from data source




  10. [メソッド] コンボ ボックスから適切なメソッドを選択します。選択するメソッドは、エントリ ポイントでなければなりません。上記の例では、 customLogic() メソッドを選択します。

アタッチメント ハンドラーを Message Stub に追加

Message Stub に Attachment Handler ツールを追加すると、メッセージの添付ファイルを送信する際に、添付ファイルの処理をテストするのに便利な場合があります。Message Stub に Attachment Handler を追加するには、次の操作を行います。

  1. Message Stub のノードを選択し、[テストまたは出力の追加] ボタンをクリックします。[出力の追加] ウィザードが表示されます。
  2. [出力の追加] ウィザードの左側のペインで [受信リクエスト] を選択し、右側のペインで [Attachment Handler] を選択して [終了] をクリックします。
  3. [Attachment Handler] ノードをダブルクリックし、ツール構成パネルでツールの構成を行います。
  4. (任意) Message Stub ノードの下の [Attachment Handler] ノードを選択し、[テストまたは出力の追加] ボタンをクリックします。[出力の追加] ウィザードが表示されたら、添付ファイルをバイナリ ファイルとして書き出すために Write File ツールを追加できます。