소비자 주도 계약(consumer driven contracts)은 서비스에 대한 소비자의 기대 사항을 정의한다. 소비자의 기대 사항을 테스트할 수 있도록 코드로 표현한다. 해당 테스트는 생산자가 수행한다. 소비자 주도 계약이 완벽하게 수행되도록 생산자의 지속적 통합 서버 빌드의 일부분으로 수행되야 한다.



특히 테스트의 독립성을 보장해야 한다. 


마이크로 서비스 또는 레거시 시스템을 시뮬레이션하는 스텁(stub)이 테스트 목적에 유용하다.




실제 카카오 스토리에서 Functional 테스트를 진행할 때 바로 소비자/생산자를 독립시켜 테스트를 하도록 배웠고 docker를 이용한 병렬화 테스팅을 진행했다. Functional 테스팅의 정말 나에게는 정말 도움이 되었다. (멀린 땡큐!)


https://www.slideshare.net/knight1128/hancom-mds-conference-kakao-devops-practice-devops





간이 지나고 보고 이 Functional 테스트가 바로 소비자 주도 계약 테스트 중의 하나였다고 생각한다. (용어를 뭉뜨그리고 해도 개념은 동일했던 것 같다.)





개념에 대한 자세한 내용은 다음을 참조한다.


https://martinfowler.com/articles/consumerDrivenContracts.html



Posted by 김용환 '김용환'