본문으로 이동
TestContainers로 유저시나리오와 비슷한 통합테스트 만들어 보기
문서

TestContainers로 유저시나리오와 비슷한 통합테스트 만들어 보기

딜리버리프로덕트 김태훈 · 컬리 · 컬리 기술 블로그

원본 보기

소개

진정한 통테를...

AI 핵심 요약

서비스별 통합테스트에서 외부 의존성을 mock 처리하면 주문 이벤트 수집과 배송 조회 사이의 제약조건 불일치를 발견하기 어렵다는 문제가 있었다. 이를 보완하기 위해 Kafka, PostgreSQL, 이벤트 수집 서버, 배송 조회 서버를 Testcontainers로 실행하고, 실제 주문 이벤트 발행부터 API 조회까지 이어지는 사용자 시나리오 테스트를 구성했다. 공통 Docker 네트워크와 alias로 컨테이너를 연결하고 환경변수로 애플리케이션 설정을 주입했으며, 테스트에서는 매핑된 포트로 API를 호출했다. 배포 이미지 생성 후 GitHub Actions에서 테스트를 실행해 기본 시나리오를 자동 검증하고, QA가 비정상 케이스에 집중할 수 있도록 한 것이 핵심이다.

  • 서비스별 테스트에서 외부 시스템을 mock 처리하면 서버 간 제약조건 불일치로 생기는 오류를 놓칠 수 있다.
  • Testcontainers의 공통 Docker 네트워크와 컨테이너 alias를 이용하면 테스트 환경에서 서비스 간 통신을 구성할 수 있다.
  • 컨테이너 내부 연결에는 alias를, 테스트 코드에서 API를 호출할 때는 동적으로 매핑된 포트를 사용한다.
  • 애플리케이션 설정은 환경변수로 주입하고, 컨테이너 로그를 확인해 연결 실패 원인을 진단한다.
  • GitHub Actions에서 배포 이미지 생성 workflow 완료 후 통합 테스트를 실행하도록 연결할 수 있다.