[실용주의 단위 테스트] 6장_무엇을 테스트할 것인가?
무엇을 테스트해야하는지 정리한다.
이것으로 쉽게 요약할 수 있다 : Right-BICEP
- Right : 결과가 올바른가 ?
- B : Boundary. 경계 조건은 맞는가 ?
- I : Inverse relationship. 역관계를 검사할 수 있나 ?
- C : Cross check. 다른 수단을 활용해서 교차 검사 가능한가 ?
- E : Error. 오류를 강제로 발생시킬 수 있는가 ?
- P : Performance. 성능 조건은 기준에 부합하나 ?
1. Right
테스트 코드는 무엇보다도 먼저, 기대한 결과를 산출하는지 검증
해야한다.
다음 코드의 ScoreCollection 에 더 많은 숫자나 더 큰 수를 넣어서 테스트를 강화할 수 있다. 하지만 이러한 테스트는 행복 경로 테스트의 영역일 뿐이다.
1 | public class ScoreCollectionTest { |
2. Boundary
대부분의 결함은 Corner Case 이다. 테스트로 이것들을 처리해야한다. 다음과 같은 경계 조건이 있다.
- 모호하고 일관성 없는 입력 값. ex) 특수문자가 포함된 파일 이름
- 잘못된 양식의 데이터
- Overflow 를 일으키는 계산
- 비거나 빠진 값. ex) 0, “”, null
- 이성적인 기대 값을 벗어나는 값. ex) 200 세의 나이
- 중복을 허용해서는 안되는 목록에 중복 값이 있는 경우
- 정렬이 안된 정렬 리스트 혹은 그 반대
- 시간 순이 맞지 않는 경우. ex) HTTP Server 가 OPTIONS 메서드의 결과를 POST 메서드 보다 나중에 반환
다음 클래스를 기준으로 테스트해보자.
1 | public class ScoreCollection { |