プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle SOA SuiteでのSOAアプリケーションの開発
12c (12.1.3)
E53007-05
目次へ移動
目次

前
次

50 SOAコンポジット・アプリケーションのテストの自動化

この章では、SOAコンポジット・アプリケーションのテストを自動化するテスト・ケースの作成、デプロイおよび実行方法について説明します。SOAコンポジット・アプリケーションに含まれているBPELプロセス・サービス・コンポーネントをテストするためのテスト・ケースを作成することもできます。テスト・ケースを使用すると、本番環境へのデプロイメントの前に、SOAコンポジット・アプリケーションとWebサービス・パートナ間の相互作用をシミュレートできます。これにより、本番環境へのデプロイメント準備が完了するときに、プロセスとWebサービス・パートナの相互作用が期待どおりであるかを確認できます。

この章の内容は次のとおりです。

50.1 コンポジット・テスト・フレームワークの概要

Oracle SOA Suiteには、SOAコンポジット・アプリケーションに対して反復可能なテストを作成して実行するための、自動化されたテスト・スイート・フレームワークが用意されています。

テスト・スイート・フレームワークの機能は、次のとおりです。

  • Webサービス・パートナの相互作用のシミュレート

  • テスト・データによるプロセス・アクションの検証

  • テスト結果のレポートの作成

50.1.1 テスト・ケースの概要

テスト・フレームワークは、SOAコンポジット・アプリケーション・レベルでのテストをサポートしています。このタイプのテストでは、ワイヤ、サービス・バインディング・コンポーネント、サービス・コンポーネント(BPELプロセスやOracle Mediatorのサービス・コンポーネントなど)、および参照バインディング・コンポーネントがテストされます。

詳細は、「コンポジット・テストの作成ウィザードを使用したテスト・スイートとテスト・ケースの作成」を参照してください。

50.1.2 テスト・スイートの概要

テスト・スイートは、1つ以上のテスト・ケースの論理的な集合で構成されます。各テスト・ケースには、テスト・インスタンスの実行時に実行される一連のコマンドが含まれています。テスト・スイートの実行は、テスト実行と呼ばれます。各テストは、単一のSOAコンポジット・アプリケーション・インスタンスに対応しています。

詳細は、次を参照してください。

50.1.3 エミュレーションの概要

エミュレーションにより、SOAコンポジット・アプリケーションが実行中に相互作用する次のコンポーネントの動作をシミュレートできます。

  • コンポジット内部の内部サービス・コンポーネント

  • コンポジット外部のバインディング・コンポーネント

別のサービス・コンポーネントまたはバインディング・コンポーネントを起動せずに、コンポーネントまたは参照からのレスポンスを指定できます。

詳細は、次を参照してください。

50.1.4 アサーションの概要

アサーションにより、変数データやプロセス・フローを検証できます。次のタイプのアサーションを実行できます。

  • XML文書全体のアサーション

    XML文書全体の要素値を予想される要素値と比較します。たとえば、融資申請のXML文書全体の内容を別の文書と正確に比較します。XMLUnitパッケージ内のXMLTestCaseクラスには、XMLファイル間でアサーションを実行するための一連のメソッドが含まれています。これらのメソッドの詳細は、次のURLを参照してください。

    http://xmlunit.sourceforge.net
    
  • メッセージのパート・セクションのアサート

    メッセージのパート・セクションの値を予想値と比較します。例として、XML文書メッセージ全体のペイロード・パートなどがあります。

  • 非リーフ要素のアサーション

    XMLフラグメントの値を予想値と比較します。例として、リーフ要素のSSN、email、customerNameおよびloanAmountが記載された融資申請があります。

  • リーフ要素のアサーション

    選択した文字列要素や数値要素の値、または正規表現パターンを予想値と比較します。例として、融資申請のSSNがあります。

アサートの詳細は、「アサーション」を参照してください。

50.2 テスト・スイートのコンポーネントの概要

この項では、テスト・ケースを構成するテスト・コンポーネントについて例をあげて説明します。これらのテストを作成してプロセスにインポートする方法についてはこの章で後述します。

50.2.1 プロセスの開始

最初に、SOAP Webサービスなどのバインディング・コンポーネント・サービスにおけるプロセスの操作を定義します。次の例では、TestFwk SOAコンポジット・アプリケーションを開始するinitiateの操作を定義しています。また、開始ペイロードも定義されています。

<?xml version="1.0" encoding="UTF-8" ?>
<!-- Generated by Oracle SCA Test Modeler version 1.0 at [6/13/07 10:50 AM]. -->
<compositeTest compositeDN="TestFwk"
 xmlns="http://xmlns.oracle.com/sca/2006/test">
  <about></about>
  <initiate serviceName="client" operation="initiate" isAsync="true">
    <message>
      <part partName="payload">
        <content>
          <loanApplication xmlns="http://www.autoloan.com/ns/autoloan">
            <SSN>111222333</SSN>
            <email>joe.smith@example.com</email>
            <customerName>Joe Smith</customerName>
            <loanAmount>20000</loanAmount>
            <carModel>Camry</carModel>
            <carYear>2007</carYear>
            <creditRating>800</creditRating>
          </loanApplication>
        </content>
      </part>
    </message>
  </initiate>
</compositeTest>

50.2.2 エミュレーション

エミュレーションを作成して、SOAコンポジット・アプリケーションがWebサービス・パートナから受け取るメッセージ・データをシミュレートします。

次の例のテスト・コードでは、エラーのある融資申請が開始されます。Webサービス・パートナから返信のフォルト・メッセージを受け取ります。

<?xml version="1.0" encoding="UTF-8" ?>
<!-- Generated by Oracle SCA Test Modeler version 1.0 at [7/3/07 3:29 PM]. -->
<compositeTest compositeDN="CompositeTest"
 xmlns="http://xmlns.oracle.com/sca/2006/test">
  <about></about>
  <initiate serviceName="client" operation="initiate" isAsync="true">
    <message>
      <part partName="payload">
        <filePath>loanApplication.xml</filePath>
      </part>
    </message>
  </initiate>
  <wireActions wireSource="LoanBroker/CreditRatingService" operation="process">
    <emulate duration="PT0S">
      <fault faultName="ser:NegativeCredit" xmlns:ser="http://services.otn.com">
        <message>
          <part partName="payload">
            <filePath>creditRatingFault.xml</filePath>
          </part>
        </message>
      </fault>
    </emulate>
  </wireActions>
</compositeTest>

このエミュレーションでは、loanApplication.xmlcreditRatingFault.xmlの2つのメッセージ・ファイルが起動します。loanApplication.xmlの融資申請に0で始まる社会保障番号が記載されている場合、creditRatingFault.xmlファイルは次の例に示すフォルト・メッセージを返します。

<error xmlns="http://services.otn.com">
  Invalid SSN, SSN cannot start with digit '0'.
</error>

詳細は、「SOAコンポジット・エディタのテスト・モードによるテスト・ケースのコンテンツの編集」を参照してください。

50.2.3 アサーション

アサーションを作成し、SOAコンポジット・アプリケーション実行中の特定時点で、XML文書全体、メッセージのパート・セクション、非リーフ要素またはリーフ要素を検証します。次の例は、customerName変数の内容を指定した内容と一致させるようにOracle SOA Suiteに指示するものです。

<?xml version="1.0" encoding="UTF-8" ?>
<!-- Generated by Oracle SCA Test Modeler version 1.0 at [6/13/07 10:51 AM]. -->
<compositeTest compositeDN="TestFwk"
 xmlns="http://xmlns.oracle.com/sca/2006/test">
  <about></about>
  <initiate serviceName="client" operation="initiate" isAsync="true">
    <message>
      <part partName="payload">
        <content>
          <loanApplication xmlns="http://www.autoloan.com/ns/autoloan">
            <SSN>111222333</SSN>
            <email>joe.smith@example.com</email>
            <customerName>Joe Smith</customerName>
            <loanAmount>20000</loanAmount>
            <carModel>Camry</carModel>
            <carYear>2007</carYear>
            <creditRating>800</creditRating>
          </loanApplication>
        </content>
      </part>
    </message>
  </initiate>
  <wireActions wireSource="client" operation="initiate">
    <assert comparisonMethod="string">
      <expected>
        <location key="input" partName="payload"
 xpath="/s1:loanApplication/s1:customerName"
 xmlns:s1="http://www.autoloan.com/ns/autoloan"/>
        <simple>Joe Smith</simple>
      </expected>
    </assert>
  </wireActions>
</compositeTest>

詳細は、「SOAコンポジット・エディタのテスト・モードによるテスト・ケースのコンテンツの編集」を参照してください。

50.2.4 メッセージ・ファイル

メッセージ・インスタンス・ファイルを使用すると、Webサービス・パートナから返されたメッセージ・データをシミュレートできます。受け取ったメッセージ・データをXMLファイルに手動で入力したり、SOAコンポジット・エディタのテスト・モードを使用してファイルをロードすることができます。たとえば、次のメッセージ・ファイルは、パートナから返された信用格付け結果900をシミュレートします。

<rating xmlns="http://services.otn.com">900</rating>

テスト・モードでのメッセージ・ファイルのロードの詳細は、「SOAコンポジット・エディタのテスト・モードによるテスト・ケースのコンテンツの編集」を参照してください。

50.3 コンポジット・テストの作成ウィザードを使用したテスト・スイートとテスト・ケースの作成

この項では、SOAコンポジット・アプリケーション用のテスト・スイートとそのテスト・ケースを作成する方法について説明します。テスト・ケースは、テスト・インスタンスの実行時に実行される一連のコマンドで構成されています。

次に示す2つの方法のどちらかで、テスト・スイートとテスト・ケースを作成できます。

  • 「アプリケーション」ウィンドウで

  • Oracle JDeveloperメイン・メニューから

どちらのオプションも、「コンポジット・テストの作成」ウィザードを起動します。このウィザードでは、開始操作、コールバック操作、および入出力メッセージを定義できます。

注意:

テスト・スイート名またはテスト・ケース名としてマルチバイト文字列を入力しないでください。マルチバイト文字列を入力すると、Oracle Enterprise Manager Fusion Middleware Controlからテストを実行するときにエラーが発生します。

  1. 次のいずれかの手順を実行して、新規テスト・スイートを作成するか、既存のテスト・スイート内に新規コンポジット・テストを作成します。表50-1に詳細を示します。


    表50-1 テスト・スイートの作成または選択

    場所 実行する手順

    Oracle JDeveloperメイン・メニュー

    1. 「ファイル」「新規」「アプリケーション」「SOA層」「テスト」「コンポジット・テスト・スイート」を選択します。

      「テスト・スイートの作成」ダイアログが表示されます。

    2. テスト・スイート名を入力し、「OK」をクリックします。

    または

    1. 「ファイル」「ギャラリから」「SOA層」「テスト」「コンポジット・テスト・スイート」を選択します。

      「テスト・スイートの作成」ダイアログが表示されます。

    2. テスト・スイート名を入力し、「OK」をクリックします。

    「アプリケーション」ウィンドウ

    1. testsuitesフォルダを右クリックして、「テスト・スイートの作成」を選択します。

      「テスト・スイートの作成」ダイアログが表示されます。

    2. テスト・スイート名を入力し、「OK」をクリックします。

    「構造」ウィンドウ

    1. 「テスト・スイート」を右クリックし、「テスト・スイートの作成」を選択します。

      「テスト・スイートの作成」ダイアログが表示されます。

    2. テスト・スイート名を入力し、「OK」をクリックします。

    Oracle JDeveloperメイン・メニュー

    1. 「ファイル」「新規」「アプリケーション」「SOA層」「テスト」「コンポジット・テスト」を選択します。

    または

    1. 「ファイル」「新規」「コンポジット・テスト」を選択します。

    注意: どちらを選択した場合も、新規テスト・スイートを作成するか、または既存のテスト・スイートを選択して新規コンポジット・テストを組み込むかを選択するオプションがあります。


    図50-1に示すように、「コンポジット・テストの作成」ウィザードの「テスト名とテスト・スイート」ページが表示されます。

    図50-1 「コンポジット・テストの作成」ウィザードの「テスト名とテスト・スイート」ページ

    図50-1の説明が続きます
    「図50-1 「コンポジット・テストの作成」ウィザードの「テスト名とテスト・スイート」ページ」の説明

    このウィザードを使用すると、「SOAコンポジット・エディタのテスト・モードによるテスト・ケースのコンテンツの編集」で説明するように、SOAコンポジット・エディタをテスト・モードで使用してテストの詳細を手動で作成することなく、単純なテストを作成できます。このエディタをテスト・モードで手動で使用する必要があるのは、エミュレーションなどの追加のテスト・メタデータを追加する場合のみです。

  2. 表50-2で説明するように、環境に適した値を指定して、「次へ」をクリックします。


    表50-2 「コンポジット・テストの作成」ウィザードの「テスト名とテスト・スイート」ページ

    フィールド 説明

    テスト名

    テストの名前を入力します。

    説明

    テストのオプション説明を入力します。この説明は、Oracle Enterprise Manager Fusion Middleware Control「ユニット・テスト」タブの「テスト・ケース」ページにある「説明」列に表示されます。

    テスト・スイート

    このテストを組み込む既存のテスト・スイートを選択するか、「テスト・スイートの作成」ダイアログで新規テスト・スイートを作成するためのアイコンをクリックします。


    図50-2に示すように、「コンポジット・テストの作成」ウィザードの「サービスと操作」ページが表示されます。

    図50-2 「コンポジット・テストの作成」ウィザードの「サービスと操作」ページ

    図50-2の説明が続きます
    「図50-2 「コンポジット・テストの作成」ウィザードの「サービスと操作」ページ」の説明
  3. 表50-3で説明するように、環境に適した値を指定して、「次へ」をクリックします。


    表50-3 「コンポジット・テストの作成」ウィザードの「サービスと操作」ページ

    フィールド 説明

    サービス

    テストするSOAコンポジット・アプリケーションを選択します。

    演算子

    操作を選択します。

    コールバック操作

    オプションでコールバック(レスポンス)操作を選択します。


    図50-3に示すように、「コンポジット・テストの作成」ウィザードの「入力メッセージ」ページが表示されます。このページでは、操作をテストするための入力メッセージを指定できます。

    図50-3 「コンポジット・テストの作成」ウィザードの「入力メッセージ」ページ

    図50-3の説明が続きます
    「図50-3 「コンポジット・テストの作成」ウィザードの「入力メッセージ」ページ」の説明

    表50-4で説明するように、環境に適した値を指定して、「次へ」をクリックします。


    表50-4 「コンポジット・テストの作成」ウィザードの「入力メッセージ」ページ

    フィールド 説明

    パート

    入力を含むメッセージ・パート(例: payload)を選択します。操作入力メッセージが複数のパートからなる場合は、パート名を1つずつ変更してそれぞれのメッセージ・パートを指定します。

    メッセージ・パートごとに、XMLドキュメントのコンテンツを手動で入力することも、XMLファイルからドキュメントをロードすることもできます。

    次の方法で、Webサービス・パートナに送信するシミュレート済入力メッセージを作成します。

    • 手動で入力

    クリックすると、「値の入力」フィールドにメッセージ・データを手動で入力できます。「サンプルの生成」ボタンをクリックすると、テスト用のメッセージ・パート・スキーマからサンプル・ファイルが自動的に生成されます。同じテスト、または同じテスト・スイート内の他のテストに後で使用するためにサンプル・ファイルを保存するには、「別名保存」をクリックします。

    • ファイルからロード

    「参照」アイコンをクリックすると、メッセージ・データをファイルからロードできます。このファイルは、「アプリケーション」ウィンドウの「メッセージ」フォルダに追加されます。


    図50-4に示すように、「コンポジット・テストの作成」ウィザードの「出力メッセージ」ページが表示されます。このページは、操作またはコールバック操作から発行されることが予期される出力メッセージを指定します。

    図50-4 「コンポジット・テストの作成」ウィザードの「出力メッセージ」ページ

    図50-4の説明が続きます
    「図50-4 「コンポジット・テストの作成」ウィザードの「出力メッセージ」ページ」の説明

    表50-5の説明に従って環境に適した値を指定して、「終了」をクリックします。


    表50-5 「コンポジット・テストの作成」ウィザードの「出力メッセージ」ページ

    フィールド 説明

    送信元

    メッセージを受信する元の外部Webサービスを選択します。

    パート

    出力を含むメッセージ・パート(例: payload)を選択します。操作入力メッセージが複数のパートからなる場合は、パート名を1つずつ変更してそれぞれのメッセージ・パートを指定します。

    メッセージ・パートごとに、XMLドキュメントのコンテンツを手動で入力することも、XMLファイルからドキュメントをロードすることもできます。

    次の方法で、Webサービス・パートナから返されるシミュレート済出力メッセージを作成します。

    • 手動で入力

    クリックすると、「値の入力」フィールドにメッセージ・データを手動で入力できます。「サンプルの生成」ボタンをクリックすると、テスト用のサンプル・ファイルが自動的に生成されます。「別名保存」をクリックして、サンプル・ファイルを保存します。

    • ファイルからロード

    「参照」アイコンをクリックすると、メッセージ・データをファイルからロードできます。このファイルは、「アプリケーション」ウィンドウの「メッセージ」フォルダに追加されます。


    テスト・スイートが作成され、SOAコンポジット・エディタのテスト・モードでテストが表示されます。図50-5に詳細を示します。必要な場合は、エミュレーションなどのテスト・メタデータを追加できます。現在のテストが完了した場合は、ツールバーのテスト・イメージ・ボタンをクリックして、別のテストの作成に進むことができます。テストを実行する場合は、緑色の矢印ボタンを押すことができます。

    図50-5 テスト・スイートの作成

    図50-5の説明が続きます
    「図50-5 テスト・スイートの作成」の説明

    次のサブフォルダとともに、テストが「アプリケーション」ウィンドウに作成されます。

    • componenttests

    • includes

    • messages

      テスト・モード・ユーザー・インタフェースを使用してこのディレクトリにロードしたメッセージ・テスト・ファイルが格納されます。

    • tests

      テスト・スイート用のXMLファイルを含んでいます。

    テスト・スイートに基づく名前が付けられたフォルダも「構造」ウィンドウに表示されます。これは、のテスト・モードであることを示しています。テストの開始、アサーションおよびエミュレーションをテスト・モードで作成できます。テスト・モードでは、他の変更(サービス・コンポーネントのプロパティ・ダイアログの編集、サービス・コンポーネントのエディタへのドロップなど)は実行できません。

    次のオペレーティング・システム・テスト・スイート・ディレクトリも作成されます。

    C:\JDeveloper\mywork\application_name\project_name\testsuites\test_suite_name
    
  4. テスト・モードを終了しての設計モードに戻るには、デザイナ上部の最後にあるアイコンをクリックします。図50-6に詳細を示します。

    図50-6 テスト・モードの終了

    図50-6の説明が続きます
    「図50-6 テスト・モードの終了」の説明
  5. プロンプトが表示されたら変更内容を保存します。

  6. 「アプリケーション」ウィンドウの「テスト・スイート」フォルダにあるXMLファイル名をダブルクリックして、テスト・モードに戻ります。図50-7に詳細を示します。

    図50-7 テスト・モードへのアクセス

    図50-7の説明が続きます
    「図50-7 テスト・モードへのアクセス」の説明

    注意:

    • testsuitesフォルダのサブフォルダの下に表示されるfilelist.xmlファイルは編集しないでください。これらのファイルは設計時に自動的に作成され、実行時にテスト・ケースの数を計算するために使用されます。

    • テスト・スイート内に別のテスト・スイートを作成することはできません。ただし、テスト・スイートをサブディレクトリに編成することは可能です。

50.4 SOAコンポジット・エディタのテスト・モードによるテスト・ケースのコンテンツの編集

「コンポジット・テストの作成」ウィザードを使用してテスト・スイートとテスト・ケースの基本的なコンテンツを作成した後、SOAコンポジット・エディタのテスト・モードでさらに更新を行うことができます。

テスト・ケースは、プロセスの開始、エミュレーションおよびアサーションで構成されます。プロセスの開始を作成して、SOAコンポジット・アプリケーションへのクライアント・インバウンド・メッセージを開始します。エミュレーションを作成して、SOAコンポジット・アプリケーションがWebサービス・パートナから受け取る入出力メッセージ・データ、フォルト・データ、コールバック・データあるいはこれらすべてのタイプをシミュレートします。アサーションを作成して、プロセスの実行時に、XML文書全体、メッセージのパート・セクション、非リーフ要素およびリーフ要素を検証します。

注意:

プロパティ・インスペクタでテスト・ケースのコンテンツを編集することもできます。編集するコンポーネントまたはワイヤをシングルクリックすると、ページの下部でプロパティ・インスペクタが編集のために起動します。

50.4.1 インバウンド・メッセージの開始方法

インバウンド・メッセージを開始する手順は、次のとおりです。

最初に、SOAコンポジット・アプリケーションへのインバウンド・クライアント・メッセージの送信を開始する必要があります。

  1. テスト・モードでSOAコンポジット・アプリケーションに移動します。
  2. 図50-8に示すサービス・バインディング・コンポーネントをダブルクリックします。

    図50-8 サービス・バインディング・コンポーネントへのアクセス

    図50-8の説明が続きます
    「図50-8 サービス・バインディング・コンポーネントへのアクセス」の説明

    「起動メッセージ」ダイアログが表示されます。

  3. 表50-6に記載されている詳細を入力します。

    表50-6 「起動メッセージ」ダイアログのフィールドと値

    フィールド

    サービス

    バインディング・コンポーネント・サービスの名前(client)が表示されます。

    操作

    サービス・バインディング・コンポーネントの操作タイプ(initiate)が表示されます。

    パート

    送信するインバウンド・メッセージのタイプ(例: payload)を選択します。

    次の方法で、クライアントから送信されるシミュレート済メッセージを作成します。

    • 手動で入力

    クリックすると、「値の入力」フィールドにメッセージ・データを手動で入力できます。「サンプルの生成」ボタンをクリックすると、テスト用のサンプル・ファイルが自動的に生成されます。「別名保存」をクリックして、サンプル・ファイルを保存します。

    • ファイルからロード

    「参照」アイコンをクリックすると、メッセージ・データをファイルからロードできます。このファイルは、「アプリケーション」ウィンドウの「メッセージ」フォルダに追加されます。


    図50-9に、このダイアログを示します。

    図50-9 「起動メッセージ」ダイアログ

    図50-9の説明が続きます
    「図50-9 「起動メッセージ」ダイアログ」の説明

    クライアントからのインバウンド・プロセス開始メッセージは、次のようになります。

    <?xml version="1.0" encoding="UTF-8" ?>
    <!-- Generated by Oracle SCA Test Modeler version 1.0 at [7/12/07 8:36 AM]. -->
    <compositeTest compositeDN="CompositeTest"
     xmlns="http://xmlns.oracle.com/sca/2006/test">
      <about/>
      <initiate serviceName="client" operation="initiate" isAsync="true">
        <message>
          <part partName="payload">
            <filePath>loanApplication.xml</filePath>
          </part>
        </message>
      </initiate>
    . . .
    . . .
    

    プロセス開始ファイルで参照されるloanApplication.xmlには、次のように融資申請ペイロードが含まれます。

    <loanApplication xmlns="http://www.autoloan.com/ns/autoloan">
      <SSN>111222333</SSN>
      <email>joe.smith@example.com</email>
      <customerName>Joe Smith</customerName>
      <loanAmount>20000</loanAmount>
      <carModel>Camry</carModel>
      <carYear>2007</carYear>
      <creditRating>800</creditRating>
    </loanApplication>
    
  4. 「OK」をクリックします。

50.4.2 アウトバウンド・メッセージのエミュレート方法

アウトバウンド・メッセージをエミュレートする手順は、次のとおりです。

注意:

テスト・ケースのインスタンス内での複数エミュレーションの作成がサポートされるのは、一方のエミュレーションが出力メッセージ用で、他方のエミュレーションがコールバック・メッセージ用の場合のみです。

同期のWebサービス・パートナから返されるメッセージをシミュレートできます。

  1. テスト・モードでSOAコンポジット・アプリケーションに移動します。
  2. 「アプリケーション」ウィンドウの「テスト・スイート」フォルダの下にあるテスト・ケースをダブルクリックします。図50-10に詳細を示します。

    図50-10 テスト・ケースへのアクセス

    図50-10の説明が続きます
    「図50-10 テスト・ケースへのアクセス」の説明

    内のSOAコンポジット・アプリケーションがリフレッシュされて、テスト・モードで表示されます。このモードでは、テスト情報を定義できます。

  3. テストするSOAコンポジット・アプリケーション領域のワイヤをダブルクリックします。図50-11に示す例では、LoanBrokerプロセスと同期のCreditRating Webサービスの間のワイヤが選択されています。

    図50-11 ワイヤへのアクセス

    図50-11の説明が続きます
    「図50-11 ワイヤへのアクセス」の説明

    これにより、図50-12に示す「ワイヤ・アクション」ダイアログが表示されます。このダイアログでは、SOAコンポジット・アプリケーションの選択したパートに対するエミュレーションとアサーションを設計できます。

    図50-12 「ワイヤ・アクション」ダイアログ

    図50-12の説明が続きます
    「図50-12 「ワイヤ・アクション」ダイアログ」の説明
  4. 「エミュレート」タブをクリックします。
  5. 「追加」アイコンをクリックします。
  6. 「出力のエミュレート」をクリックします。
  7. 表50-7に記載されている詳細を入力します。

    表50-7 出力メッセージのエミュレート・ダイアログのフィールドと値

    フィールド

    パート

    出力を含むメッセージ・パート(例: payload)を選択します。

    次の方法で、Webサービス・パートナから返されるシミュレート済出力メッセージを作成します。

    • 手動で入力

    クリックすると、「値の入力」フィールドにメッセージ・データを手動で入力できます。「サンプルの生成」ボタンをクリックすると、テスト用のサンプル・ファイルが自動的に生成されます。「別名保存」をクリックして、サンプル・ファイルを保存します。

    • ファイルからロード

    「参照」アイコンをクリックすると、メッセージ・データをファイルからロードできます。このファイルは、「アプリケーション」ウィンドウの「メッセージ」フォルダに追加されます。

    期間

    Webサービス・パートナからメッセージが配信されるまでの最大待機時間を入力します。


    図50-13に、このダイアログを示します。

    図50-13 「出力のエミュレート」が選択された状態の「エミュレート」ダイアログ

    図50-13の説明が続きます
    「図50-13 「出力のエミュレート」が選択された状態の「エミュレート」ダイアログ」の説明

    手動入力またはファイルからロードして作成する、同期のWebサービス・パートナからのシミュレート済出力メッセージは、次のようになります。

    <?xml version="1.0" encoding="UTF-8" ?>
    <!-- Generated by Oracle SCA Test Modeler version 1.0 at [7/3/07 3:26 PM]. -->
    <compositeTest compositeDN="CompositeTest"
     xmlns="http://xmlns.oracle.com/sca/2006/test">
      <about></about>
      <initiate serviceName="client" operation="initiate" isAsync="true">
        <message>
          <part partName="payload">
            <filePath>loanApplication.xml</filePath>
          </part>
        </message>
      </initiate>
      <wireActions wireSource="LoanBroker/CreditRatingService" operation="process">
        <emulate duration="PT0S">
          <message>
            <part partName="payload">
              <filePath>creditRatingResult.xml</filePath>
            </part>
          </message>
        </emulate>
      </wireActions>
    </compositeTest>

    出力メッセージで参照されるcreditRatingResult.xmlメッセージ・ファイルは、信用格付け結果の詳細を提供します。

    <rating xmlns="http://services.otn.com">900</rating>
    
  8. 「OK」をクリックします。

50.4.3 コールバック・メッセージのエミュレート方法

コールバック・メッセージをエミュレートする手順は、次のとおりです。

注意:

テスト・ケースのインスタンス内での複数エミュレーションの作成がサポートされるのは、一方のエミュレーションが出力メッセージ用で、他方のエミュレーションがコールバック・メッセージ用の場合のみです。

非同期のWebサービス・パートナから返されるコールバック・メッセージをシミュレートできます。

  1. 「アウトバウンド・メッセージのエミュレート方法」のステップ1からステップ3を実行して、ワイヤ・アクション・ダイアログにアクセスします。
  2. 「エミュレート」タブをクリックします。
  3. 「追加」アイコンをクリックします。
  4. 「コールバックのエミュレート」をクリックします。このフィールドは非同期プロセスの場合のみ有効になります。
  5. 表50-8に記載されている詳細を入力します。

    表50-8 コールバック・メッセージのエミュレートのフィールド

    フィールド

    コールバック操作

    コールバック操作(例: onResult)を選択します。

    コールバック・メッセージ

    非同期プロセスのコールバック・メッセージ名が表示されます。

    パート

    コールバックを含むメッセージ・パート(例: payload)を選択します。

    次の方法で、非同期のWebサービス・パートナから返されるシミュレート済コールバック・メッセージを作成します。

    • 手動で入力

    クリックすると、「値の入力」フィールドにメッセージ・データを手動で入力できます。「サンプルの生成」ボタンをクリックすると、テスト用のサンプル・ファイルが自動的に生成されます。「別名保存」をクリックして、サンプル・ファイルを保存します。

    • ファイルからロード

    「参照」アイコンをクリックすると、メッセージ・データをファイルからロードできます。このファイルは、「アプリケーション」ウィンドウの「メッセージ」フォルダに追加されます。

    期間

    Webサービス・パートナからコールバック・メッセージが配信されるまでの最大待機時間を入力します。


    図50-14に、このダイアログを示します。

    図50-14 「コールバックのエミュレート」が選択された状態の「エミュレート」ダイアログ

    図50-14の説明が続きます
    「図50-14 「コールバックのエミュレート」が選択された状態の「エミュレート」ダイアログ」の説明

    Webサービス・パートナからのシミュレート済コールバック・メッセージは、次のようになります。このメッセージは手動で入力するか、ファイルからロードします。

    <?xml version="1.0" encoding="UTF-8" ?>
    <!-- Generated by Oracle SCA Test Modeler version 1.0 at [7/3/07 3:27 PM]. -->
    <compositeTest compositeDN="CompositeTest"
     xmlns="http://xmlns.oracle.com/sca/2006/test">
      <about></about>
      <initiate serviceName="client" operation="initiate" isAsync="true">
        <message>
          <part partName="payload">
            <filePath>loanApplication.xml</filePath>
          </part>
        </message>
      </initiate>
      <wireActions wireSource="LoanBroker/LoanService" operation="initiate">
        <emulate callbackOperation="onResult" duration="PT0S">
          <message>
            <part partName="payload">
              <filePath>loanOffer.xml</filePath>
            </part>
          </message>
        </emulate>
      </wireActions>
    </compositeTest>
    

    コールバック・メッセージで参照されるloanOffer.xmlメッセージ・ファイルは、信用格付け承認の詳細を提供します。

    <loanOffer xmlns="http://www.autoloan.com/ns/autoloan">
      <providerName>Bank Of America</providerName>
      <selected>false</selected>
      <approved>true</approved>
      <APR>1.9</APR>
    </loanOffer>
    
  6. 「OK」をクリックします。

50.4.4 フォルト・メッセージのエミュレート方法

フォルト・メッセージをエミュレートする手順は、次のとおりです。

Webサービス・パートナから返されるフォルト・メッセージをシミュレートできます。このシミュレーションによって、プロセス内のフォルト処理機能をテストできます。

  1. 「アウトバウンド・メッセージのエミュレート方法」のステップ1からステップ3を実行して、ワイヤ・アクション・ダイアログにアクセスします。
  2. 「エミュレート」タブをクリックします。
  3. 「追加」アイコンをクリックします。
  4. 「フォルトのエミュレート」をクリックします。
  5. 表50-9に記載されている詳細を入力します。

    表50-9 「フォルトのエミュレート」メッセージ・フィールド

    フィールド

    フォルト

    パートナから返されるフォルトのタイプ(例: NegativeCredit)を選択します。

    フォルト・メッセージ

    メッセージ名が表示されます。

    パート

    フォルトを含むメッセージ・パート(例: payload)を選択します。

    次の方法で、Webサービス・パートナから返されるシミュレート済フォルト・メッセージを作成します。

    • 手動で入力

    クリックすると、「値の入力」フィールドにメッセージ・データを手動で入力できます。「サンプルの生成」ボタンをクリックすると、テスト用のサンプル・ファイルが自動的に生成されます。「別名保存」をクリックして、サンプル・ファイルを保存します。

    • ファイルからロード

    「参照」アイコンをクリックすると、メッセージ・データをファイルからロードできます。このファイルは、「アプリケーション」ウィンドウの「メッセージ」フォルダに追加されます。

    期間

    Webサービス・パートナからフォルト・メッセージが配信されるまでの最大待機時間を入力します。


    図50-15に、このダイアログを示します。

    図50-15 「フォルトのエミュレート」が選択された状態の「エミュレート」ダイアログ

    図50-15の説明が続きます
    「図50-15 「フォルトのエミュレート」が選択された状態の「エミュレート」ダイアログ」の説明

    手動入力またはファイルからロードして作成する、Webサービス・パートナからのシミュレート済フォルト・メッセージの例は、「エミュレーション」を参照してください。

  6. 「OK」をクリックします。

50.4.5 アサーションの作成方法

アサーションを作成する手順は、次のとおりです。

アサーションを実行して、変数データやプロセス・フローを検証します。アサーションを使用すると、プロセスの実行時に、XML文書全体のテスト・データ、メッセージのパート・セクション、非リーフ要素またはリーフ要素を検証できます。この検証は、値を抽出し、その値を予想値と比較して行います。

  1. 「アウトバウンド・メッセージのエミュレート方法」のステップ1からステップ3を実行して、ワイヤ・アクション・ダイアログにアクセスします。
  2. 「アサート」タブをクリックします。

    図50-16に、このダイアログを示します。

    図50-16 「アサート」タブが選択された状態の「ワイヤ・アクション」ダイアログ

    図50-16の説明が続きます
    「図50-16 「アサート」タブが選択された状態の「ワイヤ・アクション」ダイアログ」の説明
  3. 「追加」アイコンをクリックします。

    「アサートの作成」ダイアログが表示されます。

  4. 表50-10に示すように、ダイアログの上部で、実行するアサーションのタイプを選択します。この操作で入力メッセージのみがサポートされる場合は、「入力のアサート」ボタンが有効になります。この操作で入力メッセージと出力メッセージの両方がサポートされる場合は、「入力のアサート」「出力のアサート」ボタンの両方が有効になります。

    表50-10 アサーションのタイプ

    タイプ 説明

    入力のアサート

    インバウンド方向のアサーションを作成する場合に選択します。

    出力のアサート

    アウトバウンド方向のアサーションを作成する場合に選択します。

    コールバックのアサート

    コールバックのアサーションを作成する場合に選択します。

    フォルトのアサート

    フォルトをアプリケーション・フローにアサートする場合に選択します。


  5. 実行するアサーションのタイプに応じて、表50-11に示す各項を参照してください。

    表50-11 アサーションのタイプ

    アサーションの対象 参照先
    • 文書のパート・セクション

    • 非リーフ要素

    • XML文書全体

    パート・セクション、非リーフ要素またはXML文書全体に対するアサーションの作成

    リーフ要素

    リーフ要素に対するアサーションの作成


50.4.5.1 パート・セクション、非リーフ要素またはXML文書全体に対するアサーションの作成

パート・セクション、非リーフ要素またはXML文書全体に対してアサーションを作成する手順は、次のとおりです。

このテストでは、各値が予想値と比較されます。

注意:

メッセージに複数のパート(たとえば、payload1payload2およびpayload3)がある場合は、各パートに対して個別のアサーションを作成する必要があります。

  1. 「参照」をクリックして、アサートの対象となるターゲットのパート・セクション、非リーフ要素またはXML文書全体を選択します。

    「アサート・ターゲットの選択」ダイアログが表示されます。

  2. 値を選択して、「OK」をクリックします。たとえば、payloadなどの変数を選択してパート・セクション・アサーションを実行します。

    図50-17に、このダイアログを示します。この例は、パート・セクション・アサーションの実行方法を示していますが、XML文書全体アサーションの例では、LoanBrokerRequestMessageが選択され、非リーフ・アサーションの例では、loanApplicationが選択されます。

    図50-17 メッセージのパート・セクションの選択

    図50-17の説明が続きます
    「図50-17 メッセージのパート・セクションの選択」の説明

    「アサートの作成」ダイアログは、選択した変数に基づいてリフレッシュされます。

  3. 残りのフィールドに、表50-12に記載されている詳細を入力します。

    表50-12 「アサートの作成」ダイアログのフィールドと値

    フィールド

    フォルト

    アサートするフォルトのタイプ(例: NegativeCredit)を選択します。このフィールドは、「アサーションの作成方法」の手順4「フォルトのアサート」を選択した場合のみ表示されます。

    ターゲットのアサート

    ステップ2で選択したアサート・ターゲットが表示されます。

    比較方法

    比較の厳密度を指定します。

    • xml-identical: XML文書の要素と属性間で正確な一致が必要な場合に使用します。2つのXML文書の間に差異がある場合、比較は失敗します。たとえば、一方の文書で要素名のpurchaseOrderが使用され、他方の文書で要素名のinvoiceが使用されている場合、比較は失敗します。また、この比較は、2つの要素の子属性は同じだが、各要素内の属性の順序が異なる場合も失敗します。

    • xml-similar: コンテンツの類似性を比較するが、正確な一致は必要ない場合に使用します。たとえば、双方で同じネームスペースURIが使用されているが、それぞれのネームスペース接頭辞が異なる場合は、比較に成功します。この比較は、双方に同じ子属性を持つ同じ要素はあるが、各要素内の属性の順序が異なる場合も成功します。

      前述の2つ例の差異は、リカバリ可能とみなされるため、同一と判断されます。

    XMLファイルのコンテンツ比較の詳細は、XMLUnitに関する次のWebサイトを参照してください。

    http://xmlunit.sourceforge.net/userguide/html/ar01s03.html#The%20Difference%20Engine

    パート

    XML文書を含むメッセージ・パート(例: payload)を選択します。

    次の方法で、コンテンツをアサート・ターゲットのコンテンツと比較するXML文書を作成します。

    • 手動で入力

    クリックすると、「値の入力」フィールドにメッセージ・データを手動で入力できます。「サンプルの生成」ボタンをクリックすると、テスト用のサンプル・ファイルが自動的に生成されます。「別名保存」をクリックして、サンプル・ファイルを保存します。

    • ファイルからロード

    「参照」アイコンをクリックすると、メッセージ・データをファイルからロードできます。このファイルは、「アプリケーション」ウィンドウの「メッセージ」フォルダに追加されます。

    説明

    説明を入力します(オプション)。


    図50-18に、「入力のアサート」が選択された状態のダイアログを示します。

    図50-18 「入力のアサート」が選択された状態の「アサートの作成」ダイアログ

    図50-18の説明が続きます
    「図50-18 「入力のアサート」が選択された状態の「アサートの作成」ダイアログ」の説明
  4. 「OK」をクリックします。

    図50-19に示すように、「ワイヤ・アクション」ダイアログに、選択した内容が表示されます。

    図50-19 「アサート」タブが選択された状態の「ワイヤ・アクション」ダイアログ

    図50-19の説明が続きます
    「図50-19 「アサート」タブが選択された状態の「ワイヤ・アクション」ダイアログ」の説明
  5. 「OK」をクリックします。

50.4.5.2 リーフ要素に対するアサーションの作成

リーフ要素に対してアサーションを作成する手順は、次のとおりです。

このテストでは、値が予想値と比較されます。

  1. 「参照」をクリックして、アサートするリーフ要素を選択します。

    「アサート・ターゲットの選択」ダイアログが表示されます。

  2. リーフ要素を選択して、「OK」をクリックします。たとえば、loanAmountを選択してアサーションを実行します。図50-20に詳細を示します。

    図50-20 リーフ要素の選択

    図50-20の説明が続きます
    「図50-20 リーフ要素の選択」の説明

    「アサートの作成」ダイアログは、選択したXML文書全体に基づいてリフレッシュされます。

  3. 残りのフィールドに、表50-13に記載されている詳細を入力します。

    表50-13 「アサートの作成」ダイアログのフィールドと値

    フィールド

    フォルト

    アサートするフォルトのタイプ(例: NegativeCredit)を選択します。このフィールドは、「アサーションの作成方法」の手順4「フォルトのアサート」を選択した場合のみ表示されます。

    コールバック操作

    アサートするコールバックのタイプ(例: onResult)を選択します。このフィールドは、「アサーションの作成方法」のステップ4「コールバックのアサート」を選択した場合にのみ表示されます。

    ターゲットのアサート

    ステップ2で選択した変数アサート・ターゲットが表示されます。

    比較方法

    次の比較タイプを選択します。

    • string: 文字列値を比較します。

    • number: 数値を比較します。

    • pattern-match: 正規表現パターン(例: [0-9]*)を比較します。Java Development Kit (JDK)の正規表現(regexp)コンストラクトがサポートされています。たとえば、パターンab[0-9]*cdの入力は、ab123cdまたはab456cdの値が適正であることを意味します。アスタリスク(*)は、任意の発生数を示します。

    値のアサート

    予想値を入力します。この値はアサート・ターゲットの値と比較されます。

    説明

    説明を入力します(オプション)。


    図50-21に、「入力のアサート」が選択された状態のダイアログを示します。

    図50-21 「アサートの作成」ダイアログ

    図50-21の説明が続きます
    「図50-21 「アサートの作成」ダイアログ」の説明
  4. 「OK」をクリックします。

    図50-22に示すように、「ワイヤ・アクション」ダイアログに、選択した内容が表示されます。

    図50-22 「アサート」タブが選択された状態の「ワイヤ・アクション」ダイアログ

    図50-22の説明が続きます
    「図50-22 「アサート」タブが選択された状態の「ワイヤ・アクション」ダイアログ」の説明

50.4.6 アサーションに関する必知事項

テストが実行されて、返されたレスポンス・タイプが想定されているタイプと異なる場合、アサーションはスキップされます。たとえば、特定のメッセージに対してフォルト(RemoteFault)が返されることを想定していたが、かわりにレスポンス(BpelResponseMessage)が返される場合です。

常に想定されている動作をアサートおよびエミュレーションすることをお薦めします。

50.5 BPELプロセス・サービス・コンポーネントのテスト

「コンポジット・テストの作成」ウィザードを使用してテスト・スイートとテスト・ケースの基本的なコンテンツを作成した後、新規または既存のSOAコンポジット・アプリケーションのテスト・スイートに含まれている、個別のBPELプロセス・サービス・コンポーネントのテストを自動化できます。本番環境にデプロイする前に、これらのテスト・ケースを使用して、BPELプロセスとそのWebサービス・パートナの間の相互作用をシミュレートできます。これにより、本番環境へのデプロイメント準備が完了するまでに、BPELプロセスとWebサービス・パートナの相互作用が期待どおりであるかを確認できます。

次に、LoanBroker BPELプロセス・サービス・コンポーネントに対するコンポーネント・テストを含む、SOAコンポジット・アプリケーションのテスト・スイートの例を示します。

<compositeTest compositeDN="TestFwk"
 xmlns="http://xmlns.oracle.com/sca/2006/test">
  <about></about>
  <initiate serviceName="client" operation="initiate" isAsync="true">
    <message>
      <part partName="payload">
        <content>
          <loanApplication xmlns="http://www.autoloan.com/ns/autoloan">
            <SSN>111222333</SSN>
            <email>joe.smith@example.com</email>
            <customerName>Joe Smith</customerName>
            <loanAmount>20000</loanAmount>
            <carModel>Camry</carModel>
            <carYear>2007</carYear>
            <creditRating>800</creditRating>
          </loanApplication>
        </content>
      </part>
    </message>
  </initiate>
  <componentTest componentName="LoanBroker" filePath="assert.xml"/>
</compositeTest>

前の例では、assert.xmlテストによって、変数およびフォルトに対してアサーションが指定されています。

注意:

ビジネス・ルール、ヒューマン・タスク、Oracle MediatorまたはSpringサービス・コンポーネントのテストは自動化できません。

50.5.1 BPELプロセスのアクティビティのアサーションの概要

BPELプロセスのアクティビティに対して、変数アサーションおよびフォルト・アサーションを作成できます。次の例では、BPELプロセスでtextVarおよびcrOutputのコンテンツが指定されたコンテンツと必ず一致するように指示しています。

 <bpelTest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns="http://xmlns.oracle.com/sca/2006/test"
               componentName="LoanBroker">
 <activityActions activityName="elementAssign">
    <assert comparisonMethod="number">
      <description>Some other assertion.</description>
      <expected>
        <location key="textVar"
                  xmlns:loan="http://www.autoloan.com/ns/autoloan"/>
        <simple>111222333</simple>
      </expected>
    </assert>
  </activityActions>
 <activityActions activityName="invokeCR">
    <assert comparisonMethod="number">
      <description>Make sure we got the output.</description>
      <expected>
        <location key="crOutput" partName="payload" xpath="/tns:rating"
 xmlns:tns="http://services.otn.com"/>
        <simple>560</simple>
      </expected>
    </assert>
  </activityActions>
</bpelTest>

BPELプロセスのアクティビティに対するアサーションの作成の詳細は、「アサーションの作成方法」を参照してください。

50.5.2 Waitアクティビティの早送りアクションの概要

waitアクティビティを使用すると、プロセスは指定された期間または時間制限に達するまで待機できます。BPELプロセス・サービス・コンポーネントをテストするときには、waitアクティビティをバイパスしてテストを続行することが必要となる場合があります。早送りアクションを使用すると、waitアクティビティをバイパスして、テスト・シナリオを進める時間を指定できます。次の例では、BPELプロセスにwaitアクティビティを1秒間バイパスするように指示しています。

<bpelTest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://xmlns.oracle.com/sca/2006/test
 TestFwk.xsd"
               xmlns="http://xmlns.oracle.com/sca/2006/test"
               componentName="LoanBroker">
    <activityActions activityName="wait1">
      <fastForward duration="PT1S"/>
    </activityActions>
</bpelTest>

waitアクティビティの早送りアクションの作成の詳細は、「waitアクティビティのバイパス方法」を参照してください。

50.5.3 Assertアクティビティの実行の概要

BPELプロセスでアクティビティが実行される回数を指定して検証できます。次の例では、invokeelementAssigninvokeCRおよびreplyOutputの各アクティビティをそれぞれ1回実行するよう、BPELプロセスに対して指示しています。

<bpelTest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns="http://xmlns.oracle.com/sca/2006/test"
               componentName="LoanBroker">
    <assertActivityExecuted activityName="invoke" executionCount="1"/>
    <assertActivityExecuted activityName="elementAssign" executionCount="1"/>
    <assertActivityExecuted activityName="invokeCR" executionCount="1"/>
    <assertActivityExecuted activityName="replyOutput" executionCount="1"/>
</bpelTest>

assertアクティビティ実行の作成の詳細は、「アクティビティの実行回数の指定方法」を参照してください。

50.5.4 BPELプロセス・サービス・コンポーネントのテストの作成方法

BPELプロセス・サービス・コンポーネントのテストを作成する手順は、次のとおりです。

  1. テスト・スイートのBPELプロセスをダブルクリックします(この例ではLoanBroker)。

    テスト・スイートをまだ作成していない場合は、「コンポジット・テストの作成ウィザードを使用したテスト・スイートとテスト・ケースの作成」を参照してください。作成するBPELプロセス・サービス・コンポーネントのテストは、SOAコンポジット・アプリケーションのテスト・スイート全体に含まれます。

    図50-23に示すように、「コンポーネント・テストの作成」ダイアログが表示されます。

    図50-23 「コンポーネント・テストの作成」ダイアログ

    図50-23の説明が続きます
    「図50-23 「コンポーネント・テストの作成」ダイアログ」の説明
  2. 図50-23に示すように、デフォルト名をそのまま使用するか、または別の名前を入力します。
  3. 「OK」をクリックします。

    図50-24に示すように、テスト・モードのBPELプロセスが表示されます。

    左下にある「構造」ウィンドウに、「アサート」「早送り」および「アサート実行数」フォルダが表示されます。これらのフォルダを右クリックして、アサーション、早送り(waitアクティビティの実行をバイパスします)およびアサーションの実行数をそれぞれ作成します。

    デザイナの上部に、次のボタンが表示されます。

    • BPEL: クリックすると、Oracle BPELデザイナの設計モード(テスト・モード以外)で、BPELプロセス・サービス・コンポーネントにアクセスできます。図50-24では、BPELプロセスのテスト・モードであるため、このボタンは現在有効になっています。

    • 監視: クリックすると、Oracle BPELデザイナでBPELプロセス・モニターを構成できます。BPELプロセス・モニターでは、データを分析してグラフィカル表示するために、Oracle BAMアダプタを介してデータをOracle BAMに送信できます。

    • テスト: BPELプロセス・サービス・コンポーネントのテスト・モードであるため、このボタンは現在無効になっています。このボタンは、「BPEL」ボタンをクリックしてOracle BPELデザイナの設計モードになると有効になります。

    • 分析: クリックすると、Oracle BPMN、ヒューマン・ワークフロー、BPELプロセスなどのOracle SOA Suiteコンポーネントで分散データを収集するための共通測定メカニズムを作成できます。

    図50-24 テスト・モードのBPELプロセス・サービス・コンポーネント

    図50-24の説明が続きます
    「図50-24 テスト・モードのBPELプロセス・サービス・コンポーネント」の説明

50.5.5 アサーションの作成方法

BPELプロセスのアクティビティで、変数およびフォルトに対してアサーションを作成できます。

アサーションを作成する手順は、次のとおりです。

  1. 次の方法のいずれかを使用してアサーションを作成するアクティビティを選択します。

    1. 「構造」ウィンドウで、「アサート」フォルダを右クリックして「作成」を選択するか、または「アサート」フォルダを選択して「追加」ボタンをクリックします。

      「Assert」ダイアログが表示されます。

    2. 「アクティビティ名」フィールドで、「参照」アイコンをクリックしてアクティビティを選択します。

    または

    1. デザイナで特定のBPELアクティビティを右クリックし、「アクティビティ・テスト・データの編集」を選択します。

    2. 「アサート」タブをクリックします。

    3. 「追加」アイコンをクリックします。

      選択したアクティビティが「アクティビティ名」フィールドに表示されます。

  2. 表50-14に示すように、残りのフィールドに詳細を入力します。


    図50-14 BPELアクティビティに対するアサーション

    フィールド

    変数のアサート

    変数をアサートする場合に選択します。

    フォルトのアサート

    フォルトをアサートする場合に選択します。

    ターゲット

    次のようにアサートするターゲットを選択します。

    • 「変数のアサート」を選択した場合は、「参照」アイコンをクリックしてアサートする変数のタイプ(/autoloan:loanApplication/autoloan:SSNなど)を選択します。

    • 「フォルトのアサート」を選択した場合は、「参照」アイコンをクリックしてアサートするフォルトのタイプ(NegativeCreditなど)を選択します。

    比較方法

    XMLドキュメントを比較する場合は、比較の厳密度を指定します。

    • XML Identical: XML文書の要素と属性間で正確な比較が必要な場合に使用します。2つのXML文書の間に差異がある場合、比較は失敗します。たとえば、一方の文書で要素名のpurchaseOrderが使用され、他方の文書で要素名のinvoiceが使用されている場合、比較は失敗します。また、この比較は、2つの要素の子属性は同じだが、各要素内の属性の順序が異なる場合も失敗します。

    • XML Similar: コンテンツの類似性を比較するが、正確な一致は必要ない場合に使用します。たとえば、双方で同じネームスペースURIが使用されているが、それぞれのネームスペース接頭辞が異なる場合は、比較に成功します。この比較は、双方に同じ子属性を持つ同じ要素はあるが、各要素内の属性の順序が異なる場合も成功します。

      前述の2つ例の差異は、リカバリ可能とみなされるため、同一と判断されます。

    変数を比較する場合は、次のようにタイプを指定します。

    • 文字列: 文字列値を比較する場合に選択します。

    • Java正規表現によるパターン一致: 正規表現によるパターン(たとえば、[0-9]*)を比較する場合に選択します。Java Development Kit (JDK)の正規表現(regexp)コンストラクトがサポートされています。たとえば、パターンab[0-9]*cdの入力は、ab123cdまたはab456cdの値が適正であることを意味します。アスタリスク(*)は任意の発生数を表します。

    • 数値: 数値を比較する場合に選択します。

    パート

    XML文書を含むメッセージ・パート(例: payload)を選択します。

    次の方法で、コンテンツをアサート・ターゲットのコンテンツと比較するXML文書を作成します。

    • 手動で入力

    クリックすると、「値の入力」フィールドにメッセージ・データを手動で入力できます。「インスタンス・サンプルの生成」アイコンをクリックすると、テスト用のサンプル・ファイルが自動的に生成されます。「別名保存」アイコンをクリックして、サンプル・ファイルを保存します。

    • ファイルからロード

    「参照」アイコンをクリックすると、メッセージ・データをファイルからロードできます。このファイルは、「アプリケーション」ウィンドウの「メッセージ」フォルダに追加されます。

    説明

    説明を入力します(オプション)。


  3. 「OK」をクリックします。

    「構造」ウィンドウで「アサート」フォルダを展開し、アサートを作成したアクティビティを表示します。図50-25に詳細を示します。

    図50-25 「構造」ウィンドウの「アサート」フォルダ

    図50-25の説明が続きます
    「図50-25 「構造」ウィンドウの「アサート」フォルダ」の説明

50.5.6 waitアクティビティのバイパス方法

waitアクティビティをバイパスして、テスト・シナリオを進める時間を指定できます。時間制限が時間切れになると、waitアクティビティは処理されます。

waitアクティビティをバイパスする手順は、次のとおりです。

  1. 次の方法のいずれかを使用して、バイパスするwaitアクティビティを選択します。

    1. 「構造」ウィンドウで、「早送り」フォルダを右クリックして「作成」を選択するか、または「早送り」フォルダを選択して「追加」ボタンをクリックします。

      「早送り」ダイアログが表示されます。

    2. 「アクティビティ名」フィールドで、「参照」アイコンをクリックしてwaitアクティビティを選択します。

    または

    1. デザイナで特定のwaitアクティビティを右クリックし、「アクティビティ・テスト・データの編集」を選択します。

    2. 「早送り」タブをクリックします。このタブは、BPELプロセスにwaitアクティビティが存在する場合にのみ表示されます。

    3. 「追加」アイコンをクリックします。

      選択したwaitアクティビティが「アクティビティ名」フィールドに表示されます。

  2. 「期間」リストで、waitアクティビティをバイパスする期間(1秒など)を指定します。

  3. 「OK」をクリックします。

  4. 「構造」ウィンドウで「早送り」フォルダを展開して、waitアクティビティをバイパスして、テスト・シナリオを進める時間を表示します。図50-26に詳細を示します。

    図50-26 「構造」ウィンドウの「早送り」フォルダ

    図50-26の説明が続きます
    「図50-26 「構造」ウィンドウの「早送り」フォルダ」の説明

waitアクティビティの詳細は、「waitアクティビティによる有効期限の設定」を参照してください。

50.5.7 アクティビティの実行回数の指定方法

アクティビティを指定した回数実行するよう指定できます。これにより、アクティビティがプロセス・フローで適切な回数だけ実行されることを確認できます(Whileアクティビティが適切な回数だけ実行されることを確認するなど)。

アクティビティの実行回数を指定する手順は、次のとおりです。

  1. 次の方法のいずれかを使用して、実行するアクティビティを選択します。

    1. 「構造」ウィンドウで、「アサート実行数」フォルダを右クリックして「作成」を選択するか、または「アサート実行数」フォルダを選択して「追加」ボタンをクリックします。

      「アサート実行数」ダイアログが表示されます。

    2. 「アクティビティ名」フィールドで、「参照」アイコンをクリックして実行するアクティビティを選択します。

    または

    1. デザイナで特定のBPELアクティビティを右クリックし、「アクティビティ・テスト・データの編集」を選択します。

    2. 「アサート実行数」タブをクリックします。

    3. 「追加」アイコンをクリックします。

      選択したアクティビティが「アクティビティ名」フィールドに表示されます。

  2. 「カウント」リストで値を選択します。

  3. 「OK」をクリックします。

    「アクティビティ・テスト・データ」ダイアログは、図50-27のようになります。

    図50-27 「アクティビティ・テスト・データ」ダイアログ

    図50-27の説明が続きます
    「図50-27 「アクティビティ・テスト・データ」ダイアログ」の説明
  4. 「構造」ウィンドウで「アサート実行数」フォルダを展開し、アクティビティに割り当てた実行数を表示します。図50-28に詳細を示します。

    図50-28 「構造」ウィンドウの「アサート実行数」フォルダ

    図50-28の説明が続きます
    「図50-28 「構造」ウィンドウの「アサート実行数」フォルダ」の説明

50.6 テスト・スイートのデプロイおよび実行

テスト・ケースのテスト・スイートを作成した後は、そのスイートをSOAコンポジット・アプリケーションの一部としてデプロイします。その後、Oracle JDeveloperOracle Enterprise Manager Fusion Middleware ControlOracle WebLogic Scripting Tool (WLST)スクリプト、またはantコマンドからテスト・スイートを実行できます。

50.6.1 Oracle JDeveloperからテスト・スイートをデプロイして実行する方法

Oracle JDeveloperからテスト・スイートを実行できます。テスト・スイートを作成した後、実行する複数のテスト・スイート、実行する個々のテスト・スイートまたは実行するテスト・スイート内の個々のテストを選択できます。

Oracle JDeveloperからテスト・スイートをデプロイして実行する手順は、次のとおりです。

  1. 表50-15に示す、該当するタスクを実行します。


    表50-15 テスト・スイートの実行オプション

    用途 「アプリケーション」ウィンドウで

    SOAコンポジット・エディタ内で現在テスト・モードで開いているテスト・スイートを実行する。

    1. SOAコンポジット・エディタ上部にある「テストの実行」アイコンをクリックします。

    テキストで説明します

    すべてのテスト・スイートを実行する。

    1. testsuitesフォルダを右クリックして、「スイート・テストの実行」を選択します。

    テキストで説明します。

    個々のテスト・スイートを実行する。

    1. テスト・スイート名を右クリックして、「スイート・テストの実行」を選択します。

      テキストで説明します。

    テスト・スイート内の個々のテストを実行する。

    1. testsフォルダ内の個々のテストを右クリックして、「テストの実行」を選択します。

      テキストで説明します。

    使用するテスト・サーバーを構成していない場合は、「テスト・サーバーの指定」ダイアログが表示されます。

  2. テスト・サーバー・ホスト名を入力し、必要に応じて「今後は確認せず、「ツール」->「プリファレンス」->「SOA」で保存します」チェック・ボックスを選択します。これを選択すると、「ツール」「プリファレンス」「SOA」に進んで構成を変更するまで、このダイアログが再び表示されなくなります。

  3. 「OK」をクリックします。

    「テスト実行」ダイアログが表示されます。

  4. 次の手順を実行します。

    1. テスト実行名を指定します。

    2. 実行するテストを選択または選択解除します。

    3. テスト・サーバー上でテストを実行する際のタイムアウト値を秒数で指定します。

    4. 「OK」をクリックします。

    図50-29に詳細を示します。

    図50-29 「テスト実行」ダイアログ

    図50-29の説明が続きます
    「図50-29 「テスト実行」ダイアログ」の説明

    SOAコンポジット・アプリケーション(テストを含む)がテスト・サーバーにデプロイされているかどうかのチェックが行われます。テスト・サーバー上でテストを実行する前に、コンポジットをまずデプロイする必要があります。

  5. SOAコンポジット・アプリケーションのデプロイメント状況に応じて、表50-16に示す手順を実行します。


    表50-16 SOAコンポジット・アプリケーションがデプロイ済かどうか判別するためのチェック

    SOAコンポジット・アプリケーションの状況 結果

    デプロイされている。

    ステップ6に進みます。

    • テスト・サーバー上にまだデプロイされていない。

    • テスト・サーバー上にはデプロイされたが、コンポジット(テストを含む)が前回のデプロイメント以後に変更された。

    「コンポジットのデプロイの確認」ダイアログが表示されます。

    1. 「OK」をクリックしてSOAコンポジット・アプリケーションをデプロイします。

      Project_Nameのデプロイ」ウィザードの「デプロイメント・アクション」ページが表示されます。

    2. 「アプリケーション・サーバーにデプロイ」を選択します。

    3. ウィザードの各ページの指示に従って、SOAコンポジット・アプリケーションをアプリケーション・サーバーにデプロイします。

      SOAコンポジット・アプリケーションのデプロイの詳細は、「プロファイルのデプロイ」を参照してください。

    4. デプロイメントが完了したら、ステップ6に進みます。


    デプロイメントが完了したら、テストがテスト・サーバー上で実行されます。

  6. テスト結果を表示します。図50-30に詳細を示します。「テスト結果」ダイアログは、テスト・サーバーおよびコンポジットDNごとに表示されます。テスト・サーバーURL (SOAサーバーのホスト名とポート番号)およびコンポジットDNが右上隅に表示されて、コンテキストを示します。テストは必要な回数だけ実行でき、同じテスト・サーバーまたは異なるテスト・サーバー上で、異なるテストの組合せを選択して実行できます。

    図50-30 「テスト結果」ダイアログ

    図50-30の説明が続きます
    「図50-30 「テスト結果」ダイアログ」の説明

    テスト結果は、3つの折りたたみ可能なテーブル(マスターから詳細まで)に表示されます。表50-17に詳細を示します。


    表50-17 「テスト結果」テーブル

    テスト実行 テスト・ケース アサート結果

    テスト実行の発行直後の場合、現在のテスト実行とそのステータスのサマリーが表示されます。テスト実行についてテスト・サーバーに問い合せた直後の場合、問合せ基準に一致するすべてのテスト実行がテーブルに表示されます。

    • 「テスト実行」ダイアログに入力したテスト実行の名前。

    • テスト実行のステータス(成功または失敗)。テスト実行内のすべてのテスト・ケースが成功した場合は、ステータスは成功になります。そうでなければステータスは失敗になり、これは少なくとも1つのテスト・ケースが失敗したことを示しています。

    • テスト実行の成功率。

    • テスト・ケースの総数。

    • 成功、失敗、エラー、および実行中のテスト・ケースの数。

    • テスト実行の開始時刻と終了時刻。

    「テスト実行」テーブルから選択したテスト実行のすべてのテスト・ケース、およびステータスを表示します。「リフレッシュ」ボタンをクリックすると、テスト・ケースのステータスがリフレッシュされます。

    • テスト・ケースのテスト・ファイル名。クリックするとテスト・エディタにアクセスします。

    • テスト・ケースのステータス(成功または失敗)。テスト・ケース内のすべてのアサーションが成功した場合、ステータスは成功です。そうでなければステータスは失敗になり、これは少なくとも1つのアサーションが失敗したことを示しています。

    • テスト・ケースのテスト・スイート。

    「テスト・ケース」テーブルから選択したテスト・ケースのアサーション結果がすべて表示されます。

    • アサーションの場所。これは、ワイヤ・アサートの場合はワイヤ・ソース(サービスまたは参照)、コンポーネント・アサートの場合はコンポーネント(BPELプロセス)アクティビティ名です。これは、テスト・エディタ内でのアサートの場所を示すハイパーリンクです。図50-31に詳細を示します。

    • アサーションのステータス(成功または失敗)。実際値が予想値と一致する場合は、ステータスは成功になります。

    • アサートの予想値と実際値。これは、単純値アサートの場合は単純値、XML値アサートの場合はXML値を表示するポップアップのハイパーリンクです。

    • ステータスが失敗の場合、エラー・メッセージです。

    • アサーション・タイプ(ワイヤまたはコンポーネント)。ワイヤとは、コンポジット・ワイヤに対するアサートを意味します。コンポーネントとは、コンポーネント内でのアサートを意味します(BPELプロセス)。

    • 作成時にアサーションに対して入力したアサーションの説明。


    図50-31 アサーションXML結果

    図50-31の説明が続きます
    「図50-31 アサーションXML結果」の説明
  7. 図50-30「テスト実行」テーブルで、次の追加作業を実行します。

    1. 「テスト実行」テーブルの上にある「検索」アイコンをクリックし、検索基準を指定することによって、テスト・サーバーにテスト実行について問い合せます。

    2. 「テスト実行」テーブルの上にある「リフレッシュ」アイコンをクリックして、テスト実行のステータスをリフレッシュします。

  8. 図50-30「テスト・ケース」テーブルで、次の追加作業を実行します。

    1. 「テスト・ケース」テーブルの上にある「リフレッシュ」アイコンをクリックして、テスト・ケースのステータスをリフレッシュします。

  9. 図50-30「アサート結果」テーブルで、次の追加作業を実行します。

    1. 「アサート結果」表の上にある「失敗のみを表示」チェック・ボックスを選択して、失敗したアサートのみを表示します。

50.6.2 Oracle Enterprise Manager Fusion Middleware Controlからテスト・スイートをデプロイして実行する方法

SOAコンポジット・アプリケーションのデプロイ、およびOracle Enterprise Manager Fusion Middleware Controlからのテスト・スイートの実行の詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』を参照してください。

50.6.3 WLSTコマンドを使用してテスト・スイートをデプロイして実行する方法

sca_test WLSTコマンドを使用したテスト・スイートの実行の詳細は、SOA Suite用WLSTコマンド・リファレンスのsca_testに関する項を参照してください。

50.6.4 antスクリプトを使用してテスト・スイートをデプロイして実行する方法

ant-sca-test.xmlのantスクリプトを使用したテスト・スイートの実行の詳細は、「SOAコンポジット・アプリケーションのテストを自動化するためのantの使用方法」を参照してください。