Partisi ekuivalensi membagi data masukan ke dalam kelas-kelas di mana sistem harus berperilaku sama. Daripada memeriksa lusinan nilai serupa, QA memilih satu atau dua perwakilan dari setiap kelas yang bermakna.
Ide dasarnya
Jika sistem menangani seluruh rentang secara identik, pengujian setiap nilai akan memberikan sedikit manfaat. Identifikasi kelas sebagai gantinya: format valid, tidak valid, kosong, terlalu besar, dilarang, dan sebagainya.
Sebuah contoh sederhana
Misalkan bidang Usia menerima nilai dari 18 hingga 60 inklusif. Setidaknya ada tiga kelas: di bawah 18, 18–60, dan di atas 60. Pilih nilai yang mewakili setiap kelas daripada mencoba setiap nomor.
Menerapkannya dalam praktik
- →Pahami terlebih dahulu aturan validasi dan makna bisnis bidang atau parameter.
- →Identifikasi kelas dengan perilaku yang diharapkan berbeda.
- →Pilih satu nilai dari setiap kelas dan pertimbangkan batasannya secara terpisah.
- →Periksa nilai valid bersama masukan kosong, bertipe salah, terlarang, dan bertentangan secara logika.
Kesalahan umum
- →Mendefinisikan kelas secara mekanis tanpa memahami logika bisnis.
- →Lupa bahwa kelas ekuivalensi tidak menggantikan analisis nilai batas.
- →Mengasumsikan nilai-nilai setara ketika sistem menanganinya secara berbeda.
- →Hanya menggunakan kelas yang valid dan mengabaikan masukan negatif.
Partisi ekuivalensi sangat berguna untuk formulir, parameter API, filter, rentang, status, dan masukan apa pun di mana pengujian menyeluruh tidak praktis atau tidak ada gunanya. Kekuatannya adalah mengurangi volume pengujian sambil mempertahankan cakupan logis.
Contoh lengkap: kelayakan usia bilangan bulat
Aturan pelatihan: aplikasi menerima usia bilangan bulat dari 18 hingga 65 inklusif. Perlakukan nilai bilangan bulat di bawah 18, dari 18 hingga 65, dan di atas 65 sebagai tiga partisi terpisah untuk aturan ini. Pilih satu perwakilan dari masing-masing sebelum menambahkan pemeriksaan batas.
Partisi Nilai perwakilan Hasil yang diharapkan
Bilangan bulat di bawah 18 16 Tolak: di luar rentang usia yang diizinkan
Bilangan bulat dari 18 sampai 65 40 Terima
Bilangan bulat di atas 65 70 Tolak: di luar rentang usia yang diizinkanModel ini mengasumsikan nilai di dalam setiap partisi diproses dengan cara yang sama. Itu adalah hipotesis desain pengujian, bukan bukti bahwa satu nilai menemukan setiap cacat. Jika aturan bisnis memperkenalkan hasil yang berbeda untuk usia 60–65, bagilah partisi yang valid sesuai dengan itu. Jangan menggabungkan hasil yang berbeda hanya karena semua masukan memiliki tipe data yang sama.
Pisahkan kesalahan representasi
Tentukan juga kontrak pengangkutannya. Dalam latihan ini bidang age JSON harus ada dan berisi bilangan bulat; string, pecahan, dan null tidak valid. Nilai-nilai berikut bukan merupakan perwakilan tambahan dari tiga partisi bilangan bulat.
Payload Hasil yang diharapkan
{} Tolak: kolom wajib tidak ada
{"age": null} Tolak: harus berupa bilangan bulat
{"age": "40"} Tolak: harus berupa bilangan bulat
{"age": 40.5} Tolak: harus berupa bilangan bulat
{"age": 40} TerimaLatihan dan jawabannya
Akankah 25, 40 dan 55 mencakup tiga partisi integer? Tidak: ketiganya berada di partisi yang valid. Satu set seperti 16, 40 dan 70 mencakup ketiganya; lalu tambahkan 17, 18, 19, 64, 65, dan 66 untuk menyelidiki perilaku spesifik batas. Hasil yang diharapkan berasal dari aturan yang disebutkan, sedangkan kode status HTTP dan skema kesalahan memerlukan kontrak API terpisah.