이 시스템은 JSON 문서를 수신하고 응답하는 HTTP API여야 하며, 이를 통해 외부와 상호작용할 것입니다. API는 동작에 관한 외부 클라이언트와의 계약(contract)이기 때문에 한번 설정한 다음에는 가급적 그대로 유지하는 것이 중요합니다.
인터페이스 동작에서 퇴행을 방지하려면 어떻게 해야 할까요? 한 가지 방법은 HTTP 인터페이스 부분에 맞춰서 자동화된 테스트를 작성하는 것입니다. 어떤 것을 구현하기 전에 테스트부터 작성하면, 테스트 주도 개발을 실현하는 수단으로 사용할 수 있습니다.
이러한 테스트는 자동화된 승인 테스트[49] 역할도 할 수 있으므로, 이 과정을 승인-테스트 주도 개발(acceptance-test-driven development)이라고 부를 수 있습니다. 하지만 이보다는 외부 접근 테스트 주도 개발(outside-in test-driven development)15이라 부르는 것이 더 좋을 것 같습니다. 인터페이스에서 시작하는 동안에도 내부 동작을 구현할 수 있기 때문입니다. 곧 이 부분에 대한 예를 살펴보겠습니다.