지금까지 과다한 답변 중 동등성 분할 및 경계 값 분석 에 대해서는 아직 아무도 다루지 않았습니다 . 다른 모든 대답은 유용하지만 질적이지만 여기서는 정량적 일 수 있습니다. @fishtoaster는 테스트 정량화의 커버를 통해 엿보기에 대한 구체적인 지침을 제공하지만 동등성 분할 및 경계 값 분석을 통해 더 나은 결과를 얻을 수 있습니다.
동등성 파티셔닝 에서는 가능한 모든 입력 세트를 예상 결과에 따라 그룹으로 나눕니다. 한 그룹의 모든 입력은 동등한 결과를 생성하므로 이러한 그룹을 동등성 클래스 라고 합니다 . 동등한 결과가 동일한 결과를 의미 하지는 않습니다 .
간단한 예로 소문자 ASCII 문자를 대문자로 변환해야하는 프로그램을 고려하십시오. 다른 캐릭터는 신원 변환을 거쳐야합니다. 동등성 클래스로 분류 할 수있는 방법은 다음과 같습니다.
| # | Equivalence class | Input | Output | # test cases |
+------------------------------------------------------------------------+
| 1 | Lowercase letter | a - z | A - Z | 26 |
| 2 | Uppercase letter | A - Z | A - Z | 26 |
| 3 | Non-alphabetic chars | 0-9!@#,/"... | 0-9!@#,/"... | 42 |
| 4 | Non-printable chars | ^C,^S,TAB... | ^C,^S,TAB... | 34 |
마지막 열은 모든 테스트 사례를 열거하면 테스트 사례 수를보고합니다. 기술적으로 @fishtoaster의 규칙 1에서는 52 개의 테스트 사례를 포함합니다. 위에 제공된 처음 두 행에 대한 모든 사례는 "일반 사례"에 해당합니다. @fishtoaster의 규칙 2는 위의 행 3과 4에서 일부 또는 전부를 추가합니다. 그러나 동등성 분할 테스트 에서는 각 동등성 클래스에서 하나의 테스트 케이스로 충분합니다. "a"또는 "g"또는 "w"를 선택하면 동일한 코드 경로를 테스트하는 것입니다. 따라서 52 개가 아닌 총 4 개의 테스트 사례가 있습니다.
경계 값 분석 은 약간의 개선을 권장합니다. 본질적으로 동등성 클래스의 모든 구성원이 동등하지는 않다는 것을 제안합니다. 즉, 경계의 값도 자체적으로 테스트 사례에 적합한 것으로 간주해야합니다. (이것에 대한 하나의 쉬운 정당화는 악명 높은 off-by-one error입니다 !) 따라서 각 동등성 클래스에 대해 3 개의 테스트 입력을 가질 수 있습니다. 위의 입력 도메인과 ASCII 값에 대한 지식을 살펴보면 다음과 같은 테스트 케이스 입력을 얻을 수 있습니다.
| # | Input | # test cases |
| 1 | a, w, z | 3 |
| 2 | A, E, Z | 3 |
| 3 | 0, 5, 9, !, @, *, ~ | 7 |
| 4 | nul, esc, space, del | 4 |
(원래 동등성 클래스 묘사를 다시 생각하고 싶을 수있는 3 개 이상의 경계 값을 얻 자마자 이것은 간단하게 수정하기 위해 되돌아 가지 않았습니다.) 따라서 경계 값 분석은 우리에게 단지 철저한 테스트를 수행하기위한 128 개의 테스트 사례와 비교하여 완벽한 적용 범위를 보장하는 17 개의 테스트 사례. (조합론에 따르면 철저한 테스트는 실제 응용 프로그램에서는 불가능하다고 말할 수는 없습니다!)