Code Alat Cakupan: Pengujian Pernyataan, Cabang & Keputusan
โก Ringkasan Cerdas
Code Coverage adalah pengukuran white-box yang melaporkan sejauh mana kode sumber telah dijalankan oleh rangkaian pengujian.ping Tim-tim tersebut menemukan pernyataan, cabang, kondisi, dan jalur yang belum diuji yang mungkin ditempati oleh cacat tersembunyi.

Apa itu Code Cakupan?
Code liputan adalah ukuran yang menggambarkan sejauh mana kode sumber suatu program telah diuji. Ini adalah salah satu bentuk dari pengujian kotak putih yang menemukan area dalam program yang belum diuji oleh serangkaian kasus uji. Ini juga membantu membuat kasus uji tambahan untuk meningkatkan cakupan dan menentukan ukuran kuantitatif dari cakupan kode.
Pada umumnya, sistem cakupan kode mengumpulkan informasi tentang program yang sedang berjalan. Kemudian, sistem tersebut menggabungkan informasi tersebut dengan informasi kode sumber untuk menghasilkan laporan tentang cakupan kode dari rangkaian pengujian.
Mengapa Menggunakan Code Pengujian Cakupan?
Berikut adalah beberapa alasan utama untuk menggunakan cakupan kode:
- Ini membantu Anda mengukur efisiensi implementasi pengujian.
- Ini menawarkan pengukuran kuantitatif terhadap pengujian.
- Ini mendefinisikan sejauh mana kode sumber telah diuji.
Code Metode Cakupan
Berikut ini adalah metode-metode cakupan kode utama:
- Cakupan Pernyataan
- Cakupan Keputusan
- Cakupan Cabang
- Toggle Cakupan
- Cakupan FSM
Cakupan Pernyataan
Cakupan Pernyataan Statement Coverage adalah teknik pengujian white box di mana semua pernyataan yang dapat dieksekusi dalam kode sumber dijalankan setidaknya sekali. Teknik ini digunakan untuk menghitung jumlah pernyataan dalam kode sumber yang telah dieksekusi. Tujuan utama Statement Coverage adalah untuk mencakup semua kemungkinan jalur, baris, dan pernyataan dalam kode sumber.
Cakupan pernyataan digunakan untuk mendapatkan skenario berdasarkan struktur kode yang sedang diuji.
Dalam pengujian white box, penguji berkonsentrasi pada cara kerja perangkat lunak. Dengan kata lain, penguji berkonsentrasi pada cara kerja internal kode sumber yang berkaitan dengan grafik alur kontrol atau diagram alur.
Secara umum, dalam perangkat lunak apa pun, jika Anda melihat kode sumbernya, akan ada berbagai macam elemen seperti operator, fungsi, dan lain-lain.ping, penanganan pengecualian, dan sebagainya. Berdasarkan input ke program, beberapa pernyataan kode mungkin tidak dieksekusi. Tujuan dari cakupan pernyataan adalah untuk mencakup semua kemungkinan jalur, baris, dan pernyataan dalam kode.
Mari kita pahami hal ini dengan contoh cara menghitung cakupan pernyataan. Di sini kita mengambil dua skenario berbeda untuk memeriksa persentase cakupan pernyataan untuk setiap skenario.
sumber Code:
Prints (int a, int b) { ------------ Printsum is a function int result = a + b; If (result > 0) Print ("Positive", result) Else Print ("Negative", result) } ----------- End of the source code
Skenario 1: Jika A = 3, B = 9
Pernyataan yang ditandai dengan warna kuning adalah pernyataan yang dieksekusi sesuai skenario. Jumlah pernyataan yang dieksekusi = 5, Jumlah total pernyataan = 7, sehingga Cakupan Pernyataan = 5/7 = 71%.
Skenario 2: Jika A = -3, B = -9
Pernyataan yang ditandai dengan warna kuning adalah pernyataan yang dieksekusi sesuai skenario. Jumlah pernyataan yang dieksekusi = 6, Jumlah total pernyataan = 7, sehingga Cakupan Pernyataan = 6/7 = 85%.
Namun secara keseluruhan, jika Anda perhatikan, semua pernyataan tercakup dalam kedua skenario tersebut. Jadi kita dapat menyimpulkan bahwa cakupan pernyataan secara keseluruhan adalah 100%.
Apa saja yang tercakup dalam Cakupan Pernyataan?
- Pernyataan yang Tidak Digunakan
- Mati Code
- Cabang yang Tidak Digunakan
- Pernyataan yang Hilang
Pengujian Cakupan Keputusan
Cakupan Keputusan adalah teknik pengujian white box yang melaporkan hasil benar atau salah dari setiap ekspresi boolean dalam kode sumber. Tujuan dari pengujian cakupan keputusan adalah untuk mencakup dan memvalidasi semua kode sumber yang dapat diakses dengan memeriksa dan memastikan bahwa setiap cabang dari setiap titik keputusan yang mungkin dieksekusi setidaknya sekali.
Pada tipe cakupan ini, ekspresi dapat menjadi kompleks, sehingga sulit untuk mencapai cakupan 100%. Inilah sebabnya mengapa berbagai metode digunakan untuk melaporkan metrik ini. Metode-metode ini memprioritaskan kombinasi yang paling kritis. Meskipun mirip dengan cakupan cabang, metode ini memberikan sensitivitas yang lebih besar terhadap alur kontrol.
Contoh Cakupan Keputusan
Perhatikan kode berikut:
Demo(int a) { If (a > 5) a = a * 3 Print (a) }
Skenario 1: Nilai a adalah 2. Hasil keputusan โTidakโ jika (a>5) dicentang, maka Cakupan Keputusan = 50%.
Skenario 2: Nilai a adalah 6. Hasil keputusan โYaโ jika (a>5) dicentang, maka Cakupan Keputusan = 50%.
| Uji Kasus | Nilai A | Keluaran | Cakupan Keputusan |
|---|---|---|---|
| 1 | 2 | 2 | 50% |
| 2 | 6 | 18 | 50% |
Pengujian Cakupan Cabang
Cakupan Cabang Cakupan cabang adalah metode pengujian kotak putih di mana setiap hasil dari modul kode (pernyataan atau perulangan) diuji. Tujuan cakupan cabang adalah untuk memastikan bahwa setiap kondisi keputusan dari setiap cabang dieksekusi setidaknya sekali. Ini membantu mengukur fraksi segmen kode independen dan menemukan bagian yang tidak memiliki cabang.
Misalnya, jika hasilnya biner, Anda perlu menguji hasil Benar dan Salah.
Rumus untuk menghitung Cakupan Cabang:
Contoh Cakupan Cabang
Untuk mempelajari cakupan cabang, perhatikan contoh yang sama yang digunakan sebelumnya. Cakupan cabang juga akan mempertimbangkan cabang tanpa syarat.
| Uji Kasus | Nilai A | Keluaran | Cakupan Keputusan | Cakupan Cabang |
|---|---|---|---|---|
| 1 | 2 | 2 | 50% | 33% |
| 2 | 6 | 18 | 50% | 67% |
Keuntungan cakupan Cabang:
- Memungkinkan Anda untuk memvalidasi semua cabang dalam kode.
- Membantu Anda memastikan bahwa tidak ada percabangan yang menyebabkan anomali dalam pengoperasian program.
- Menghilangkan masalah yang terjadi karena pengujian cakupan pernyataan.
- Memungkinkan Anda menemukan area yang tidak diuji oleh metode pengujian lainnya.
- Memungkinkan Anda untuk menemukan ukuran kuantitatif dari cakupan kode.
- Cakupan cabang mengabaikan cabang di dalam ekspresi boolean.
Pengujian Cakupan Kondisi
Cakupan KondisiCakupan kondisi, atau cakupan ekspresi, adalah metode pengujian yang digunakan untuk menguji dan mengevaluasi variabel atau sub-ekspresi dalam pernyataan kondisional. Tujuan dari cakupan kondisi adalah untuk memeriksa hasil individual untuk setiap kondisi logis. Cakupan kondisi menawarkan sensitivitas yang lebih baik terhadap alur kontrol daripada cakupan keputusan. Dalam cakupan ini, hanya ekspresi dengan operan logis yang dipertimbangkan.
Misalnya, jika suatu ekspresi memiliki operasi boolean seperti AND, OR, atau XOR, itu menunjukkan total kemungkinan. Cakupan kondisi tidak menjamin cakupan keputusan penuh.
Rumus untuk menghitung Cakupan Kondisi:
Untuk ekspresi dengan dua operan, ada empat kemungkinan kombinasi: TT, FF, TF, dan FT. Perhatikan input X=3, Y=4 (x b) SALAH, yang memberikan Cakupan Kondisi sebesar 1/4 = 25%.
Cakupan Mesin Keadaan Hingga
Cakupan mesin keadaan terbatas (finite state machine) tentu merupakan jenis metode cakupan kode yang paling kompleks. Hal ini karena metode ini bekerja pada perilaku desain. Dalam metode cakupan ini, Anda perlu melihat berapa kali keadaan tertentu dikunjungi atau dilewati. Metode ini juga memeriksa berapa banyak urutan yang termasuk dalam mesin keadaan terbatas.
Tipe Apa Code Pilihan Perlindungan yang Tersedia
Ini tentu saja jawaban yang paling sulit diberikan. Untuk memilih metode cakupan, penguji perlu memeriksa apakah:
- Kode yang sedang diuji memiliki satu atau beberapa cacat yang belum ditemukan,
- biaya penalti potensial,
- biaya kehilangan reputasi,
- biaya kerugian penjualan, dan sebagainya.
Semakin tinggi kemungkinan cacat akan menyebabkan kegagalan produksi yang merugikan, semakin parah tingkat pertanggungan yang harus Anda pilih.
Code Cakupan vs. Cakupan Fungsional
| Code Liputan | Cakupan Fungsional |
|---|---|
| Memberi tahu Anda seberapa baik kode sumber telah diuji oleh test bench Anda. | Mengukur seberapa baik fungsionalitas desain telah dicakup oleh perangkat uji Anda. |
| Tidak pernah menggunakan spesifikasi desain. | Menggunakan spesifikasi desain. |
| Dibuat oleh pengembang. | Dilakukan oleh penguji. |
Code Alat Cakupan
Berikut adalah daftar alat cakupan kode yang penting:
| Nama Alat | Deskripsi |
|---|---|
| Cobertura | Sebuah alat cakupan kode sumber terbuka. Alat ini mengukur cakupan pengujian dengan menginstrumentasi basis kode dan menganalisis baris kode mana yang dieksekusi dan mana yang tidak ketika rangkaian pengujian dijalankan. |
| Semanggi | Semanggi (OpenClover) juga mengurangi waktu pengujian dengan hanya menjalankan pengujian yang mencakup kode aplikasi yang telah dimodifikasi sejak build sebelumnya. |
| Mitra Pengembang | DevPartner memungkinkan pengembang untuk menganalisis Java kode untuk kualitas dan kompleksitas kode. |
| Emma | EMMA mendukung cakupan kelas, metode, baris, dan blok dasar, yang dikumpulkan pada tingkat file sumber, kelas, dan metode. |
| Kalistik | Kalistick adalah aplikasi pihak ketiga yang menganalisis kode dari berbagai perspektif. |
| CoView dan CoAnt | Alat cakupan kode untuk metrik, pembuatan objek tiruan, kemampuan uji kode, cakupan jalur dan cabang, dan banyak lagi. |
| Tepat sasaran untuk C++ | BullseyeCoverage adalah alat cakupan kode untuk C++ dan C. |
| Sonar | Sonar adalah alat cakupan kode sumber terbuka yang membantu Anda mengelola kualitas kode. |
Keuntungan dan Kerugian Menggunakan Code Liputan
| Kelebihan | Kekurangan |
|---|---|
| Berguna untuk mengevaluasi ukuran kuantitatif cakupan kode. | Bahkan ketika fitur spesifik tidak diimplementasikan dalam desain, cakupan kode tetap melaporkan cakupan 100%. |
| Memungkinkan Anda membuat kasus uji tambahan untuk meningkatkan cakupan. | Tidak mungkin untuk menentukan apakah semua kemungkinan nilai suatu fitur telah diuji menggunakan cakupan kode. |
| Memungkinkan Anda untuk menemukan area dalam suatu program yang tidak diuji oleh serangkaian kasus uji. | Code Liputan tidak menunjukkan seberapa banyak dan seberapa baik Anda telah menyampaikan logika Anda. |






