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.