Anda tidak menyebutkan alat pengujian Anda. Banyak yang memiliki fungsi "menggabungkan" yang memungkinkan Anda mengagregasi hasil dari beberapa proses atau suite. Jika Anda ingin metrik cakupan agregat, jelajahi fitur menggabungkan di alat cakupan Anda.
Sekarang, bisakah kita bicara tentang gajah di ruangan itu?
Tidak ada sendok. Dan tidak ada "persentase cakupan total." Setidaknya, tidak ada yang sederhana.
Persentase cakupan adalah metrik yang siap dipahami yang disajikan untuk membantu memahami ruang lingkup, kedalaman, dan rentang suite pengujian. Tetapi seperti tolok ukur sederhana lainnya, sangat mudah untuk menjadi target yang terpaku pada nilai ini sebagai semacam jimat ajaib "pengujian lengkap."
Katakanlah Anda telah mencapai kemuliaan "cakupan uji 100%." Yay! Tapi apa artinya itu? 100% dari baris kode diuji, kan? Lalu bagaimana dengan garis ini?
launch_missile = launch_authorized and launch_cmd_given else previous_launch_status
"Menutupi" garis itu berarti sesuatu - tetapi tidak banyak, karena ada berbagai kondisi yang True
atau False
dengan beberapa kemungkinan, tetapi tidak mungkin bahwa Anda telah menguji semua kombinasi kondisi tersebut. Sekalipun garis itu tertutupi belasan kali, jika salah satu kondisinya relatif tidak umum, Anda belum mendekati untuk menguji semua hasil nyata yang mungkin terjadi dalam praktik. Untuk membuatnya lebih jelas, contoh yang lebih sintetis:
engage_laser = (laser_armed and safety_disengaged) or random.random() < 0.0000003
Berapa kali Anda harus menutup garis itu untuk benar-benar mengujinya? Berapa kali Anda harus menutupinya untuk mengujinya dalam kombinasi dengan semua variabel lain dalam program (dengan probabilitas mereka sendiri, yang mungkin sangat jarang terjadi)?
Saya tidak mengatakan bahwa metrik cakupan tidak berguna. Mereka sebenarnya hebat . Mereka fokus pada salah satu masalah utama: Seberapa luas sistem perangkat lunak saya diuji? Mereka membantu beralih dari "kami memiliki beberapa tes" ke "kami telah diuji secara menyeluruh."
Tetapi saat Anda mengerjakan "skor gabungan," kenyataannya adalah skor Anda biasanya untuk "cakupan pernyataan" dan bukan "kondisi," "cakupan predikat," atau "jalur" . Jadi berapapun jumlah skor agregat Anda berikan kepada Anda, kecil kemungkinan bahwa angka itu memberi Anda gambaran nyata tentang seberapa banyak status potensial program Anda dan kombinasi status yang sedang diuji. Saat Anda sedang berupaya meningkatkan persentase cakupan Anda, pertimbangkan juga untuk mengukur cakupan predikat Anda. Ini akan memberi Anda pandangan yang lebih realistis - dan hampir selalu, lebih serius - tentang uji kepanjangan dari tes.