契約テスト
けいやくてすと
Contract Test
一言でいうと
サービス間でAPIの「契約(仕様)」が守られているかを両側から検証するテスト手法のこと。
詳しい意味
契約テスト(Contract Test)は、API を提供する側(プロバイダ)と利用する側(コンシューマ)が「契約(仕様)」を守っているかを両側から自動検証するテスト手法です。マイクロサービス構成で「サービスAを直したらサービスBが壊れる」事故を防ぐのに有効。「コンシューマー駆動契約テスト(Pact など)」が代表的で、コンシューマ側で「自分がどんなレスポンスを期待するか」を契約として記述し、プロバイダ側のテストで「その契約を満たすか」を検証します。E2E テストより速く、ユニットテストよりサービス間の不整合を早く捕まえられる中間層として位置づけられます。
何に使うか
マイクロサービス間の互換性を継続的に保ちたいとき。バージョン違いのクライアントが残っている時にAPI変更の影響を見たいとき。複数チームが並行で開発するとき。
どんな時に出るか
「契約テストでAPI変更の影響検出」「Pact でコンシューマ駆動」「コントラクトを CI で検証」といった場面で登場します。
具体例
- マイクロサービス間に Pact を入れて、APIの契約破りをCIで早期検知できるようにした。
- 契約テストがあればE2Eを減らせる、という整理で運用負荷を下げた。
別名・略称
contract test(こんとらくとてすと)contract testing(こんとらくとてすてぃんぐ)Pact(ぱくと)
間違えやすい語
初心者向けメモ
発注書と納品物の照合です。発注側(コンシューマ)が「これこれが必要」と発注書に書いておき、納品側(プロバイダ)が納品物と発注書を毎回照合する。互いに勝手に変えても、契約に反すれば即座にバレる仕組みです。