Pelajaran ini punya latihan. Latihannya berjalan di sandbox Academy Anda — proyek TestForge sungguhan berisi ShopMini, yang disimpan terpisah dari dasbor dan daftar proyek Anda.
Dasar-Dasar QAPelajaran 6 dari 13
EnglishEquivalence partitioning
Ubah ruang input yang tak terhingga menjadi segelintir pengujian, dengan mengelompokkan input yang diperlakukan sama oleh sistem.
12 mntDasar-Dasar QAPraktik
Gagasannya
Kalau sistem memperlakukan satu kelompok input dengan cara yang sama, menguji satu anggota kelompok itu memberi tahu Anda kurang lebih sebanyak menguji semuanya. Setiap kelompok itu disebut equivalence partition (partisi ekuivalensi), atau equivalence class.
Jadi: pecah ruang input menjadi beberapa partisi, ambil satu wakil dari masing-masing, dan "tak terhingga" tadi berganti jadi "segelintir" — lengkap dengan alasan yang tegas dan bisa dipertanggungjawabkan atas apa yang Anda tinggalkan.
Dua aturan yang membuatnya bekerja:
- Antar partisi tidak boleh tumpang tindih, dan bersama-sama harus mencakup segalanya yang mungkin dimasukkan pengguna — termasuk yang ngawur.
- Setiap partisi diuji. Baik yang valid (seharusnya diterima) maupun yang invalid (seharusnya ditolak, dengan baik-baik).
Pemula menguji tiga nilai valid lalu menganggapnya selesai. Bug-nya justru tinggal di partisi yang invalid.
Contoh dikerjakan: kuantitas di ShopMini
Kebutuhan. Di halaman produk, pelanggan dapat memesan antara 1 sampai 99 item. Kuantitas adalah bilangan bulat.
Partisinya:
| # | Partisi | Valid? | Wakil |
|---|---|---|---|
| P1 | 1 … 99 | valid | 42 |
| P2 | kurang dari 1 (0, negatif) | invalid | -5 |
| P3 | lebih dari 99 | invalid | 500 |
| P4 | bukan bilangan bulat | invalid | 2.5 |
| P5 | bukan angka sama sekali | invalid | "abc" |
| P6 | kosong | invalid | "" |
Enam pengujian, bukan tak terhingga — dan perhatikan bahwa P4–P6 adalah yang biasanya tidak terpikirkan oleh developer, dan justru karena itulah ketiganya menemukan bug.
Partisi juga ada pada output
Jangan hanya mempartisi input. Tanyakan hasil berbeda apa saja yang bisa diproduksi sistem, lalu pastikan masing-masing bisa dicapai oleh setidaknya satu pengujian.
Kebutuhan. Pesanan di atas Rp 500.000 gratis ongkir; di bawah itu ongkir Rp 20.000; pesanan di atas Rp 5.000.000 butuh persetujuan manajer.
Partisi output: ongkir dibayar, gratis ongkir, gratis ongkir + butuh persetujuan. Tiga pengujian, diturunkan dari hasilnya, bukan dari kolomnya.
Di mana teknik ini meleset
Mengasumsikan sebuah partisi tanpa memeriksanya. "Semua string di atas 255 karakter berperilaku sama" — sampai 256 terpotong diam-diam dan 10.000 membuat request-nya jatuh. Kalau Anda menduga sistem memperlakukan sebagian kelompok secara berbeda, berarti itu dua partisi.
Lupa bahwa valid ≠ satu partisi. Kalau aturannya "mahasiswa dapat diskon 20%, karyawan 30%, selain itu 0%", maka valid adalah tiga partisi, bukan satu.
Menguji hanya satu nilai invalid per pengujian. Masukkan satu kolom invalid dalam satu waktu. Kalau Anda mengirim form dengan empat kolom bermasalah dan hanya mendapat satu pesan kesalahan, Anda nyaris tidak belajar apa pun tentang tiga sisanya.
Berhenti di partisi. Tepi setiap partisi adalah tempat bug yang sebenarnya berada — dan itu isi pelajaran berikutnya.
Latih sendiri
Ambil kebutuhan ini:
Kode diskon ShopMini panjangnya 6–10 karakter, hanya huruf dan angka, dan tidak membedakan huruf besar-kecil. Kode kedaluwarsa ditolak dengan pesan khusus.
Tuliskan dulu partisinya sebelum Anda membaca lebih jauh. Setidaknya Anda mesti sampai pada: terlalu pendek, panjang yang valid, terlalu panjang, mengandung simbol, mengandung spasi, ekuivalensi huruf kecil vs huruf besar, valid tapi kedaluwarsa, kode tak dikenal, dan kosong.
Itu ~9 pengujian untuk satu kolom teks — dan sembilan yang bisa dipertanggungjawabkan, karena Anda bisa menyebutkan apa yang dicakup masing-masing.
🛠 Giliran Anda, di TestForge
Latihan sandbox untuk pelajaran ini memakai kolom yang berbeda supaya tidak mengulang tabel kuantitas di atas: kode diskon ShopMini (6–10 huruf atau angka, tidak membedakan huruf besar-kecil). Tulis test case per partisi untuk kolom itu di suite Checkout — valid, terlalu pendek, terlalu panjang, karakter yang tidak diperbolehkan, kedaluwarsa — dan checker-nya mencari setidaknya tiga partisi berbeda di seluruh case Anda, dinilai dari apa yang benar-benar dikatakan judul dan langkah tiap case, bukan dari kecocokan kata per kata.
Kalau Anda ingin berlatih sebelum sandbox terbuka untuk Anda, tulis dulu tabel kuantitas di atas dengan tangan: satu baris per partisi, berisi input yang akan Anda pakai dan hasil yang Anda harapkan. Simpan daftarnya; Anda akan memperluasnya di pelajaran berikutnya.
Selanjutnya: boundary value analysis — saat kebutuhan yang sama menyerahkan bug-nya yang sesungguhnya.
Uji pemahaman Anda
3 pertanyaan. Tidak perlu akun, dan tidak ada yang dikirim ke mana pun selain ke pemeriksa jawaban.
1. Kuantitas ShopMini menerima bilangan bulat 1–99. Seorang rekan menguji 5, 40, dan 80 lalu menganggap kolom itu sudah tercakup. Apa yang keliru?
2. "Mahasiswa dapat diskon 20%, karyawan 30%, selain itu tidak dapat apa-apa." Itu berapa partisi valid?
3. Mana di antara ini yang merupakan equivalence partition yang sah untuk diuji pada sebuah kolom teks wajib isi?(pilih semua yang sesuai)