Trong số rất nhiều câu trả lời, do đó, không ai chạm vào phân vùng tương đương và phân tích giá trị biên , các cân nhắc quan trọng trong câu trả lời cho câu hỏi trong tầm tay. Tất cả các câu trả lời khác, mặc dù hữu ích, là định tính nhưng có thể - và tốt hơn - là định lượng ở đây. @fishtoaster cung cấp một số hướng dẫn cụ thể, chỉ cần nhìn trộm dưới vỏ bọc của định lượng thử nghiệm, nhưng phân vùng tương đương và phân tích giá trị biên cho phép chúng tôi làm tốt hơn.
Trong phân vùng tương đương , bạn chia tập hợp tất cả các đầu vào có thể thành các nhóm dựa trên kết quả mong đợi. Bất kỳ đầu vào từ một nhóm sẽ mang lại kết quả tương đương, do đó các nhóm như vậy được gọi là các lớp tương đương . (Lưu ý rằng kết quả tương đương không có nghĩa là kết quả giống hệt nhau.)
Như một ví dụ đơn giản, hãy xem xét một chương trình nên chuyển đổi các ký tự ASCII chữ thường thành các ký tự viết hoa. Các nhân vật khác phải trải qua một sự chuyển đổi danh tính, tức là không thay đổi. Đây là một sự cố có thể thành các lớp tương đương:
| # | 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 |
Cột cuối cùng báo cáo số lượng các trường hợp thử nghiệm nếu bạn liệt kê tất cả chúng. Về mặt kỹ thuật, theo quy tắc 1 của @ fishtoaster, bạn sẽ bao gồm 52 trường hợp thử nghiệm - tất cả các trường hợp cho hai hàng đầu tiên được đưa ra ở trên đều thuộc "trường hợp chung". Quy tắc 2 của fishtoaster cũng sẽ thêm một số hoặc tất cả từ hàng 3 và 4 ở trên. Nhưng với kiểm tra phân vùng tương đương, bất kỳ một trường hợp kiểm thử nào trong mỗi lớp tương đương là đủ. Nếu bạn chọn "a" hoặc "g" hoặc "w", bạn đang kiểm tra cùng một đường dẫn mã. Như vậy, bạn có tổng cộng 4 trường hợp thử nghiệm thay vì 52+.
Phân tích giá trị ranh giới đề xuất một sàng lọc nhỏ: về cơ bản nó cho thấy rằng không phải mọi thành viên của một lớp tương đương là tốt, tương đương. Đó là, các giá trị tại các ranh giới cũng nên được coi là xứng đáng với một trường hợp thử nghiệm theo quyền riêng của chúng. (Một cách biện minh dễ dàng cho điều này là lỗi tắt khét tiếng !) Vì vậy, với mỗi lớp tương đương, bạn có thể có 3 đầu vào kiểm tra. Nhìn vào miền đầu vào ở trên - và với một số kiến thức về các giá trị ASCII - tôi có thể đưa ra các đầu vào trường hợp thử nghiệm này:
| # | Input | # test cases |
| 1 | a, w, z | 3 |
| 2 | A, E, Z | 3 |
| 3 | 0, 5, 9, !, @, *, ~ | 7 |
| 4 | nul, esc, space, del | 4 |
(Ngay sau khi bạn nhận được nhiều hơn 3 giá trị ranh giới cho thấy bạn có thể muốn suy nghĩ lại về các phân định lớp tương đương ban đầu của mình, nhưng điều này đủ đơn giản để tôi không quay lại để sửa đổi chúng.) 17 trường hợp thử nghiệm - với độ tin cậy cao về phạm vi bảo hiểm hoàn chỉnh - so với 128 trường hợp thử nghiệm để thực hiện thử nghiệm toàn diện. (Không đề cập đến việc tổ hợp ra lệnh rằng thử nghiệm toàn diện đơn giản là không khả thi đối với bất kỳ ứng dụng trong thế giới thực nào!)