テスト スイートにデータ ソースを追加すると、データ ソースの値を SOAtest のツールと組み合わせて使用し、テスト スイートの機能を拡張できます。データ ソースは、さまざまなツールで値をパラメータライズする際に使用できます。たとえば SOAP Client、Messaging Client、Browser Playback ツール、DB ツール、Diff ツールなどです。SOAP Client と Messaging Client ツールを使って、リクエストの一部としてデータ ソースの値をサーバーに送信できます。その後、Diff ツールでレスポンスとデータ ソースに格納された他の値セットを比較できます。
たとえば、アメリカ合衆国の州都の名前を受け取り、該当する州の名前を返すサービスの機能テストを考えてみましょう。この場合、テスト スイートに 2 列の値を格納するデータ ソースを追加します。1 列目の値として都市名が格納され、2 列目の値として州名が格納されています。SOAP Client ツールで、1 列目から入力値を取得してリクエストを送信するよう設定します。そして Diff ツールで、入力値に対する実際のレスポンスを 2 列目の値と比較するよう設定します。このように SOAP Client ツールと Diff ツールを使用すると、データ ソースのすべての行の値を順番に処理してチェックできるため、機能テストに非常に役立ちます。
データ ソースの反復
機能テストを実行する上で、データ ソースの反復処理にテスト実行オプションが与える影響を理解するのは重要です。テスト実行の設定の詳細については、「テスト スイートのプロパティ設定 (テスト フロー ロジック、 変数など)」を参照してください。以下の実行オプションがデータ ソースの反復処理に影響します。
- 個別にテストを実行可能: テスト スイートの実行オプションで [個別にテストを実行可能] がオンの場合、テスト スイート内の各テストは、次のテストの実行に移る前に、データ ソースのすべての行を反復します。
- シナリオ: [個別にテストを実行可能] がオフの場合、テスト スイート内のすべてのテストを実行してから次のデータ ソース行に移ります。
たとえば、テスト スイートに Test A と Test B があり、どちらも 3 行のデータがあるデータ ソースを使用する場合、以下の実行パターンがあり得ます。
- 個別にテストを実行可能: Test A: 行 1、Test A: 行 2、Test A: 行 3、Test B: 行 1、Test B: 行 2、Test B: 行 3
- シナリオ (個別にテストを実行可能ではない): Test A: 行 1、Test B: 行 1、Test A: 行 2、Test B: 行 2、Test A: 行 3、Test B: 行 3
XML Data Bank を使用して 1 つのテスト スイート内の複数のテスト ケース間で値を渡す場合、[個別にテストを実行可能] オプションの設定にかかわらず、テスト スイートは自動的に「シナリオ モード」になります。データ ソースは、[個別にテストを実行可能] がオフの場合と同じように反復されます。XML Data Bank の使用の詳細については、「XML Data Bank」を参照してください。
SOAP Client と Diff ツールでのデータ ソースの使用
データ ソース値の送信と比較を行うように SOAP Client ツールと Diff ツールを設定するには、次の操作を行います。
- 使用するデータ ソースをまだ追加していない場合、「スイート、プロジェクト、またはグローバル レベルでのデータ ソースの追加」の説明に従ってデータ ソースを追加します。
- テスト ケース エクスプローラーで SOAP Client ノードをダブルクリックし、GUI 右側のパネルの [データ ソース] コンボ ボックスから適切なデータ ソースを選択します。
- テスト スイートにまだデータ ソースを追加していない場合、[データ ソース] コンボ ボックスは表示されません。データ ソースが 1 つだけの場合、そのデータ ソースが SOAP Client ツールにデフォルトで設定されます。2 つ以上のデータ ソースがある場合は、[テスト] タブで最初に表示されているデータ ソースがデフォルトで設定されます。
- 「SOAP Client」の説明に従って、SOAP Client ノードのプロジェクト構成パネルで、残りのフィールドに値を設定します。
- SOAP Client ノードを選択し、[テストまたは出力の追加] ツールバー ボタンをクリックします。[出力の追加] ウィザードが表示されます。
- [出力の追加] ウィザードの左ペインから [リクエスト] > [SOAP エンベロープ] を選択し、右ペインから [Diff] を選択して [終了] をクリックします。SOAP Client ノードに Diff ノードが追加されます。
- Diff ノードをダブルクリックしてツールのコンフィギュレーション パネルを開きます。
- [データ ソース] ボックスから適切なデータ ソースを選択します。選択するデータ ソースは、SOAP Client で指定したデータ ソースと同じでなければなりません。
- [回帰コントロール ソース] ボックスで [データ ソース] を選択します。
- Diff ツールでレスポンスと比較する列を [データ ソース列] ボックスから選択します。
- 「Diff」の説明に従って、Diff ツールの残りのオプションを設定します。
これで、SOAP Client ノードを選択し、[テストの実行] ツールバー ボタンをクリックして機能テストを実行できるようになりました。結果は GUI 右側のパネルに表示されます。
さまざまなサイズの配列のパラメータライズ
SOAtest では、階層的なデータ構造をデータ ソースにマッピングできます。
たとえば、家系図を構築するための情報を収集する Web サービスがあるとします。送信される情報は、次のようになります。
<ns1:People xmlns:ns1="http://www.example.org/ParentChildGrandChild"> <ns1:Person> <ns1:Name>GrandPa</ns1:Name> <ns1:Age>85</ns1:Age> <ns1:Child> <ns1:Name>Daddy</ns1:Name> <ns1:Age>55</ns1:Age> <ns1:Child> <ns1:Name>FirstSon</ns1:Name> <ns1:Age>25</ns1:Age> </ns1:Child> <ns1:Child> <ns1:Name>SecondSon</ns1:Name> <ns1:Age>22</ns1:Age> </ns1:Child> </ns1:Child> </ns1:Person> </ns1:People>
このデータは、次の家系図を表しています。
- GrandPa
- Daddy
- FirstSon
- SecondSon
- Daddy
XML に含める子や孫の数を変えられるような「配列データ ソース」をセットアップするにはどうすればよいでしょうか? それにはまずデータ ソースをセットアップし、次のセクションの説明に従って、データ ソースを使ってフォーム入力をパラメータライズします。
データ ソースの設定
次の 2 家族の家系情報を送信するとします。
- GrandPa
- Daddy
- FirstSon
- SecondSon
- Daddy
- GrandMa
- Mommy
- FirstDaughter
- SecondDaughter
- FirstAunt
- SecondAunt
- FirstCousin
- SecondCousin
- Mommy
このシナリオのためにデータ ソースを設定するには、次の操作を行います。
- 次の 3 シートがある Excel ファイルを作成します: FirstGeneration, SecondGeneration, ThirdGeneration
- [FirstGeneration] シートに次のように入力します。
SecondGeneration dsref* 列に注目してください。 このようにして、FirstGeneration の子が SecondGeneration から取得されることを表します (dsref* とは Data Source REFerence を表します)。 - [SecondGeneration] シートに次のように入力します。
ThirdGeneration dsref* 列に注目してください。また、ParentIndex 列にも注目してください。ParentIndex 列の値は、SecondGeneration と血縁関係にある FirstGeneration を表します。
たとえば、Daddy は 1 つ目の FirstGeneration である GrandPa と血縁関係があります。Mommy、FirstAunt および SecondAunt は 2 つ目の FirstGeneration である GrandMa と血縁関係があります。 - [ThirdGeneration] シートに次のように入力します。
ここでも ParentIndex に注目してください。FirstAunt には子がいないため、ParentIndex が 3 のデータはありません。
フォーム入力のパラメータライズ
XML に含まれる子および孫の数を変化させる手順の次のステップとして、次のようにフォーム入力をパラメータライズします。
- ArrayDataSource.tst という .tst ファイルを新規作成します。
- Excel データ ソースを追加して、前の手順で作成した Excel スプレッド シートを指定します。シートとして FirstGeneration を選択します。
- 新規に Messaging Client を作成します。
- 次のように Messaging Client を設定します。
- スキーマ URL: http://soatest.parasoft.com/ParentChildGrandChild.xsd
- ルーターエンドポイント: http://ws1.parasoft.com:8080/examples/servlets/Echo
- [フォーム入力] を次のように設定します。
People- Person
- Name - パラメータライズ: Name
- Age - パラメータライズ: Age
- Child
- Name - パラメータライズ: SecondGeneration:Name (SecondGeneration シートの Name 列)
- Age - パラメータライズ: SecondGeneration:Age (SecondGeneration シートの Age 列)
- Child
- Name - パラメータライズ: SecondGeneration:ThirdGeneration:Name (ThirdGeneration シートの Name 列)
- Age - パラメータライズ: SecondGeneration:ThirdGeneration:Age (ThirdGeneration シートの Age 列)
- Person
- テストを実行します。
Traffic Viewer に表示される XML は、データ ソースの家系図情報を反映しているはずです。