일반원칙
- 망가질 가능성이 있는 모든 것을 테스트한다.
- 망가지는 모든 것을 테스트한다.
- 새 코드는 무죄가 증명되기 전까지는 유죄.
- 적어도 제품 코드만큼 테스트 코드를 작성한다.
- 컴파일을 할 때마다 지역 테스트를 실행한다.
- 저장소에 체크인하기 전에 모든 테스트를 실행해 본다.
자문해 봐야 할 사항
- 이 코드가 옳게 동작한다면, 어떻게 그것을 알 수 있는가?
- 이것을 어떻게 테스트할 것인가?
- '그밖에' 어떤 것이 잘못될 수 있는가?
- 이와 똑같은 종류의 문제가 다른 곳에서도 일어날 수 있을까?
무엇을 테스트해야 하는가 RIGHT-BICEP
- Right : 결과가 옳은가?
- Boundary : 모든 경계 조건이 CORRECT한가?
- Inverse : 역관계를 확인할 수 있는가?
- Cross-check : 다른 수단을 사용해서 결과를 교차 확인 할 수 있는가?
- Error condition : 에러 조건을 강제로 만들어낼 수 있는가?
- Performance : 성능 특성이 한도내에 있는가?
좋은 테스트는 A-TRIP해야 한다.
- Automatic(자동적)
- Through(철저함)
- Repeatable(반복 가능)
- Independent(독립적)
- Professional(전문적)
CORRECT 경계 조건
- Conformance(형식 일치) : 값의 형식이 예상한 형식과 일치하는가?
- Ordering(순서) : 적절히 순서대로 되어 있거나 그렇지 않은 값인가?
- Range(범위) : 적당한 최소값과 최대값 사이에 있는 값인가?
- Reference(참조) : 코드가 자기가 직접 제어하지 않는 외부 코드를 참조하는가?
- Existence(존재성) : 값이 존재하는가?
- Cardinality(개체 수) : 확실히 충분한 값이 존재하는가?
- Time(시간) : 모든 것이 순서대로 일어나는가? 제시간에? 때맞추어?
<실용주의 프로그래머를 위한 단위 테스트 with JUnit>

::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::
이 책 괜찮나요? 있는 줄도 몰랐네요. 바로 장바구니로 보냈습니다만... :)
네. 좋아요. 처음 유닛 테스트를 시도해 보려는 사람이 읽으면 좋겠더군요. 책값도 싸구요. ㅎ