Coverage Testing Menggunakan NUnit, OpenCover dan ReportGenerator
Sudah menggunakan unit testing ? Klo belum mampir ke sini dulu ya
Kali ini kita akan membahas tentang coverage testing yaitu pengetesan yang dilakukan untuk mengecek apakah unit testing yang dibuat telah meng-cover semua kode yang perlu dites. Jika unit testingnya terlalu sedikit atau waktu membuat unit testingnya asal-asalan biasanya coverage testingnya akan gagal.
Mengecek satu-persatu unit testing yang dibuat oleh programmer apakah sudah sesuai dengan kode yang perlu dites jelas tidak mungkin, untungnya sudah tersedia banyak tool yang bisa melakukkannya secara otomatis.
Berikut beberapa tool yang bisa digunakan untuk melakukan coverage testing di dunia .NET yaitu :
Duet maut ketiga tool di atas bisa kita gunakan untuk melakukan prosedur coverage testing. Untuk mendownloadnya Anda tinggal klik link di atas, khusus untuk OpenCover dan Report Generator sebaiknya disimpan di folder yang sama.
Proses Coverage Testing
Secara umum proses coverage testing menggunakan ke tiga tool di atas bisa di gambarkan seperti berikut
Keterangan gambar :
- NUnit tool menjalankan prosedur unit testing terhadap file library yang sudah ditentukan
- Dari proses poin 1 akan digunakan OpenCover untuk mengenerate file hasil coverage test dalam format xml. Karena file hasil generatenya dalam format xml, tentu akan menyulitkan kita untuk membacanya, makanya kita butuh tool terakhir yaitu Report Generator
- Report Generator digunakan untuk membuat laporan format HTML yang lebih
manusiawi
sehingga mudah dibaca berdasarkan file coverage.xml
Berdasarkan keterangan di atas kita bisa menuliskan batch command untuk prosedur coverage testing seperti berikut :
Tahapan poin 1 dan 2
Tahapan poin 3
Persiapan Coverage Testing
Sama seperti pembahasan unit testing kita juga membutuhkan dua project yaitu project target dan project unit testing. Untuk contoh disini kita sudah punya dua project yaitu KRSoftwareLib dan KRSoftwareLibUnitTest.
Project KRSoftwareLib mempunyai sebuah class yaitu DayHelper dan mempunyai dua method GetIndonesianDay
dan Weekday
yang akan kita buatkan unit testingnya.
Nah ini unit testing dari method GetIndonesianDay
.
Setelah project KRSoftwareLibUnitTest
-nya selesai, kemudian dilanjutkan dengan proses build project, baru kita jalankan prosedur coverage testing :
Dari proses coverage test di atas akan menghasilkan coverage test yang bagus, karena semua kondisi sudah dites. Berikut adalah hasil coverage testnya:
Coba perhatikan kolom Line coverage
dan Branch coverage
nilainya 100% (warna hijaunya penuh).
Kita juga bisa melihat detail coverage test dari class DayHelper.cs :
Nah sekarang kita coba menonaktifkan beberapa baris kode tesnya untuk melihat perbedaan nilai kolom Line coverage
dan Branch coverage
seperti ini :
Hasil coverage testingnya jadi jelek alias gagal karena hanya dua kondisi yang di tes yaitu hari Senin
dan Selasa
.
Dari detail coverage testnya class DayHelper.cs juga kelihatan baris/kondisi yang belum di tes:
Gampang bukan ? Dengan coverage testing ini, kita jadi mudah untuk mendeteksi tingkat keseriusan programmer dalam membuat unit testing.
Build Events
Sebenarnya pembahasan coverage testingnya sudah selesai, tapi berhubungan prosedur coverage testing di atas masih dijalankan secara manual via command prompt tentu akan menyulitkan kita untuk mengecek unit testingnya setiap ada perubahan. Salah satu solusinya adalah dengan memanfaatkan fasilitas Build Events yang sudah disediakan oleh Visual Studio .NET.
Nah berikut skrip Build Events yang harus kita buat untuk menjalankan prosedur coverage testing di atas secara otomatis, setiap kali project unit testingnya di build.
Jadi setiap kita melakukan build project, prosedur coverage testing otomatis akan dijalankan.
Selamat MENCOBA
Referensi :
Comments