Cakupan kode adalah ukuran dari berapa banyak baris / blok / busur kode Anda dieksekusi saat tes otomatis berjalan.
Cakupan kode dikumpulkan dengan menggunakan alat khusus untuk memasukkan binari untuk menambahkan panggilan penelusuran dan menjalankan serangkaian uji otomatis terhadap produk yang diinstrumentasi. Alat yang bagus tidak hanya akan memberikan Anda persentase kode yang dieksekusi, tetapi juga akan memungkinkan Anda untuk menelusuri data dan melihat baris kode mana yang dieksekusi selama tes tertentu.
Tim kami menggunakan Magellan - seperangkat alat cakupan kode internal. Jika Anda seorang toko NET., Visual Studio memiliki alat terintegrasi untuk mengumpulkan cakupan kode. Anda juga dapat menggulung beberapa alat khusus, seperti yang dijelaskan artikel ini .
Jika Anda adalah toko C ++, Intel memiliki beberapa alat yang berjalan untuk Windows dan Linux, meskipun saya belum menggunakannya. Saya juga mendengar ada alat gcov untuk GCC, tapi saya tidak tahu apa-apa tentang itu dan tidak bisa memberi Anda tautan.
Mengenai cara kami menggunakannya - cakupan kode adalah salah satu kriteria keluar kami untuk setiap tonggak sejarah. Kami sebenarnya memiliki tiga metrik cakupan kode - cakupan dari tes unit (dari tim pengembangan), tes skenario (dari tim uji) dan cakupan gabungan.
BTW, sementara cakupan kode adalah metrik yang baik tentang seberapa banyak pengujian yang Anda lakukan, itu belum tentu metrik yang baik tentang seberapa baik Anda menguji produk Anda. Ada metrik lain yang harus Anda gunakan bersama dengan cakupan kode untuk memastikan kualitas.
Cakupan kode pada dasarnya menguji bahwa seberapa banyak kode Anda dicakup dalam pengujian. Jadi, jika Anda memiliki cakupan kode 90% dari itu berarti ada 10% kode yang tidak tercakup dalam tes. Saya tahu Anda mungkin berpikir bahwa 90% dari kode tertutup tetapi Anda harus melihat dari sudut yang berbeda. Apa yang menghentikan Anda untuk mendapatkan cakupan kode 100%?
Contoh yang baik adalah ini:
Sekarang, dalam kode di atas ada dua jalur / cabang. Jika Anda selalu menekan cabang "YA" maka Anda tidak menutupi bagian yang lain dan itu akan ditampilkan dalam hasil Cakupan Kode. Ini bagus karena sekarang Anda tahu bahwa apa yang tidak tercakup dan Anda dapat menulis tes untuk menutupi bagian yang lain. Jika tidak ada cakupan kode maka Anda hanya duduk di atas bom waktu untuk meledak.
NCover adalah alat yang bagus untuk mengukur cakupan kode.
sumber
Hanya ingat, memiliki "cakupan kode 100%" tidak berarti semuanya diuji sepenuhnya - walaupun itu berarti setiap baris kode diuji, itu tidak berarti mereka diuji dalam setiap situasi (umum) ..
Saya akan menggunakan kode-cakupan untuk menyoroti bit kode yang saya mungkin harus menulis tes untuk. Sebagai contoh, jika alat cakupan kode apa pun yang menunjukkan myImportantFunction () tidak dieksekusi saat menjalankan tes unit saya saat ini, mereka mungkin harus ditingkatkan.
Pada dasarnya, 100% cakupan kode tidak berarti kode Anda sempurna. Gunakan itu sebagai panduan untuk menulis tes yang lebih komprehensif (unit-).
sumber
x
dan kembalix/x
dan Anda menjalankan tes menggunakan my_func (2) Anda akan memiliki cakupan 100% (karena kode fungsi akan dijalankan) tetapi Anda telah melewatkan masalah besar ketika 0 adalah parameter. Yaitu, Anda belum menguji semua skenario yang diperlukan bahkan dengan cakupan 100%.Melengkapi beberapa poin dari banyak jawaban sebelumnya:
Cakupan kode berarti, seberapa baik set tes Anda mencakup kode sumber Anda. yaitu sejauh mana kode sumber dicakup oleh set kasus uji.
Seperti disebutkan dalam jawaban di atas, ada berbagai kriteria cakupan, seperti jalur, kondisi, fungsi, pernyataan, dll. Tetapi kriteria tambahan yang akan dibahas adalah
Catatan: Analisis kode statis akan menemukan apakah ada kode yang tidak terjangkau atau kode gantung, yaitu kode yang tidak tercakup oleh panggilan fungsi lainnya. Dan juga cakupan statis lainnya. Bahkan jika analisis kode statis melaporkan bahwa kode 100% dicakup, itu tidak memberikan laporan tentang set pengujian Anda jika semua kemungkinan cakupan kode diuji.
sumber
Cakupan kode telah dijelaskan dengan baik dalam jawaban sebelumnya. Jadi ini lebih merupakan jawaban untuk bagian kedua dari pertanyaan.
Kami telah menggunakan tiga alat untuk menentukan cakupan kode.
Kami menggunakan alat ini untuk
sumber
Cakupan kode hanyalah ukuran dari kode yang diuji. Ada berbagai kriteria cakupan yang dapat diukur, tetapi biasanya berbagai jalur, kondisi, fungsi, dan pernyataan dalam suatu program yang membentuk cakupan total. Metrik cakupan kode adalah hanya persentase tes yang mengeksekusi masing-masing kriteria cakupan ini.
Sejauh cara saya melacak cakupan unit test pada proyek saya, saya menggunakan alat analisis kode statis untuk melacak.
sumber
Untuk Perl ada modul Devel :: Cover yang luar biasa yang saya gunakan pada modul saya.
Jika build dan instalasi dikelola oleh Module :: Build, Anda dapat menjalankannya
./Build testcover
untuk mendapatkan situs HTML yang bagus yang memberi tahu Anda cakupan per sub, garis, dan kondisi, dengan warna-warna yang bagus sehingga mudah untuk melihat jalur kode mana yang belum dicakup.sumber
Dalam jawaban sebelumnya, cakupan Kode telah dijelaskan dengan baik. Saya hanya menambahkan beberapa pengetahuan yang berhubungan dengan alat-alat jika Anda bekerja pada
iOS
danOSX
platform, Xcode menyediakan fasilitas untuk cakupan tes dan memantau kode.Tautan Referensi:
https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/07-code_coverage.html
https://medium.com/zendesk-engineering/code-coverage-and-xcode-6b2fb8756a51
Keduanya merupakan tautan bermanfaat untuk mempelajari dan menjelajahi cakupan kode dengan Xcode.
sumber
Untuk PHP, Anda harus melihat Github dari Sebastian Bergmann
https://github.com/sebastianbergmann/php-code-coverage
sumber