사실 테스트 케이스는 많으면 많을 수록 좋다고 생각합니다.
하지만 이렇게 테스트를 작성하다보면 아래와 같은 테스트 코드가 만들어질 수 있습니다.
@DisplayName
@Test
void validateNumbersSize() {
Assertions.assertAll(
() -> assertThatThrownBy(() -> new Numbers(1, 2, 31, 41)).isInstanceOf(IllegalArgumentException.class)
() -> assertThatThrownBy(() -> new Numbers(1, 3, 32, 42)).isInstanceOf(IllegalArgumentException.class)
() -> assertThatThrownBy(() -> new Numbers(1, 4, 33, 43)).isInstanceOf(IllegalArgumentException.class)
() -> assertThatThrownBy(() -> new Numbers(1, 5, 34, 44)).isInstanceOf(IllegalArgumentException.class)
() -> assertThatThrownBy(() -> new Numbers(1, 6, 35, 45)).isInstanceOf(IllegalArgumentException.class)
() -> assertThatThrownBy(() -> new Numbers(1, 7, 36, 46)).isInstanceOf(IllegalArgumentException.class)
() -> assertThatThrownBy(() -> new Numbers(1, 8, 37, 47)).isInstanceOf(IllegalArgumentException.class)
() -> assertThatThrownBy(() -> new Numbers(1, 9, 38, 48)).isInstanceOf(IllegalArgumentException.class)
() -> assertThatThrownBy(() -> new Numbers(1, 10, 39, 49)).isInstanceOf(IllegalArgumentException.class)
() -> assertThatThrownBy(() -> new Numbers(1, 11, 30, 40)).isInstanceOf(IllegalArgumentException.class)
);
}
이렇게 테스트 코드를 작성하다보면 테스트를 이해하기도 어렵고 리팩토링에 대한 내성도 떨어진다.
그러므로 적절한 테스트 케이스를 가지고 테스트를 작성하는 것이 중요하다.
정보처리기사 책에 공부하다보면 블랙박스 테스트란 내용이 나온다.
그 중에서도 "경계값 분석" 이란 테스트 종류가 나온다.
경계값 분석이란 “동치 분할의 경계부분에 해당되는 입력값에서 결함이 발견될 확률이 높다는 특성을 이용한 소프트웨어 테스트 기법” 이라고 한다.
보통 결함은 경계값에서 결함이 발견될 확률이 높기 때문에 결함을 예방하기 위해선 경계부분에 해당하는 값을 포함해서 테스트해야한다는 것이다.
테스트를 작성할 때는 경계 값을 기준으로 테스트 케이스를 작성하는 것을 추천한다.