RED
→ 구체적인 하나의 요구사항을 검증하는 하나의 테스트를 추가
→ 추가된 테스트가 실패하는지 확인
실패하는 것을 확인해야 테스트가 동작함을 믿을 수 있음
운영 코드 변경이 진행되지 않았기 때문에 실패했는지 확인해야 함
GREEN
→ 추가된 테스트를 비롯해 모든 테스트가 성공하도록 운영 코드를 변경
→ 테스트 성공은 요구사항 만족을 의미
→ 테스트 성공을 위한 최소한의 변경
REFACTOR
→ 코드베이스 정리
→ 구현 설계 개선: 가독성, 적응성, 성능
→ 모든 테스트 성공을 전제
Passes the tests
Reveals intention: 의도 노출
No duplication
Fewest elements: 필요하지 않은 코드는 제거
Reveals intention vs No duplication = 서로 상충되는 의미, 우선순위는 같으며 상황에 따라 프로그래머가 선택하는 영역
TDD를 사용할지 말지는 프로젝트의 기간에 따른다.