
백엔드
리팩토링을 위한 통합 테스트
두줄요약
무신사 WMS 리팩토링 과정에서 통합 테스트를 활용한 사례를 소개했습니다. Testcontainers와 Database Rider로 기능 보장과 빠른 검증을 함께 잡았습니다.
문제 상황
- WMS 자체 개발과 빠른 런칭 과정에서 누적된 기술 부채
- 과도한 책임을 가진 클래스, 높은 결합도, 낮은 가독성, 메모리 이슈
- 코드 품질 개선을 위한 리팩토링 과정에서 기능 보장을 확인할 테스트 필요
원인 분석
- 리팩토링이 코드 구조 변경을 동반해 단위 테스트가 구현 세부사항에 과도하게 결합될 위험
- 단위 테스트는 유지보수성이 낮아지고 리팩토링 내성이 약해짐
- 넓은 범위의 동작 검증이 필요한 상황
해결 방법
- UseCase를 구현하는 서비스 계층을 통합 테스트 대상으로 선정
- Testcontainers로 MySQL 등 실제와 유사한 테스트 환경 구성
- Database Rider와 Golden Master Testing으로 DB 상태 기반 검증 수행
주의할 점
- 모든 외부 의존성을 컨테이너로 띄우면 테스트 자원 소모가 큼
- 관리 의존성만 실제와 유사하게 두고, 외부 API는 Mock으로 대체하는 선택 필요
- 테스트 환경 구성을 통일해 Context Caching 이점 유지 필요