Contract Testing
Contract Testing
마이크로서비스 간 API 계약(Contract)을 정의하고 Provider와 Consumer가 각각 독립적으로 계약을 검증하여 통합 없이 호환성을 보장하는 테스트 기법
목적: 마이크로서비스 호환성 검증, 통합 테스트 대체, 빠른 피드백, 독립 배포
특징: Consumer-Driven, 계약 명세, 독립 검증, Stub 생성, CI/CD 통합
구성요소: Contract(API 계약 명세), Consumer Test(기대 사항 검증), Provider Test(계약 충족 검증), Pact Broker(계약 저장소)
Pact: 가장 유명한 Contract Testing 프레임워크, Consumer-Driven, JSON 계약, Stub Mock
동작 흐름: ① Consumer가 기대 사항 작성 → ② Pact 파일(계약) 생성 → ③ Broker에 발행 → ④ Provider가 계약 다운로드 → ⑤ 계약 검증(실제 API 호출) → ⑥ 결과 발행
Consumer-Driven: Consumer가 필요한 API 계약 정의 → Provider는 계약 준수, 불필요한 필드 제거
장점: 독립 배포, 빠른 피드백, 통합 테스트 감소, 호환성 보장, CI/CD 통합
단점: 계약 관리 부담, Broker 필요, 복잡한 시나리오 제한, 학습 곡선
적용사례: 마이크로서비스, API 호환성, Consumer-Driven API, 독립 팀 협업
비교: Contract(계약/독립검증) vs Integration(통합/느림) vs E2E(전체/복잡) vs Mock(단위/고립)
연관: Pact, 마이크로서비스, API 테스트, Consumer-Driven Contract, CI/CD