Consumer-Driven Contract Testing

Consumer-Driven Contract Testing(CDC)은 마이크로서비스 아키텍처(MSA)의 중요한 테스팅 패턴 중 하나이다.
이 패턴은 서비스 소비자(consumer)와 제공자(provider) 간의 상호작용을 검증하는 방법이다.

CDC는 소비자의 기대치에 따라 제공자의 호환성을 보장하는 계약 테스트 유형이다. 소비자가 제공자에 대한 기대사항을 정의하고, 이를 계약으로 생성하여 제공자와 공유한다.

CDC는 서비스 간 상호작용을 효과적으로 검증하고, 개발 팀 간의 명확한 커뮤니케이션을 촉진하는 강력한 테스팅 방법이다. 이를 통해 개발자들은 더 안정적이고 유연한 마이크로서비스를 구축할 수 있다.

주요 특징

  • 소비자 중심: 소비자가 테스트의 주도권을 가진다.
  • 실제 시나리오 기반: 실제 소비자들이 사용하는 시나리오로 서비스를 테스트한다.
  • 격리된 테스트: 전체 시스템을 구동하지 않고 개별 컴포넌트 간 상호작용을 테스트한다.

구현 단계

  • 소비자 테스트 작성: 소비자는 제공자 목(mock)을 사용하여 통합 테스트를 작성한다.
  • 계약 생성: 테스트 실행 결과로 계약 파일(예: Pact)이 생성된다.
  • 계약 공유: 생성된 계약을 중앙 저장소(Contract Broker)에 저장한다.
  • 제공자 검증: 제공자는 계약을 가져와 자신의 구현과 비교하여 검증한다.

장점

  • 빠른 피드백: 통합 문제를 조기에 발견할 수 있다.
  • 독립적인 개발: 소비자와 제공자 팀이 독립적으로 작업할 수 있다.
  • 불필요한 기능 방지: 실제 사용되는 부분만 테스트되어 효율적이다.

주의사항

  • 계약은 정적 문서가 아닌 실행 가능한 테스트 케이스 모음.
  • 계약은 모든 가능한 상태를 설명하는 것이 아니라 구체적인 요청/응답 쌍을 정의.

도구

  • Pact: CDC 테스팅을 위한 대표적인 도구.
  • Testsigma: CDC 테스팅을 지원하는 또 다른 도구.

참고 및 출처