테스트는 무엇보다 먼저 기대한 결과를 내뱉는지 검증할 수 있어야 한다.
생각해야 하는 경계 조건은 다음과 같다.
모호하고 일관성없는 입력 값. 예를 들어 특문이 포함된 파일 이름
잘못된 양식의 데이터. 예를 들면 최상위 도메인이 빠진 이메일 주소
수치적 오버플로우를 일으키는 계산
비거나 빠진 값. 예를 들어 0, 0.0, "", 혹은 null
상식적인 기댓값을 훨씬 벗어나는 값. 예를 들면 300m의 신장
중복을 허용해서는 안되는 목록에 중복 값이 있는 경우
정렬이 안된 정렬 리스트 혹은 그 반대. 정렬 알고리즘에 이미 정렬된 입력값을 넣는 경우나 정렬 알고리즘에 역순 데이터를 넣는 경우
시간 순이 맞지 않는 경우. 예를 들어 HTTP 서버가 OPTIONS 메서드의 결과를 POST 메서드 보다 먼저 반환해야 하지만 그 후에 반환하는 경우
잠재적인 경계 조건을 기억하는데 도움을 준다. 이 조건들을 위반할 때 어떤 일이 일어날 수 있는지 생각해 보자.
Conformance(준수) : 값이 기대한 양식을 준수하는지
Ordering(순서) : 값의 집합이 적절하게 정렬되거나 정렬되지 않았는지
Range(범위) : 이성적인 최솟값과 최댓값 안에 있는지
Reference(참조) : 코드 자체에서 통제할 수 없는 어떠한 외부 참조를 포함하고 있는지
Existence(존재) : 값이 존재하는 지(non-null, non-zero, 집합에 존재하는지 등)
Cardinality(기수) : 정확히 충분한 값들이 있는지
Time(절대적 혹은 상대적 시간) : 모든 것들이 정확하고 적절한 순서대로 일어나는지