このセクションでは、Call Back ツールを構成して適用し、非同期サーバー レスポンスを待機することで、非同期テストをサポートする方法を説明します。
Call Back Tool とは
SOAtest は SCP (SOAP Conversation Protocol)、WS-Addressing、カスタム プロトコル、JMS、TIBCO、IBM MQ および SonicMQ などの非同期 HTTP のテストをサポートしています。Call Back ツールを構成すると、SOAtestはコール バック メッセージを処理するためのサーバーをセットアップします。サーバーはツール構成で指定されたキーを使用して受信メッセージを認識します。
Call Back Tool の構成
開始する前に、[SOAtest サーバー] ビューでローカル SOAtest サーバーが実行されていることを確認してください。ワークスペースに [SOAtest サーバー] ビューが表示されていない場合、[Parasoft] メニューの [ビューの表示] > [SOAtest サーバー] をクリックします。サーバーを起動するには、サーバーノードをクリックしてからパネルの右上隅にある開始アイコンをクリックするか、サーバーノードを右クリックして [サーバーの起動] を選択します。 ローカル SOAtest サーバーが実行中であることを確認したら、次の手順を実行します。
- SOAP Client ツールから SOAP の呼び出しが行われていることを確認します。
- メインのテスト スイート ノードを右クリックし、[新規追加] > [テスト] を選択します。[テストの追加] ウィザードが表示されます。
- [テストの追加] ウィザードで [標準テスト] > [Call Back] ツールを選択し、[終了] をクリックします。テスト スイートに Call Back ツール ノードが表示されます。
- [Call Back ツール] テスト ノードをダブルクリックします。ワークスペースで Call Back ツールが開きます。
- [名前] フィールドにテストの名前を入力します。
- プロジェクト内にコールバック値として使用したいパラメータを含むデータ ソースがある場合は、[データ ソース] メニューからそれを選択します。プロジェクト内にデータ ソースがない場合、このオプションは表示されません。
- [タイムアウト (秒)] フィールドに、SOAtest がリクエストをタイムアウトと判断するまでの遅延時間 (秒単位) を指定します。
- [プロトコル] メニューから、使用する非同期プロトコルを選択します。使用可能なオプションの一部は、HTTP プロトコルに固有のユースケースであることに注意してください (例:SCP や WS-Addressing)。ツールの残りの設定は、選択したプロトコルに応じて異なります。
- カスタム: HTTP 経由のカスタム メッセージ応答条件の場合に選択します。Call Back ツールは、指定された XPath が指す要素のテキスト値と一致するコール バック URL のメッセージを処理します。たとえば、次のようなメッセージがあるとします:
<root><id>2</id><name>Java</name></root>
値が 2 の /root/idという XPath を定義できます。XPath はid要素を選択します。Call Back ツールはテキスト コンテンツが指定された値 2 に一致するかをチェックします。Call Back ツールは、id要素のテキスト値が異なる受信メッセージを取得しません。
選択すると、[コールバック URL] フィールドに Call Back ツールのサーバーの場所が表示されます。[追加] をクリックして (ビューが[テーブル]に設定されている場合)、または直接 (ビューが [リテラル] に設定されている場合) XPath/値のキーセットを入力します。 - IBM MQ: IBM MQ プロトコルの場合に指定します。選択した場合、関連する設定の詳細については、「IBM MQ」を参照してください。
- JMS: JMS プロトコルの場合に指定します。選択した場合、関連する設定の詳細については、「JMS オプションを Call Back Tool のために設定」を参照してください。
- 応答条件なし: http://localhost:9080/servlet/NoCorrelationCallBackHandler の最初のメッセージを使用する場合に選択します。この「プロトコル」を選択し、指定された場所にメッセージがない場合、テストはタイムアウト時に失敗します。
- OAuth 2.0: OAuth 2.0 プロトコルの場合に指定します。[コールバック URL] フィールドに Call Back ツールのサーバーの場所が表示されます。認可サーバーのログイン ページの元の URL に、パラメーターの応答条件を入力します。
- このオプションの主な用途は、Call Back ツールをログイン テスト スイートの一部として組み込むことです。このテスト スイートでは、ユーザーが Web ブラウザーで認可サーバーのログイン ページに移動してログイン認証情報を入力すると、結果として得られる認可コードと共にアプリケーション (この場合は SOAtest) にリダイレクトされます。Call Back URL には、ログイン ページに移動するときに、
redirect_uriクエリー パラメータに使用する URL が表示されます。ログイン後、認可サーバーはユーザーのブラウザーをこの URL にリダイレクトしますが、クエリー パラメータstateとcodeが追加されます。Call Back ツールは、stateパラメータの値に基づいて相関するように設定する必要があります。この値は、認可サーバーのログイン ページの元の URL にあったstateパラメータの値と一致する必要があります。codeは、REST URL データ バンクをツールの [受信リクエスト] > [トランスポート ヘッダー] 出力に連結することで抽出できます。この種のログイン テスト スイートの設定の詳細については、「OAuth 認証」を参照してください。
- このオプションの主な用途は、Call Back ツールをログイン テスト スイートの一部として組み込むことです。このテスト スイートでは、ユーザーが Web ブラウザーで認可サーバーのログイン ページに移動してログイン認証情報を入力すると、結果として得られる認可コードと共にアプリケーション (この場合は SOAtest) にリダイレクトされます。Call Back URL には、ログイン ページに移動するときに、
- SonicMQ: SonicMQ プロトコルの場合に指定します。選択した場合、関連する設定の詳細については、「SonicMQ トランスポート」を参照してください。
- SCP: HTTP 経由で SCP を使用する場合に選択します。選択すると、[コールバック URL] フィールドに Call Back ツールのサーバーの場所が表示されます。キーセットをダブルクリックして、コールバック メッセージの値を入力します (キーは自動的に
conversationIDに設定されます)。 - TIBCO: TIBCO プロトコルの場合に指定します。選択した場合、関連する設定の詳細については、「Configuring TIBCO options for the Call Back Tool」を参照してください。
- WS-Addressing: HTTP 経由で WS-Addressing を使用する場合に選択します。選択すると、[コールバック URL] フィールドに Call Back ツールのサーバーの場所が表示されます。キーセットをダブルクリックして、コールバック メッセージの値を入力します (キーは自動的に
MessageIDに設定されます)。
- カスタム: HTTP 経由のカスタム メッセージ応答条件の場合に選択します。Call Back ツールは、指定された XPath が指す要素のテキスト値と一致するコール バック URL のメッセージを処理します。たとえば、次のようなメッセージがあるとします:
- 変更を保存します。
- [Call Back ツール] テスト ノードを右クリックして [出力の追加] をクリックします。[出力の追加] ウィザードが表示されます。
- [出力の追加] ウィザードで適切なツールを選択し、サーバーからのコール バック メッセージに対する出力を作成します。たとえば、サーバーからのコール バック メッセージに対して回帰コントロールを作成するには、Diff ツールを選択します。
TIBCO オプションを Call Back Tool のために設定
Call Back ツールのプロトコルとして TIBCO が選択された場合、ツールの構成パネル下部に [TIBCO プロパティ] パネルが表示されます。SOAtest はローカルまたはリモートの TIBCO DAEMON を監視できます。つまり、バス デーモンはローカルマシンで実行されていても、他の場所で実行されていても構いません。次のオプションが利用可能です。
- タイムアウト: 指定された [返信件名] 値でメッセージが利用可能になるのを SOAtest が待機する時間を表します。
- デーモン: サーバー名またはサーバーの IP アドレスの後にコロン (:) およびポート番号を指定します (例:
10.10.32.34:7500またはhost_name:7500)。 - ネットワーク: トランスポート オブジェクトがあるネットワークを指定します。 ネットワーク パラメーターは、セミコロン (;) で区切られた
network; multicast groups; send addressという形式の最大 3 つの部分で構成されます (例:lan0; 224.1.1.1; 244.1.1.6)。詳細については、TIBCO Rendezvous マニュアルの Network Selection セクションを参照してください。 - サービス: TIBCO のサービス名を指定します。
いずれかのプログラミング言語を使用して TIBCO メッセージを生成し、アクセスする場合、名前付きのフィールドの下にコンテンツを入れることができます。コンテンツ (SOAP メッセージ、XML、テキストなど) は、TIBCO メッセージ「フィールド」の下に配置する必要があります。メッセージから目的のコンテンツを取得するには、[返信フィールド名] を指定する必要があります。フィールド名は、TIBCO メッセージを生成するアプリケーションによって決定されるため、目的のフィールドが何であるかを確認するには、アプリケーションが使用するフィールド名がわかっていなければなりません (フィールド名が不明な場合、TIBCO メッセージを送信するアプリケーションのソース コードを確認すると、フィールド名が含まれているでしょう)。
[メッセージ送信] フィールドは、Call Back ツールがバス上で探すメッセージのタイプを指定します。これは、メッセージの送信者によって決定される送信タイプに相当します。
フィールド名に関する詳細な情報は、次の TIBCO Rendezvous マニュアルに記載されています: [TIBCO Rendezvous Concepts] > [Fundamentals] > [Messages and Data] > [Fields]
返信件名フィールドおよびその TIBCO における意味に関する詳細については、次の TIBCO Rendezvous マニュアルを参照してください: [TIBCO Rendezvous Concepts] > [Fundamentals] > [Names and Subject-Based Addressing]
JMS オプションを Call Back Tool のために設定
Call Back ツールのプロトコルとして JMS が選択された場合、ツールの構成パネル下部に [JMS プロパティ] パネルが表示されます。以下のオプションを使用できます。次のオプションが利用可能です。
接続設定
[接続設定] は、 [JNDI 初期コンテキスト] の [設定] および [プロパティ] タブを含みます。
[プロパティ] タブはオプションであり、(プロバイダー URL および [設定] タブで指定された初期コンテキスト ファクトリのプロパティに加えて) JNDI javax.naming.InitalContext コンストラクターに渡される追加のプロパティを指定することができます。[追加] をクリックし、 [JMS プロパティの追加] ダイアログを完了することによって追加できるプロパティの値は、固定値、パラメータライズ値、スクリプトを使用した値、または固有値 (2 つのツールの呼び出しが同じ値を使用しないような、自動的に生成されるランダムな一意の値) に設定することができます。
[設定] タブには次の内容が含まれます。
- JMS 接続の共有プロパティが作成済みの場合、メニューが表示され、[ローカルの設定を使用] または [共有プロパティを使用] を選択できます。
- [共有プロパティを使用] を選択した場合、2 つ目のメニューが表示され、SOAP Client ツールが使用するグローバル JMS 設定を選択できます。グローバル JMS 設定の詳細については、「グローバル JMS 接続プロパティ」を参照してください。
- [ローカルの設定を使用] を選択した場合、または共有プロパティが作成済みではない場合、[接続設定] の残りのオプションを構成します。
- プロバイダー URL: JNDI javax.naming.InitialContext コンストラクターに渡される javax.naming.Context.PROVIDER_URL プロパティの値を指定します。
- 初期コンテキスト: javax.naming.Context.INITIAL_CONTEXT_FACTORY プロパティの文字列の値として JNDI javax.naming.InitialContext コンストラクターに渡される完全修飾クラス名の文字列を指定します。
- 接続ファクトリ: ファクトリの JNDI 名を指定します。これは、javax.jms.QueueConnectionFactory または javax.jms.TopicConnectionFactory インスタンスを生成するために javax.naming.InitialContext の lookup() メソッドに渡されます。
[接続設定] には、[設定] タブに加えて以下のオプションがあります。
- キューまたはトピック接続の認証: キュー接続の確立にユーザーがユーザー名とパスワードを提供することを可能にします。リクエストを認証するには、[認証の実行] を有効にし、[ユーザー名] および [パスワード] を入力します。不正なユーザー名とパスワードが使用された場合、リクエストは認証されません。ここで提供されたユーザー名とパスワードは javax.jms.QueueConnection のインスタンスを取得するために、javax.jms.QueueConnectionFactory クラスの createQueueConnection() メソッドに渡されます。
キュー/トピック
[キュー/トピック] 設定には以下のオプションがあります。
- JMS アドレス: メッセージが送信されるキュー名 (ポイント ツー ポイント接続の場合) またはトピック名 (パブリッシュ/サブスクライブ接続の場合) を指定します。
メッセージング モデル
メッセージング モデル オプションは、アプリケーション間でどのようにメッセージが送信されるかを指定します。[ポイント ツー ポイント] または [パブリッシュ/サブスクライブ] を選択します。
受信メッセージ応答条件
受信メッセージ応答条件設定には、以下のオプションがあります。
- レスポンスの JMSCorrelationID とリクエストの JMSCorrelationID を照合: 選択した場合、 条件 JMSCorrelationID = '[correlationId]' がセレクター式に追加されます。 correlationId はメッセージ プロパティ セクションの JMSCorrelationID プロパティから取得されます。オプションは、そのようなプロパティがメッセージ プロパティ セクションに追加される場合にだけ利用できます。このオプションを選択すると、結果として、指定した相関 Id を持つメッセージがキュー (またはトピック) で利用可能になるまで、テストがブロックされた状態になります。また、キュー (またはトピック) 内のどのメッセージでも取得するのではなく、特定のメッセージだけを取得します。テストは、タイムアウト時間が経過しても、セレクター条件に一致するメッセージがない場合はタイムアウトします。
- 条件は、固定値、パラメータライズ値 (データ ソースからの値)、またはスクリプト値を使用して指定できます。
- その他のセレクター式の条件: (任意) メッセージ フィルターとして機能する値を入力します。セレクターの指定に関するヒントは、 「メッセージ セレクター フィルターの使用」を参照してください。

