코드 냄새 299 - 과도한 테스트 설정
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 초보 개발자 및 테스트 자동화에 관심 있는 프로젝트 팀원
- 난이도: 중간 (테스트 코드 유지보수와 설계 원칙 이해 필요)
핵심 요약
- 과도한 테스트 설정(Overloaded Test Setup)은 테스트 케이스가 복잡한 초기화 로직을 과도하게 포함하여 테스트 유지보수성 저하를 유발하는 코드 냄새
- 테스트 초기화 로직(Test Setup)이 중복되거나 복잡한 상태 관리로 인해 테스트 실행 시간 증가 및 테스트 격리성 손상
- 단일 책임 원칙(SRP)과 DIP(의존성 역전 원칙) 위반으로 테스트와 비즈니스 로직 혼합
섹션별 세부 요약
- 코드 냄새 정의
- Overloaded Test Setup은 테스트 설정 코드가 복잡한 상태 조건 및 중복된 초기화 로직으로 인해 테스트 실행 시간 증가
- 예시:
setUp()
메서드 내에서 다수의 외부 라이브러리 초기화, 중복된 데이터 생성 로직 포함
- 문제점 분석
- 테스트 격리성 손상: 공유 상태(Shared State)가 다른 테스트 케이스에 영향
- 유지보수성 저하: 초기화 로직 변경 시 다수의 테스트 케이스 재작성 필요
- 해결 방안
- 테스트 전용 도메인 객체(Test Double) 사용으로 의존성 분리
- 테스트 설정을 모듈화하여 반복 가능한 초기화 로직 추출
- Mock 객체 및 스파이(Spy) 활용으로 불필요한 실제 시스템 의존성 제거
결론
- *과도한 테스트 설정(Overloaded Test Setup)은 테스트 코드의 복잡성 증가와 유지보수성 저하**를 유발하는 주요 코드 냄새.
- 해결 전략:
- 테스트 초기화 로직을 별도 모듈로 분리
- Mock 객체 사용으로 실제 시스템 의존성 제거
- 테스트 격리성 확보를 위해 스파이(Spy) 활용
- 실무 팁:
- 테스트 설정 코드가 20줄 이상인 경우 리팩토링 검토 필요
- Jest 또는 Mockito와 같은 테스트 프레임워크의 제공 기능 활용 권장