블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.
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 |