로직 작성 전에 어떻게 테스트 할 것인지 먼저 결정하는 것을 말한다.
그러니까 테스트 코드 작성 -> 개발 순서로 진행되므로 실제로 함수가 어떻게 작성되어야 할 것인지 생각하게된다.
'실용주의 프로그래머'란 책에서는
디자인을 잘 만드려고 할 때보다 테스트 가능성을 높이려고 했을 떄 결과 코드의 디자인이 나은 경우가 많다.
라고 한다.
그리고 TDD가 무엇인지 모를 때 직접 함수를 사용할 때 어떻게 사용 될까 고민하며 설계를 했었다. 테스트 스크립트를 작성하지 않았지만 TDD 프로세스를 따랐던 것이다.
이전에는 설계를 통해서 함수의 시그니쳐가 완성되는 것이 정석이라고 생각하였고, 이런 습관이 안좋은게 아닌가 생각 했었는데 알고보니 직접 사용 할 함수의 시그니쳐를 먼저 만드는 것이 더 나은 방법인 것이다.
대부분의 Test Framework는 비슷하다. JUnit, NUnit 등 X-Unit 시리즈 Framework를 사용하는데 특별한 기능이 있는 것이 아니라 결과가 어떤 값이 올 것인지 Assertion(주장)하고 맞는지 틀린지 확인만 한다.