실패할 수 있는 테스트failing test가 있는 경우에만 production에 작성해라.
실패를 나타내기에 충분한 정도의 테스트만 작성해라. → 내가 원하는 기능을 완전히 이해하는데에 도움이 된다.
실패하는 테스트가 있다면, 그것이 성공하는 코드 정도를 작성해라.
⇒ 결국, 하나만 파지 말라는 것. 되돌아갈 수 있는 사이클을 확보하라는 것이다!
더 이상 테스트를 생각할 수 없다면 멈추는 것
기능 단위로 모아서 정리: spec 정의 - use case, user story
Spec 의 instance (Scenario, 제일 중요한 것 부터 찾는다): Given-When-Then
Test list 작성 행위 분석 단계 Behavior Analysis Phase (Interface Implementation Split)
→ 테스트 리스트는 중요한 순서대로 작성한다.
Next most degenerated Test
→ 순서가 매우 중요한데, 가장 형편없는 테스트부터 하여 guard clause를 확보한다
→ 인터페이스 설계가 테스트케이스를 작성할 때 이루어진다
→ 테스트가 실패도 되는지 꼭 확인해봐야 한다.
Kent beck 의 구현 전략
데이터의 의도가 중요하며, assert를 꼭 추가한다.
Optionally Refactor to improve the implementation design local Refactoring
End Symmetry, Conceptual Integrity / Pattern / badsmells