Untuk mereka bentuk ujian sempadan, cari setiap tepi dalam peraturan, senaraikan nilai tepat di bawah, pada dan tepat di atas setiap tepi, tulis apa yang peraturan katakan patut berlaku, dan hanya kemudian jalankan kod. Jadual itu ialah ujian. Kod ialah perkara yang anda semak terhadapnya.
Ujian sempadan menangkap kesilapan kecil yang paling biasa dalam pemilihan dan gelung. Ia juga memberi bukti bahawa pembetulan berjaya, iaitu sesuatu yang lebih kukuh daripada perasaan.
Mengapa ralat berkumpul di tepi?
Kebanyakan julat sesuatu peraturan tidak kabur. Markah 30 gagal dan markah 90 ialah A dalam hampir semua versi kod. Perbezaan antara “lebih besar daripada” dan “lebih besar daripada atau sama dengan” hanya kelihatan pada nilai yang tepat.
Maka ujian dengan nilai selesa boleh lulus sedangkan kod salah. Pepijat berada di satu tempat yang tidak anda lihat.
Cara mereka bentuk ujian
- Tulis peraturan dalam perkataan ringkas, termasuk julat yang sah.
- Tandakan setiap tepi di mana keputusan berubah.
- Senaraikan nilai tepat di bawah, pada dan tepat di atas setiap tepi, serta satu nilai tipikal.
- Isi lajur dijangka daripada peraturan, sebelum menjalankan apa-apa.
- Jalankan kod dan isi lajur sebenar.
- Betulkan kod, kemudian jalankan semula seluruh jadual, bukan hanya baris yang gagal.
Contoh berlangkah
Peraturan: markah dari 0 hingga 100.
Markah 80 atau lebih mendapat “A”. Markah 50 hingga 79 mendapat “Pass”. Di bawah 50 mendapat “Fail”.
Kod yang ditulis seorang pelajar:
def grade(mark):
if mark > 80:
return "A"
elif mark > 50:
return "Pass"
else:
return "Fail"
Tepinya ialah 50 dan 80. Jadualnya:
| Markah | Dijangka | Sebenar | Keputusan |
|---|---|---|---|
| 0 | Fail | Fail | betul |
| 49 | Fail | Fail | betul |
| 50 | Pass | Fail | salah |
| 79 | Pass | Pass | betul |
| 80 | A | Pass | salah |
| 100 | A | A | betul |
Dua baris gagal, kedua-duanya tepat pada tepi.
Puncanya sama di kedua-dua tempat: > sepatutnya >=. Selepas mengubah kedua-duanya, jalankan semula keenam-enam baris. Semuanya kini patut sepadan.
Kesilapan yang perlu diperhatikan
Seorang pelajar melihat 50 memberi keputusan salah, mengubah baris itu dan menjalankan semula baris itu sahaja. Ia lulus, jadi pelajar berhenti. Kesalahan pada 80 masih ada.
Versi kedua kesilapan ini ialah menguji 30, 65 dan 90 sahaja. Ketiga-tiganya lulus dengan kod yang rosak, jadi pelajar menyimpulkan kod itu baik.
Pembetulannya: pilih nilai daripada tepi, dan jalankan semula jadual penuh selepas setiap suntingan.
Semak kendiri
1. Satu peraturan menyatakan “tiket kanak-kanak jika umur di bawah 13”. Nilai mana yang menguji tepi?
Tunjukkan jawapan
12 (kanak-kanak) dan 13 (bukan kanak-kanak), dan 14 sebagai nilai tepat di atas. Tepinya ialah 13.
2. Satu peraturan menyatakan “lulus jika markah sekurang-kurangnya 50”. Tulis dua nilai ujian yang paling berguna dan keputusan dijangkanya.
Tunjukkan jawapan
49 memberi Fail dan 50 memberi Lulus. Kedua-duanya terletak di kedua-dua belah tepi.
3. Dengan kod gred yang rosak di atas, adakah menguji 30, 65 dan 90 akan mendedahkan pepijat?
Tunjukkan jawapan
Tidak. 30 memberi Fail, 65 memberi Pass dan 90 memberi A, semuanya betul. Hanya 50 dan 80 mendedahkan kesalahan.
Seterusnya
Pelajaran tentang mereka bentuk data ujian normal, sempadan dan tidak sah dan mengenal pasti cabang yang tidak diuji membincangkannya dengan lebih lanjut. Untuk melatih langkah pertama, lihat mencipta contoh pembelajaran minimum yang boleh diulang. Anda boleh menjalankan latihan asli yang kecil dalam kotak pasir penaakulan Python yang selamat.
Apabila ujian lulus tetapi anda masih tidak dapat menerangkan sebabnya, tuisyen Computer Science satu dengan satu memberi anda guru untuk menaakul peraturan itu bersama. Panduan pembelajaran Computer Science menunjukkan bagaimana pengujian sesuai dalam subjek ini.