단위 테스트의 목표
- 단위 테스트의 목표는 소프트웨어 프로젝트의 지속 가능한 성장을 가능하게 하는것이다.
- 지속성과 확장성이 핵심이며, 이를 통해 장기적으로 개발 속도를 유지할 수 있다.
- 코드를 단위 테스트하기 어렵다면 코드 개선이 반드시 필요하다는것을 의미한다.
- 테스트는 안전망 역할을 하며, 대부분의 회귀(regression)에 대한 보험을 제공한느 도구라 할 수 있다.
회귀는 특정 사건(일반적으로 코드 수정) 후에 기능이 의도한 대로 작동하지 않는 경우다. 소프트웨어 버그와 회귀라는 용어는 동의어이며 바꿔서 사용할 수 있다.
- 테스트의 가치와 유지 비용을 모두 고려해야 한다.
- 기반 코드를 리팩터링할 때 테스트도 리팩터링하라.
- 각 코드 변경 시 테스트를 실행하라.
- 테스트가 잘못된 경고를 발생시킬 경우 처리하라.
- 기반 코드가 어떻게 동작하는지 이해하려고 할 때는 테스트를 읽는 데 시간을 투자하라
- 기반 코드를 리팩터링할 때 테스트도 리팩터링하라.
테스트 스위트 품질 측정을 위한 커버리지 지표
- 테스트 대상 시스템의 모든 가능한 결과를 검증한다고 보장할 수 없다.
- 외부 라이브러리의 코드 경로를 고려할 수 있는 커버리지 지표는 없다.
- 커버리지 지표로 테스트가 철저한지 또는 테스트가 충부한지 알 수는 없다.
성공적인 테스트 스위트 기준
- 개발 주기에 통합돼 있다.
- 코드베이스에서 가장 중요한 부분만을 대상으로 한다.
- 비즈니스 로직 테스트가 시간 투자 대비 최고의 수익을 낼 수 있다. 이 부분은 세 가지 범주로 나눌 수 있다.
- 인프라 코드
- 데이터베이스나 서드파티 시스템과 같은 외부 서비스 및 종속성
- 모든 것을 하나로 묶는 코드
- 최소한의 유지비로 최대의 가치를 끌어낸다.
참고
'개발관련 서적 정리 > Unit Testing' 카테고리의 다른 글
6. 단위 테스트 스타일 (0) | 2023.02.08 |
---|---|
5. 목과 테스트 취약성 (0) | 2023.02.06 |
4. 좋은 단위 테스트의 4대 요소 (0) | 2023.02.05 |
3. 단위 테스트 구조 (1) | 2023.02.05 |
2. 단위 테스트란 무엇인가 (1) | 2023.02.05 |