[JUnit] 무엇을 테스트할지 선별하기 ::(7)

ggyu_55·2023년 7월 26일
0

메모

목록 보기
28/46
post-thumbnail

Right - BICEP


Right :: 결과가 올바른가?

테스트는 무엇보다 먼저 기대한 결과를 내뱉는지 검증할 수 있어야 한다.

Boundary condition :: 경계 조건에서는 어떤가?

생각해야 하는 경계 조건은 다음과 같다.

  • 모호하고 일관성없는 입력 값. 예를 들어 특문이 포함된 파일 이름

  • 잘못된 양식의 데이터. 예를 들면 최상위 도메인이 빠진 이메일 주소

  • 수치적 오버플로우를 일으키는 계산

  • 비거나 빠진 값. 예를 들어 0, 0.0, "", 혹은 null

  • 상식적인 기댓값을 훨씬 벗어나는 값. 예를 들면 300m의 신장

  • 중복을 허용해서는 안되는 목록에 중복 값이 있는 경우

  • 정렬이 안된 정렬 리스트 혹은 그 반대. 정렬 알고리즘에 이미 정렬된 입력값을 넣는 경우나 정렬 알고리즘에 역순 데이터를 넣는 경우

  • 시간 순이 맞지 않는 경우. 예를 들어 HTTP 서버가 OPTIONS 메서드의 결과를 POST 메서드 보다 먼저 반환해야 하지만 그 후에 반환하는 경우


CORRECT :: 잠재적인 경게 조건

잠재적인 경계 조건을 기억하는데 도움을 준다. 이 조건들을 위반할 때 어떤 일이 일어날 수 있는지 생각해 보자.

  • Conformance(준수) : 값이 기대한 양식을 준수하는지

  • Ordering(순서) : 값의 집합이 적절하게 정렬되거나 정렬되지 않았는지

  • Range(범위) : 이성적인 최솟값과 최댓값 안에 있는지

  • Reference(참조) : 코드 자체에서 통제할 수 없는 어떠한 외부 참조를 포함하고 있는지

  • Existence(존재) : 값이 존재하는 지(non-null, non-zero, 집합에 존재하는지 등)

  • Cardinality(기수) : 정확히 충분한 값들이 있는지

  • Time(절대적 혹은 상대적 시간) : 모든 것들이 정확하고 적절한 순서대로 일어나는지

Inverse relationship :: 역관계를 검사할 수 있는가?

Cross-check :: 다른 수단을 활용하여 교차 검사할 수 있는가?

Error conditions :: 오류 조건을 강제로 일어나게 할 수 있는가?

Performance characteristics :: 성능 조건이 기준에 부합하는가?


참고 :: 자바와 JUnit을 활용한 실용주의 단위 테스트

0개의 댓글