Saya sangat suka jawaban @ RevBingo karena ia menyarankan bahwa perjuangan menuju 100% dapat menyebabkan Anda untuk membersihkan atau menghapus kode yang tidak digunakan. Apa yang belum saya lihat di jawaban lain adalah perasaan ketika Anda membutuhkan cakupan tinggi dan ketika Anda tidak. Saya mencoba memulai ini. Saya pikir menambahkan detail ke bagan seperti ini akan menjadi pengejaran yang lebih bermanfaat daripada menemukan satu nomor cakupan tes yang tepat untuk semua kode.
100%
Untuk API publik, seperti Koleksi java.util, yang tidak digabungkan ke Database dan tidak mengembalikan HTML, saya pikir cakupan 100% adalah tujuan awal yang mulia, bahkan jika Anda menerima 90-95% karena waktu atau lainnya kendala. Meningkatkan cakupan tes setelah Anda menampilkan kekuatan lengkap tingkat pengawasan yang lebih rinci daripada jenis review kode lainnya. Jika API Anda sama sekali populer, orang akan menggunakannya, mensubklasifikasikan, deserialize, dll. Dengan cara yang tidak dapat Anda harapkan. Anda tidak ingin pengalaman pertama mereka menemukan bug, atau pengawasan desain!
90%
Untuk kode infrastruktur bisnis, yang menggunakan struktur data dan mengembalikan struktur data, 100% mungkin masih merupakan tujuan awal yang baik, tetapi jika kode ini tidak cukup publik untuk mengundang banyak penyalahgunaan, mungkin 85% masih dapat diterima?
75%
Untuk kode yang menerima dan mengembalikan Strings, saya pikir pengujian unit jauh lebih rapuh, tetapi masih bisa berguna dalam banyak situasi.
50% atau kurang
Saya benci menulis tes untuk fungsi yang mengembalikan HTML karena sangat rapuh. Bagaimana jika seseorang mengubah CSS, JavaScript, atau seluruh gumpalan HTML dan bahasa Inggris yang Anda kembalikan tidak masuk akal bagi pengguna akhir manusia? Jika Anda dapat menemukan fungsi yang menggunakan banyak logika bisnis untuk menghasilkan sedikit HTML, ini mungkin layak untuk diuji. Tetapi situasi sebaliknya mungkin tidak layak untuk diuji sama sekali.
Mendekati 0%
Untuk beberapa kode, definisi "benar" adalah "masuk akal bagi pengguna akhir." Ada tes non-tradisional yang dapat Anda lakukan terhadap kode ini seperti pemeriksaan tata bahasa otomatis atau HTML memvalidasi output. Saya bahkan telah mengatur pernyataan grep untuk ketidakkonsistenan kecil yang biasanya kita menjadi mangsa di tempat kerja, seperti mengatakan "Login" ketika seluruh sistem menyebutnya, "Masuk". Pria ini tidak sepenuhnya menjadi unit test, tetapi cara yang bermanfaat untuk menangkap masalah tanpa mengharapkan output spesifik.
Namun pada akhirnya, hanya manusia yang bisa menilai apa yang masuk akal bagi manusia. Pengujian unit tidak dapat membantu Anda di sana. Terkadang dibutuhkan beberapa manusia untuk menilai itu dengan akurat.
Absolut 0%
Ini adalah kategori yang menyedihkan dan saya merasa kurang dari orang untuk menulisnya. Tetapi dalam proyek yang cukup besar ada lubang kelinci yang dapat menyedot waktu orang-minggu tanpa memberikan manfaat bisnis.
Saya membeli buku karena diklaim menunjukkan cara mengolok-olok data untuk menguji Hibernate. Tapi itu hanya menguji Hibernate HQL dan SQL queries. Jika Anda harus melakukan banyak HQL dan SQL, Anda benar-benar tidak mendapatkan keuntungan dari Hibernate. Ada bentuk database Hibernate di memori, tapi saya belum menginvestasikan waktu untuk mencari tahu bagaimana menggunakannya secara efektif dalam tes. Jika saya menjalankannya, saya ingin memiliki cakupan pengujian yang tinggi (50% -100%) untuk logika bisnis apa pun yang menghitung barang dengan menavigasi grafik objek yang menyebabkan Hibernate menjalankan beberapa permintaan. Kemampuan saya untuk menguji kode ini mendekati 0% sekarang dan itu masalah. Jadi saya meningkatkan cakupan pengujian di area lain dari proyek dan mencoba untuk lebih memilih fungsi murni daripada yang mengakses database, terutama karena lebih mudah untuk menulis tes untuk fungsi-fungsi tersebut. Masih,