블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.
1. 소프트웨어 엔트로피
- 코드베이스는 시간이 흐를수록 복잡성과 불확실성이 증가하는 경향이 있음
흐름
- ⚠️ 엔트로피 증가: 코드 변경 시, 복잡도가 증가함
- ➡️ 예기치 못한 문제 발생: 복잡한 코드에 새 기능을 추가하면 부작용 발생 가능성이 커짐
- ➡️ 신뢰성 하락: 테스트가 없는 프로젝트는 처음엔 빠르게 개발되지만, 시간이 갈수록 코드 작성이 급격히 느려짐
2. 테스트 코드 작성의 중요성
- 새로운 기능을 개발할 때마다 새로운 버그 가능성이 존재함
- ✅ 코드 설계가 적절하지 못하면 테스트 코드 작성이 어려워지고, 테스트 코드 자체도 오류를 포함할 수 있음
- ⚠️ 잘못된 테스트 코드는 신뢰성을 떨어뜨려, 상황을 더 악화시킬 수 있음
- ➡️ 테스트 코드의 품질도 본 코드만큼 중요하게 다루어야 함
3. 단위 테스트
목표
- 코드 품질 보장 (간접적): 테스트가 어렵다면, 설계 자체에 문제가 있다는 신호
- 안전망 역할: 예상치 못한 버그로부터 보호 (보험 역할)
- 지속 가능한 성장: 새로운 기능 추가 시, 기능이 잘 정상 작동하는지 확인하면서 개발할 수 있음
저품질 코드
- 강결합: 컴포넌트 간 분리 어려움
- 구조적 문제: 설계가 불량한 경우(복잡한 시나리오, 의존성 많음 등)
- ⚠️ 테스트하기 어려움
장점
| 항목 | 설명 |
| 지속성 |
초기는 힘들지만, 장기적으로 유지보수성과 생산성 향상
|
| 확장성 |
프로젝트 규모가 커져도 안정적인 확장이 가능
|
| 설계 개선 |
테스트 가능한 구조는 곧 좋은 설계 구조를 의미 (낮은 결합도, 높은 응집도 등)
|
| 이해 용이성 |
구조가 명확하므로, 이해와 파악이 쉬움
|
고려 사항
| 항목 | 설명 |
| 테스트 변경 반영 |
기능 변경 시, 관련 테스트 코드도 함께 수정해야 함
|
| 경고 처리 중요성 |
테스트에서 자주 발생하는 경고를 무시하지 말고, 분석하여 해결해야 함
|
| 책임과 비용 인식 |
코드베이스가 커질수록 테스트의 중요성과 비용이 커짐 (버그 가능성과 유지비용 증가 때문)
→ 테스트 코드도 간결하게 유지해야 함 |
'Code > Test' 카테고리의 다른 글
| [단위 테스트] 4-1. 좋은 단위 테스트의 4대 요소: 4대 요소 (0) | 2025.01.19 |
|---|---|
| [단위 테스트] 3. 단위 테스트 구조 (0) | 2025.01.07 |
| [단위 테스트] 2-2. 단위 테스트란 무엇인가: 런던파와 고전파 (1) | 2025.01.07 |
| [단위 테스트] 2-1. 단위 테스트란 무엇인가: 단위 테스트란 (0) | 2025.01.07 |
| [단위 테스트] 1-2. 단위 테스트의 목표: 커버리지 지표 (1) | 2025.01.06 |