테스트는 안전망 역할을 하며, 대부분의 회귀(regression)에 대한 보험을 제공한느 도구라 할 수 있다.
회귀는 특정 사건(일반적으로 코드 수정) 후에 기능이 의도한 대로 작동하지 않는 경우다. 소프트웨어 버그와 회귀라는 용어는 동의어이며 바꿔서 사용할 수 있다.
테스트의 가치와 유지 비용을 모두 고려해야 한다.
- 기반 코드를 리팩터링할 때 테스트도 리팩터링하라.
- 각 코드 변경 시 테스트를 실행하라.
- 테스트가 잘못된 경고를 발생시킬 경우 처리하라.
- 기반 코드가 어떻게 동작하는지 이해하려고 할 때는 테스트를 읽는 데 시간을 투자하라
테스트 스위트 품질 측정을 위한 커버리지 지표
테스트 대상 시스템의 모든 가능한 결과를 검증한다고 보장할 수 없다.
외부 라이브러리의 코드 경로를 고려할 수 있는 커버리지 지표는 없다.
커버리지 지표로 테스트가 철저한지 또는 테스트가 충부한지 알 수는 없다.
성공적인 테스트 스위트 기준
개발 주기에 통합돼 있다.
코드베이스에서 가장 중요한 부분만을 대상으로 한다.
비즈니스 로직 테스트가 시간 투자 대비 최고의 수익을 낼 수 있다. 이 부분은 세 가지 범주로 나눌 수 있다.
- 인프라 코드
- 데이터베이스나 서드파티 시스템과 같은 외부 서비스 및 종속성
- 모든 것을 하나로 묶는 코드