Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Pengujian Perangkat Lunak

Pelajaran 10 dari 15

Merancang kasus uji

Cakupan kode: pernyataan, cabang, dan batasnya

Setelah pelajaran ini kamu bisa membedakan cakupan pernyataan, cabang, dan jalur, menulis test yang menjalankan setiap baris fungsi, dan menjelaskan kenapa angka cakupan tinggi belum membuktikan test yang baik.

±13 menitDiperiksa 3 Okt 2026

Materi

Cakupan (coverage) mengukur bagian kode yang dijalankan oleh test. Bacaan MIT 6.005 membedakan tiga tingkat. Cakupan pernyataan: setiap pernyataan dijalankan oleh minimal satu test. Cakupan cabang: setiap if dan while diambil ke arah benar dan ke arah salah. Cakupan jalur: setiap kombinasi cabang dilewati. Cakupan cabang lebih kuat dari cakupan pernyataan, dan cakupan jalur lebih kuat dari cakupan cabang.

def ongkos_cetak(lembar, warna):
    biaya = lembar * 500
    if warna:
        biaya = lembar * 1500
    return biaya

# Test ongkos_cetak(10, True) saja menjalankan keempat pernyataan: cakupan pernyataan 100%.
# Arah salah dari if warna tidak pernah diambil: cakupan cabang 50%.

Berbeda dengan partisi, cakupan dilihat dari kode, jadi termasuk pengujian kotak putih. Gunanya menemukan bagian kode yang belum pernah dijalankan test sama sekali, misalnya cabang penolakan yang tidak pernah dicoba. Python punya modul trace bawaan yang mencatat baris yang dijalankan; alat cakupan di proyek nyata menghitung hal yang sama per berkas dan menandai baris yang terlewat.

Angka cakupan yang tinggi tidak membuktikan test-nya baik. Martin Fowler menulis bahwa cakupan berguna untuk menemukan bagian yang belum diuji, tetapi hampir tidak berarti sebagai angka mutu test, karena cakupan tinggi mudah dicapai dengan test bermutu rendah; contoh paling ekstremnya test tanpa assert. Test semacam itu menjalankan setiap baris dan tetap lulus walaupun semua hasilnya salah. Karena itu latihan di bawah memeriksa dua hal sekaligus: semua baris dijalankan, dan hasilnya diperiksa.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 2 dari 3

Fungsi diskon_grosir(jumlah, harga) punya tiga langkah: total = jumlah x harga; bila jumlah >= 100, total dipotong 10 persen (satu if tanpa else); lalu total dikembalikan. Satu-satunya test memanggil diskon_grosir(150, 2000). Berapa persen cakupan cabangnya?

Latihan 3 dari 3

Seorang rekan menunjukkan cakupan 100 persen dari test yang memanggil semua fungsi tanpa satu assert pun. Pernyataan mana yang benar?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke