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