
아키텍처
가치있는 테스트를 위한 전략과 구현
두줄요약
테스트를 무조건 많이 쓰기보다 가치와 목적에 따라 선별적으로 작성하는 전략을 정리했습니다. 실제 객체 중심의 통합 테스트, 데이터 격리, 승인 테스트로 실용성과 신뢰성을 높이는 방법을 공유했습니다.
핵심 내용
- 테스트의 이상과 현실 괴리, 깨지기 쉬움, 느린 실행, 높은 관리 비용 문제 정리
- 가치 있는 테스트를 위해 선택적 작성, 실용성 중심 작성, 목적별 분리 전략 수립
- 도메인 정책 테스트, 유스케이스 테스트, 직렬화/역직렬화 테스트, 학습 테스트의 작성 방식과 한계 설명
- 실제 객체 우선, 테스트 대역은 외부 서비스·부수효과·데이터 확보 어려움 등 필요한 경우에만 제한적으로 사용
구조와 흐름
- 커스텀 AcceptanceTest 애노테이션과 TestExecutionListener로 테스트 컨텍스트 재사용, 데이터 셋업/격리, 포트 설정 처리
- JSON 기반 테스트 데이터 주입, H2 TRUNCATE로 격리 확보, RestAssured 기반 블랙박스 인수 테스트 구성
- 캐시 호환성 검증을 위한 승인 테스트와 부분 기능만 분리해 테스트하는 예시 제시
주의할 점
- 모의 객체 과다 사용 시 구현과 강결합, 리팩터링 취약성, 복잡한 stubbing 증가
- 블랙박스 유스케이스 테스트는 데이터 의존성과 비결정성, 거짓 양성 가능성 존재
- 직렬화/역직렬화 테스트는 현재 엔티티 수준에 머물러 캐시 버저닝 검증 범위가 부족