테스트 코드는 무엇보다도 먼저 기대한 결과를 산출하는지 검증할 수 있어야 합니다. 코드에 대해 행복 경로 테스트를 할 수 없다면 그 내용을 완전히 이해하지 못한 것입니다.
입력 값의 양 극단을 다루는 테스트를 작성할 필요가 있습니다.
- 모호하고 일관성 없는 값.
- 잘못된 양식의 데이터.
- 수치적 오버플로를 일으키는 계산.
- 비거나 빠진 값.
- 이성적인 기댓값을 훨씬 벗어나는 값.
- 교실의 당번표처럼 중복을 허용해서는 안 되는 목록에 중복 값이 있는 경우.
- 정렬이 안 된 리스트 혹은 그 반대.
- 시간 순이 맞지 않는 경우.
논리적인 역 관계를 적용하여 행동을 검사합니다. 항상 역 관계가 성립하는 것은 아니지만, 수학 계산 같은 경우에 사용할 수 있습니다. 곱셈을 나눗셈으로 검증하고 뺄셈을 덧셈으로 검증하는 식입니다.
어떤 문제를 해결하기 위해서는 여러 가지 방법이 있을 수 있습니다. 우리는 그 중에 가장 좋은 해법이라고 생각하는 것을 선택합니다. 하지만 여전히 선택되지 못한 해법들도 유효한 해법들입니다. 조금 비효율적이지만 쉽고 안정적인 해법일 가능성도 있습니다. 이러한 경우, 프로덕션 코드의 결과를 차선의 해법으로 얻어낸 결과와 비교하는 테스트를 작성할 수 있습니다.
행복 경로의 반대편 역시 테스트할 필요가 있습니다. 다음의 시나리오들을 테스트할 수 있는 방법들에 대해 고려해볼 필요가 있습니다.
- 메모리가 가득찰 때.
- 디스크 공간이 가득 찰 때.
- 벽시계 시간에 관한 문제들.(ex. 서버와 클라이언트 간 시간이 달라서 발생하는 문제들)
- 네트워크 가용성 및 오류들.
- 시스템 로드.
- 제한된 색상 팔레트.
- 매우 높거나 낮은 비디오 해상도.
JUnit은 어떤 코드가 특정 시간 안에 실행되는지를 단언하는 인터페이스를 제공하고 있습니다. 다만 이 때 주의할 점은 다음과 같습니다.
- 코드 덩어리를 충분한 횟수만큼 실행합니다. 몇 번만 하면 할 때마다 결과가 들쭉날쭉할 수 있습니다.
- 반복하는 코드 부분을 JVM이 최적화하지 못하는지 확인해야 합니다.
- 최적화되지 않은 테스트들을 빠른 테스트들과 분리해야합니다. 성능 테스트는 야밤에 한 번이면 충분합니다.
실용주의 단위 테스트. 8장. 깔끔한 코드로 리팩토링하기. (0) | 2021.06.22 |
---|---|
실용주의 단위 테스트. 7장. 경계 조건: CORRECT 기억법. (0) | 2020.01.01 |
실용주의 단위 테스트. 5장. 좋은 테스트의 FIRST 속성. (0) | 2019.11.10 |
실용주의 단위 테스트. 4장. 테스트 조직. (0) | 2019.11.06 |
실용주의 단위 테스트. 3장. JUnit 단언 깊게 파기. (0) | 2019.11.03 |
댓글 영역