구현보다 테스트 코드를 먼저 작성하는 개발 방법이다. 구현 대상을 어떻게 사용할 것인지 구체적으로 생각하게 만든다.

'실용주의 프로그래머' 책에서:

디자인을 잘 만드려고 할 때보다 테스트 가능성을 높이려고 했을 때 결과 코드의 디자인이 나은 경우가 많다.