
1. 다루고자 하는 테스트 시나리오의 목록을 작성한다.
- 대상 기능에 대한 떠올릴 수 있는 모든 테스트 시나리오를 나열합니다.
- Kent Beck은 테스트 시나리오 목록 작성을 본인의 책에서 설명했지만 많은 사람들이 그걸 놓친 것 같다고 말했습니다.
- 테스트 시나리오 목록은 TDD 과정 뿐 아니라 제품의 품질에 큰 영향을 미칩니다.
2. 목록에서 정확히 한 가지 항목을 실제 실행 가능한 구체적인 테스트로 전환한다
- 테스트 시나리오 목록에서 정확히 하나를 선택해서 이 시나리오에 해당하는 자동화된 테스트를 작성합니다.
- 테스트에 의해 인터페이스가 처음으로 사용됩니다.
- 테스트 작성이 완료되면 실행해서 실패 결과를 확인합니다.
- 운영 코드를 변경하지 않은 이유로 인해 실패해야 합니다.
인터페이스 설계 시점
- 독립적인 작업이라면 “2. 목록에서 정확히 한 가지 항목을 실제 실행 가능한 구체적인 테스트로 전환한다” 단계에서 시작할 수 있습니다.
- 협업에 필요한 인터페이스라면 “1. 다루고자 하는 테스트 시나리오의 목록을 작성한다” 단계에서 초안이 작성될 수 있습니다.
- 예를 들어 HTTP API 계약에 기반해 각각의 작업자에 의해 클라이언트와 서버가 병렬로 구현될 수 있습니다.
- 독립적인 작업의 경우에도 1번 단계에서 테스트 시나리오 목록과 인터페이스 설계 초안을 함께 작성하면 두 작업이 공진화하기도 합니다.
3. 전환된 테스트(및 모든 이전 테스트)를 통과하도록 코드를 변경한다
- 모든 테스트를 통과하도록 운영 코드를 변경합니다.
- 테스트를 통과하게 만드는 데 집중합니다.
- 코드가 깨끗한지 또는 중복되는지는 중요하지 않습니다.
- 모든 테스트를 통과하는 것을 확인한 후 새로 추가한 테스트에 해당하는 시나리오에 완료 표시를 합니다.