[워밍업 클럽 2기 BE 클린코드&테스트] 3주차 회고
들어가며
테스트 코드에 대해 깊이 있게 학습하면서, 단순히 코드 검증을 넘어서 더 나은 설계와 신뢰성 있는 애플리케이션을 만들기 위한 다양한 인사이트를 얻을 수 있었습니다.
주요 학습 내용
1. 단위 테스트의 본질 이해
단위 테스트를 작성할 때 가장 중요한 것은 테스트 케이스를 세분화하고, 테스트하기 어려운 영역을 명확히 분리하는 것임을 배웠습니다. 이는 단순히 테스트 커버리지를 높이는 것이 아닌, 코드의 품질을 실질적으로 개선하는 방향으로 이어져야 한다는 점을 깨달았습니다.
2. TDD의 실천적 의미
TDD가 단순한 방법론이 아닌, 설계 품질을 개선하는 도구라는 점을 이해했습니다. Red-Green-Refactor 사이클을 통해 점진적으로 코드를 개선해나가는 과정이 중요하며, 이는 결과물의 품질을 자연스럽게 향상시키는 방법이라는 것을 배웠습니다.
3. 테스트 코드 작성의 실용적 접근
특히 인상 깊었던 부분은 "테스트는 문서다"라는 관점입니다. DisplayName을 섬세하게 작성하고 BDD 스타일로 테스트를 구성함으로써, 테스트 코드가 단순한 검증을 넘어 살아있는 문서의 역할을 할 수 있다는 점이 새로웠습니다.
4. Spring & JPA 환경에서의 테스트
각 계층별 테스트 전략이 다르다는 것을 배웠습니다:
- Persistence Layer: 실제 DB를 사용한 통합 테스트의 중요성
- Business Layer: @Transactional 사용에 대한 신중한 접근
- Presentation Layer: MockMvc를 활용한 효과적인 테스트
5. Mock 사용에 대한 인사이트
Mock을 무분별하게 사용하는 것이 아닌, 필요한 상황에서 적절하게 활용하는 것의 중요성을 배웠습니다. 특히 Classicist와 Mockist의 관점 차이를 이해하면서, 상황에 따른 적절한 선택의 중요성을 깨달았습니다.
개선하고 싶은 부분
1. 테스트 가독성 향상
- BDD 스타일의 일관된 적용
- 더 명확한 DisplayName 작성
2. 테스트 격리성 개선
- 외부 의존성을 최소화하는 설계 고려
- 시간이나 외부 호출 같은 제어하기 힘든 값들에 대한 더 나은 처리 방법 연구
3. 효율적인 테스트 구조화
- 테스트 코드의 중복 최소화
- 재사용 가능한 테스트 유틸리티 개발
앞으로의 다짐
1. 테스트를 통한 문서화를 더욱 강화하여 코드의 의도를 명확히 전달하겠습니다.
2. TDD를 실무에 점진적으로 도입하여 코드 품질을 개선하겠습니다.
3. Mock 사용에 있어 더 신중한 판단을 하고, 실제 객체를 사용할 수 있는 상황에서는 실제 객체를 사용하도록 하겠습니다.
마치며
테스트 코드는 단순한 버그 예방 차원을 넘어, 더 나은 설계를 이끌어내는 도구이자 살아있는 문서라는 점을 깊이 이해하게 되었습니다. 앞으로도 이러한 인사이트를 바탕으로 더 나은 테스트 코드를 작성하기 위해 노력하겠습니다.
댓글을 작성해보세요.