블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.
1. 좋은 단위 테스트의 4대 요소 자세히 살펴보기
회귀 방지
회귀
- 소프트웨어 버그
- 코드를 수정한 후, 기능이 의도한 대로 작동하지 않는 경우를 의미함
- 코드는 책임이며, 작성할수록 더욱 많은 버그에 노출됨
- 프로그램이 커질수록 코드가 늘어나므로 회귀를 방지하는 것이 중요
테스트 점수
- 테스트 코드 양
- 코드 복잡도
- 코드의 도메인 유의성
리팩터링 내성
- 애플리케이션 코드를 리팩토링하더라도 관련 테스트가 제대로 동작하는지를 의미함
거짓 양성
- 허위 경보
- 실제로 기능은 잘 동작하지만, 테스트는 실패라 하는 경우
- 영향
- 코드 문제에 대응하는 능력이 떨어지고 희석됨
- 리팩토링이 줄어즘
- 원인
- 일반적으로 코드를 리팩토링할 때 발생함
- 테스트 대상 시스템이 구현 세부 사항이 많이 결합할수록 더 많이 생김
- 해결방법
- 구현 세부 사항에서 테스트 분리하기
- 최종 사용자의 관점에서 최종 결과를 검증하는지 확인
빠른 피드백
- 단위 테스트의 필수 속성
- 빠를수록 테스트 스위트에서 더 많은 테스트를 수행할 수 있음
- 버그 수정 비용이 매우 줄어듬
유지 보수성
- 테스트의 유지비를 평가
얼마나 이해하기 어려운가
- 코드 라인이 적을 수록 읽기 쉬움
얼마나 실행하기 어려운가
- 테스트가 외부 종속성으로 작동하면 의존성을 운영하는 시간이 들게 됨
2. 회귀 방지와 리팩터링 내성의 본질적인 관계
테스트 정확도 극대화
테스트 정확도
- 테스트 정확도를 향상시키는 방법
- 신호를 증가시키기(버그를 찾는 테스트)
- 소음을 줄이기(허위 경보)
거짓 음성
- 테스트가 기능 고장을 잡아내지 못하는 경우
- 회귀방지가 도움이 됨
거짓 양성
- 테스트가 기능 고장을 거짓으로 잡아낸 경우
- 리팩토링 내성이 도움이 됨
- 초기에는 별로 중요하지 않음
- 리팩토링 할 일이 없기 때문
'Code' 카테고리의 다른 글
[단위 테스트] 5-1. 목과 테스트 취약성: 목 (0) | 2025.01.24 |
---|---|
[단위 테스트] 4-2. 좋은 단위 테스트의 4대 요소: 이상적인 테스트 (0) | 2025.01.24 |
[단위 테스트] 3. 단위 테스트 구조 (0) | 2025.01.07 |
[단위 테스트] 2-2. 단위 테스트란 무엇인가: 런던파와 고전파 (1) | 2025.01.07 |
[단위 테스트] 2-1. 단위 테스트란 무엇인가: 단위 테스트란 (0) | 2025.01.07 |