그래도 이러한 영향을 받아 개발자들은 점점 더 코딩 도중이나 아주 작은 기능이더라도 코딩하기 전에 단위 테스트를 작성하려고 노력한다. 이 접근 방식을 테스트 우선 또는 테스트 주도 개발(TDD)이라고 한다.
Note ≣ | 테스트 주도 개발에 대한 여러 가지 견해
TDD를 둘러싼 다양한 의견이 있다. 누군가는 TDD를 테스트 우선 개발(test-first development)이라고 하고, 또 누군가는 단순히 테스트를 많이 작성하는 것이라고 한다. TDD를 설계 방법론으로 보는 사람도 있으며, 코드 동작을 코드 설계와 함께 이끌어 나가는 방법이라고 생각하는 사람도 있다. 이 책에서는 TDD를 테스트 우선 개발로 정의하며, 설계는 점진적인 역할을 한다고 본다(이 책에서는 이 장에서만 TDD를 다룰 것이다).
그림 1-8과 그림 1-9는 일반적인 코딩 방식과 TDD의 차이점을 보여 준다. 그림 1-9에서 보듯이, TDD는 일반적인 개발 방식과 사뭇 다르다. 먼저 실패하는 테스트를 작성하는 것으로 시작한다. 그다음 테스트를 통과할 수 있게 코드를 수정하고 테스트가 통과하는 것을 확인한 후 코드를 리팩터링하거나 다음으로 구현해야 하는 기능에 대한 테스트를 작성한다. 미구현 기능 테스트는 당연히 실패하므로 앞서 설명한 방식과 동일하게 코드 수정 및 테스트 통과, 리팩터링을 반복한다.