- 모든 함수와 메소드에 대한 테스트 케이스를 작성하는 절차
- 하나의 함수, 메서드를 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트
- 해당 단위에 대해서 독립적으로 테스트를 하기 때문에 빠른 리팩토링 반영과 빠른 테스트를 진행할 수 있음
- 코드의 확장이나 리팩토링 시에도 안정성을 확보한 채로 빠르게 대응 할 수 있음
- 테스트는 빠르게 동작할 수 있어야 함
- 테스트 코드는 빠르게 확인하고, 수정하고 반영하는 데에 큰 의미가 있기 때문에 속도가 느려선 안됨
- 각각의 테스트는 서로 독립적이며 서로 의존해서는 안됨
- 다른 코드에 대한 의존성을 낮춰 완전히 통제된 상황에서 테스트를 진행해야 함
- 테스트는 언제 어디서나 같은 결과가 반복되어야 함
- 통제가 어려운 부분에 대해서는 테스트를 위한 가짜 객체를 만들어 주는 방법을 선택
- 테스트는 Bool을 이용하여 성공/실패에 대해서 스스로 검증이 가능해야 함.
- 이상적인 테스트는 테스트하려는 실제 코드를 구현하기 직전에 구현해야 함.
- 실제 코드를 구현한 후에 테스트 코드를 작성하는 경우 테스트하기가 매우 까다롭거나 불가능할 수 있음