契約テスト

テスト対象システムで、クライアントによってサーバーから要求に送信される応答の妥当性を確認する場合、 予測されるメッセージのスキーマを定義し、契約に準拠するように定義されたスキーマに対して着信メッセージを検証できます。 契約テストは、メッセージ用に定義されたスキーマに準拠する、着信メッセージのスキーマを検証する Test Integrations and APIs に作成できます。

概要

契約テストは、API プロバイダーまたはサーバーと、 API コンシューマーまたはクライアントの間のサービスが、相互にやり取りできるようにするテスト方法です。 この方法では、コンシューマーとプロバイダーは、相互にやり取りするための契約を使用して同意します。

次のタイプの契約テストが Test Integrations and APIs でサポートされています。
  • プロデューサー駆動型の契約テスト
  • コンシューマー駆動型の契約テスト

どちらのタイプのテストも、Test Integrations and APIs で、メッセージ用にスキーマを定義し、契約の準拠に関し、着信メッセージまたは出力メッセージでのスキーマの妥当性検査を行えます。

コンシューマー駆動型の契約テスト

コンシューマー駆動型の契約テストは、プロデューサー (テスト対象システム (SUT) のサーバー) からコンシューマー (SUT のクライアント) に送信される応答が、送信済みの要求についてコンシューマーが予期していたメッセージかどうか確認するために使用されます。 Test Integrations and APIs では、コンシューマーが開始する契約の検証として、予期していたメッセージに定義されたスキーマとルートに準拠するよう、着信メッセージのスキーマとスキーマのルートを検証できるようになっています。

コンシューマー駆動型の契約テストを Test Integrations and APIs で実行するには、オペレーション用の MEP を構成する必要があります。 MEP の「サブスクライブ」または「応答」アクションで、出力メッセージ用のスキーマとスキーマのルートを選択します。 「テスト・ファクトリー」ビューで契約テストを作成します。 テストは 「サブスクライブ」または「応答」アクションで定義されているルートとスキーマを検証し、契約の検証に成功すると、テストは合格となります。

コンシューマー駆動型の契約テストを行うためのタスク・フロー

以下の表は、コンシューマー駆動型の契約テストを行うために実行するタスクのリストです。 各タスクの詳細が記載された対応するトピックへのリンクのリストも記載されています。

タスク 詳細情報
1. プロジェクトを作成します。 プロジェクトの作成
2. 論理リソースを作成し、これを物理リソースの対応するタイプにバインドします。 論理ビュー
注: 表 1 に記載されているサポート対象のリソース・タイプのリストから、論理リソースを作成するためのタスクを参照してください。
3. 論理リソースの下にサービス・コンポーネントを作成します。 サービス・コンポーネントの作成
4. サービス・コンポーネントの下にオペレーションを作成します。 オペレーションの作成
5. 着信メッセージを確認するために使用するスキーマを追加します。 スキーマの追加
6. オペレーション用のメッセージ交換パターン (MEP) 設定を構成します。 コンシューマー駆動型の契約テストを作成するための MEP 設定を構成する
7. 次のタイプのコンシューマー駆動型の契約テストを作成できます。
  • 単一のコンシューマー駆動型の契約テスト。
  • 複数のコンシューマー駆動型の契約テスト。

コンシューマー駆動型の契約テストの作成

オペレーション用の MEP を構成したら、次のタイプのコンシューマー駆動型の契約テストを作成できます。
  • 単一の契約テスト。
  • 複数の契約テスト。

「固定」オプションを選択すると、複数の契約テストを作成するときに、コンテンツの構成や設定した変数テスト・データごとに異なるコンシューマー駆動型の契約テストを作成することができます。

一方、「データ駆動」オプションを選択すると、メッセージ用に定義されたスキーマの構造と、指定したコンテンツの組み合わせに依存する、複数のデータ駆動型の契約テストを作成することができます。 以下のいずれかの結果が発生します。
  • 複数のコンテンツの反復が含まれている単一のデータ駆動型の契約テストに加えて、テスト実行時に使用される反復の値を指定するテスト・データを入れた 1 つの Excel ワークシートが作成されます。
  • 異なるテスト構造とコンテンツの反復を持つ複数のデータ駆動型の契約テストに加えて、テスト実行時に各テストで使用されるテスト・データを入れた複数の異なるファイルが作成されます。

プロデューサー駆動型の契約テスト

プロデューサー駆動型の契約テストを Test Integrations and APIs で実行するには、オペレーションでプロデューサーを構成し、MEP に基づいたテストを作成する必要があります。 MEP の「パブリッシュ」または「要求」アクションで、メッセージ用のスキーマを追加します。 次に「メッセージ・スイッチ」アクションの下に 「メッセージ・ケース」のあるスタブを作成します。 「メッセージ・ケース」は、テストの「パブリッシュ」または「要求」アクションとして送信された着信メッセージを受信、またはサブスクライブします。 「スタブ・プロパティー」タブで、「契約の検証を組み込む (Include Contract Validation)」オプションを選択します。 スタブの実行後のテストでは、着信メッセージは、テストに送信された契約と応答として、定義済みのスキーマに準拠しているか検証されます。

プロデューサー駆動型の契約テストを行うためのタスク・フロー

以下の表は、プロデューサー駆動型の契約テストを行うために実行するタスクのリストです。 各タスクの詳細が記載された対応するトピックへのリンクのリストも記載されています。

タスク 詳細情報
1. プロジェクトを作成します。 プロジェクトの作成
2. 論理リソースを作成し、これを物理リソースの対応するタイプにバインドします。 論理ビュー
注: 表 1 に記載されているサポート対象のリソース・タイプのリストから、論理リソースを作成するためのタスクを参照してください。
3. 論理リソースの下にサービス・コンポーネントを作成します。 サービス・コンポーネントの作成
4. サービス・コンポーネントの下にオペレーションを作成します。 オペレーションの作成
5. 出力メッセージを確認するために使用するスキーマを追加します。 スキーマの追加
6. オペレーション用のメッセージ交換パターン (MEP) 設定を構成します。 プロデューサー駆動型の契約テストを作成するための MEP 設定を構成する
7. テストをオペレーションの下に作成します。 MEP を使用した単一のテストの作成またはMEP を使用した複数のテストの作成
8. メッセージ・ベースのスタブをオペレーションの下に作成します。 MEP を使用したスタブの作成
9. スタブを編集します。 契約の検証のためにメッセージ・ベースのスタブを編集する

契約テストとスタブを生成するためのリソースの同期化

テスト対象システムに 既に別のアプリケーションでテストを作成していて、メッセージ用のスキーマとルートを定義している場合、 Test Integrations and APIs の同期化機能を使用して、Test Integrations and APIs で実行できる契約テストとスタブを生成できます。 同期化プロセス中に契約テストとスタブを生成することもできます。

リソースを同期化することでコンシューマー駆動型の契約テストを行う場合は、リソースの同期化によるコンシューマー駆動型の契約テストの作成を参照してください。

リソースを同期化することでプロデューサー駆動型の契約テストを行う場合は、リソースの同期化によるプロデューサー駆動型の契約テストの作成を参照してください。

契約テスト実行のメリット

コンシューマー駆動型の契約テストを Test Integrations and APIs で実行すると、コンシューマーから送信される要求の妥当性を確認できます。

契約がプロデューサーから送信されるメッセージの定義済みスキーマに準拠しているか確認するため、スタブ上でテストを実行できます。