5장 | 좋은 테스트의 FIRST 속성
FIRST
- Fast
- Isolated
- Repeatable
- Self-validating
- Timely
Fast
- 테스트 코드를 빠르게 유지하라.
- 시스템이 커지면 단위 테스트도 실행하는 데 점점 오래 걸린다.
- 단위 테스트의 가치는 대상 시스템에 대한 지속적이고 종합적인 빠른 피드백에 있다.
- 설계를 깨끗하게 하고, 외부 자원 호출을 줄이고, 느린 테스트에 대한 의존성을 줄여야 한다.
Isolated
- 직·간접적으로 상호 작용하는 코드를 최소화하라.
- 외부 데이터 의존성은 테스트가 가용성 혹은 접근성을 이유로 실패할 가능성을 증가시킨다.
- 다른 단위 테스트에 의존하지 않고, 어떤 순서나 시간에 관계없이 실행할 수 있어야 한다.
Repeatable
- 반복 가능한 테스트는 실행할 때마다 결과가 같아야 한다.
- 모든 테스트는 전적으로 프로그래머의 통제 하에 있어야 한다.
- 직접 통제할 수 없는 외부 환경에 있는 항목들과 격리시켜야 한다.
ex) 현재 시간을 나타내는 Mock 객체 사용
Self-validating
- 테스트의 결과로 기대하는 것이 무엇인지 단언할 수 있어야 하고 검증할 수 있어야 한다.
- 테스트에 필요한 어떤 설정 단계든 자동화를 해야 한다.
Timely
- 단위 테스트로 적시에 코드를 검증해야 한다.
- 역동적이고 새로운 코드들에 대해 우선적으로 단위 테스트를 수행하는 것이 효과적이다.