Di antara sejumlah besar jawaban sehingga sejauh ini belum ada yang menyentuh pada partisi kesetaraan dan analisis nilai batas , pertimbangan vital dalam jawaban untuk pertanyaan yang ada. Semua jawaban lain, walaupun bermanfaat, bersifat kualitatif tetapi dimungkinkan - dan lebih disukai - untuk menjadi kuantitatif di sini. @fishtoaster memberikan beberapa pedoman konkret, hanya mengintip di bawah selimut kuantifikasi uji, tetapi partisi kesetaraan dan analisis nilai batas memungkinkan kita melakukan yang lebih baik.
Dalam partisi kesetaraan , Anda membagi set semua input yang mungkin menjadi kelompok berdasarkan hasil yang diharapkan. Setiap input dari satu grup akan menghasilkan hasil yang setara, sehingga grup tersebut disebut kelas ekivalensi . (Perhatikan bahwa hasil yang setara tidak berarti hasil yang identik.)
Sebagai contoh sederhana, pertimbangkan program yang harus mengubah karakter ASCII huruf kecil menjadi karakter huruf besar. Karakter lain harus menjalani transformasi identitas, yaitu tetap tidak berubah. Berikut adalah salah satu kemungkinan pengelompokan ke dalam kelas kesetaraan:
| # | 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 |
Kolom terakhir melaporkan jumlah kasus uji jika Anda menyebutkan semuanya. Secara teknis, dengan aturan @ fishtoaster 1 Anda akan menyertakan 52 kasus uji - semua untuk dua baris pertama yang diberikan di atas termasuk dalam "kasus umum". Aturan @ fishtoaster 2 akan menambahkan beberapa atau semua dari baris 3 dan 4 di atas juga. Tapi dengan kesetaraan partisi menguji setiap satu test case di masing-masing kelas kesetaraan cukup. Jika Anda memilih "a" atau "g" atau "w" Anda sedang menguji jalur kode yang sama. Dengan demikian, Anda memiliki total 4 kasus uji, bukannya 52+.
Analisis nilai batas merekomendasikan sedikit perbaikan: pada dasarnya itu menunjukkan bahwa tidak setiap anggota kelas ekuivalensi, yah, setara. Artinya, nilai pada batas juga harus dianggap layak untuk kasus uji dalam hak mereka sendiri. (Satu pembenaran mudah untuk ini adalah kesalahan off-by-one yang terkenal !) Jadi, untuk setiap kelas ekivalensi Anda dapat memiliki 3 input uji. Melihat domain input di atas - dan dengan sedikit pengetahuan tentang nilai-nilai ASCII - saya mungkin akan menghasilkan input-input kasus uji ini:
| # | Input | # test cases |
| 1 | a, w, z | 3 |
| 2 | A, E, Z | 3 |
| 3 | 0, 5, 9, !, @, *, ~ | 7 |
| 4 | nul, esc, space, del | 4 |
(Segera setelah Anda mendapatkan lebih dari 3 nilai batas yang menunjukkan Anda mungkin ingin memikirkan kembali delineasi kelas ekuivalensi asli Anda, tapi ini cukup sederhana sehingga saya tidak kembali untuk merevisinya.) Dengan demikian, analisis nilai batas membawa kita ke hanya 17 kasus uji - dengan tingkat kepercayaan penuh akan cakupan penuh - dibandingkan dengan 128 kasus uji untuk melakukan pengujian lengkap. (Belum lagi bahwa kombinatorik mendikte bahwa pengujian lengkap hanya tidak layak untuk aplikasi dunia nyata!)