コントラクトテストとは?
こんとらくとてすと
コントラクトテストとは、複数のサービスやAPIが約束(コントラクト)どおりに通信できるかを独立して検証するソフトウェアテスト手法です。
コントラクトテスト(Contract Testing)とは、マイクロサービスアーキテクチャやAPI連携において、サービス間のインターフェース(コントラクト)が守られているかを、各サービスを単独で起動した状態で確認するテスト手法です。
従来の統合テストでは、連携するすべてのサービスを同時に起動して実際の通信を行いますが、コントラクトテストではサービスを切り離してテストします。仕組みの流れは以下のとおりです。
- コンシューマー側がAPIの利用方法(どんなリクエストを送り、どんなレスポンスを期待するか)をコントラクトファイルとして記録する。
- プロバイダー側がそのコントラクトファイルを読み込み、自身の実装がコントラクトに沿っているかをテストする。
- コントラクトファイルをブローカー(Pactブローカーなど)を介して共有・管理する。
代表的なツールとして「Pact」が広く使われており、複数言語・フレームワークに対応しています。コントラクトテストを導入することで、サービス単体でテストが完結するため実行速度が速く、CI/CDパイプラインへの組み込みも容易です。また、プロバイダーのAPI変更が既存のコンシューマーに与える影響をリリース前に検出できるため、サービス間の破壊的変更を防ぐ安全網として機能します。
使い方・例文
フロントエンドが「商品情報APIはこの形式でレスポンスを返す」というコントラクトを記録しておき、バックエンドが仕様変更を加えたときにそのコントラクトへの適合テストが自動で走ることで、仕様ズレを早期に検知できます。
この用語をシェア
最終更新: