Cakupan Pengujian dalam Pengujian Perangkat Lunak: Cara Mengukurnya

โšก Ringkasan Cerdas

Cakupan pengujian dalam pengujian perangkat lunak mengukur seberapa banyak bagian aplikasi yang benar-benar diuji oleh serangkaian pengujian. Ini mengungkapkan persyaratan, jalur kode, dan risiko yang belum diuji, sehingga tim dapat menambahkan kasus yang ditargetkan dan merilis produk dengan keyakinan yang terukur.

  • ๐ŸŽฏ Definisi: Laporan cakupan pengujian menunjukkan persyaratan, fitur, dan jalur kode mana yang sudah diuji oleh pengujian yang ada.
  • ๐Ÿงญ jenis: Pernyataan, cabang, kondisi, jalur, persyaratan, dan cakupan risiko masing-masing menjawab pertanyaan yang berbeda.
  • ๏ธ Code vs Tes: Code Cakupan (coverage) mengukur baris kode sumber yang dieksekusi, sedangkan cakupan pengujian (test coverage) mengukur keseluruhan rencana pengujian.
  • ๐Ÿงฎ Formula: Bagi jumlah saluran yang dieksekusi dengan total saluran, lalu kalikan dengan 100 untuk mendapatkan persentase.
  • ๏ธ Teknik: Analisis nilai batas, tabel keputusan, dan pengujian transisi keadaan memperluas cakupan tanpa memperbesar jumlah fitur yang tersedia.
  • ๐Ÿ“ˆ Optimasi: Urutkan modul berdasarkan risiko, otomatiskan rangkaian pengujian regresi, dan tinjau tren cakupan setiap sprint.
  • ๐Ÿค– Bantuan AI: Alat AI menghasilkan pengujian unit yang hilang dan memberi peringkat jalur yang belum diuji berdasarkan risiko produksi.

Apa itu Cakupan Tes?

Cakupan pengujian didefinisikan sebagai metrik dalam Pengujian Perangkat Lunak yang mengukur jumlah pengujian yang dilakukan oleh serangkaian pengujian. Ini akan mencakup pengumpulan informasi tentang bagian program mana yang dieksekusi ketika rangkaian pengujian dijalankan untuk menentukan cabang pernyataan kondisional mana yang telah diambil.

Secara sederhana, ini adalah teknik untuk memastikan bahwa pengujian Anda menguji kode Anda atau seberapa banyak kode yang Anda latih dengan menjalankan pengujian.

Apa Fungsi Cakupan Pengujian?

Dalam proyek yang sedang berjalan, cakupan pengujian mendukung empat aktivitas praktis:

  • Menemukan area persyaratan yang tidak diterapkan oleh serangkaian kasus uji
  • Membantu membuat kasus uji tambahan untuk meningkatkan cakupan
  • Mengidentifikasi ukuran kuantitatif cakupan tes, yang merupakan metode tidak langsung untuk pemeriksaan kualitas
  • Mengidentifikasi kasus uji yang tidak berarti dan tidak meningkatkan cakupan

Manfaat Cakupan Tes dalam Rekayasa Perangkat Lunak

Aktivitas-aktivitas tersebut menghasilkan manfaat teknik yang nyata.

  • Ini dapat menjamin kualitas tes
  • Ini dapat membantu mengidentifikasi bagian kode mana yang benar-benar disentuh untuk rilis atau perbaikan
  • Fitur ini dapat menentukan semua titik keputusan dan jalur dalam aplikasi Anda yang belum diuji, sehingga memungkinkan Anda untuk meningkatkan cakupan pengujian.
  • Mencegah cacat kebocoran
  • Waktu, ruang lingkup, dan biaya dapat dikendalikan
  • Pencegahan kerusakan pada tahap awal siklus hidup proyek
  • Kesenjangan dalam persyaratan, kasus pengujian, dan cacat pada tingkat unit dan tingkat kode dapat ditemukan dengan cara yang mudah

Jenis Cakupan Pengujian

Cakupan (coverage) tidak pernah hanya berupa satu angka. Tim tracBeberapa tipe sekaligus, karena masing-masing menjawab pertanyaan berbeda tentang rangkaian yang sama. Tabel di bawah ini mengelompokkan tipe yang paling sering Anda temui.

Jenis Cakupan Apa yang diukur Terbaik Digunakan Untuk
Cakupan pernyataan (garis) Baris kode yang dapat dieksekusi dijalankan setidaknya sekali. Pengujian unit dan audit kode lama
Cakupan cabang atau keputusan Hasil benar dan salah dari setiap keputusan Logika kondisional dan validasi
Cakupan kondisi Setiap sub-ekspresi boolean bernilai benar dan salah. Ekspresi gabungan AND atau OR
Cakupan jalur Rute unik yang dilalui melalui sebuah modul Alur yang kritis terhadap keselamatan dan keuangan.
Cakupan fungsi Fungsi atau metode yang dipanggil oleh pengujian Lapisan API dan layanan
Cakupan persyaratan Persyaratan dipetakan ke setidaknya satu tes Penerimaan dan kontratracpersetujuan akhir
Cakupan risiko Area berisiko tinggi yang teridentifikasi telah dilakukan latihan. Siklus rilis pendek

Lima jenis pertama adalah tindakan tingkat kode dan termasuk dalam pengujian kotak putih, sedangkan persyaratan dan cakupan risiko berada pada tingkat rencana pengujian.

Apa Perbedaan Utama Antara Code Cakupan dan Cakupan Pengujian?

Code liputan dan cakupan pengujian adalah teknik pengukuran yang memungkinkan Anda menilai kualitas kode aplikasi Anda.

Berikut adalah beberapa perbedaan penting antara stan dengan metode cakupan ini:

Parameter Teknis Code Liputan Cakupan Tes
Definisi Code Istilah cakupan yang digunakan ketika kode aplikasi dijalankan saat aplikasi sedang berjalan. Cakupan tes berarti keseluruhan rencana tes.
Tujuan Code Metrik cakupan dapat membantu tim memantau pengujian otomatis mereka. Cakupan pengujian memberikan rincian tentang tingkat pengujian pengodean tertulis suatu aplikasi.
Subtipe Code Cakupan dibagi dengan subtipe seperti cakupan pernyataan, cakupan kondisi, cakupan cabang, Togglcakupan e, cakupan FSM. Tidak ada subtipe metode cakupan Tes.

Rumus Cakupan Tes

Untuk menghitung cakupan tes, Anda perlu mengikuti langkah-langkah yang diberikan di bawah ini:

Langkah 1) Menghitung Y, jumlah total baris kode dalam perangkat lunak yang Anda gunakan pengujian

Langkah 2) Menghitung X, jumlah baris kode yang saat ini dieksekusi oleh semua kasus uji

Sekarang, Anda perlu mencari (X dibagi Y) dikalikan 100. Hasil perhitungan ini adalah % cakupan tes Anda.

Sebagai contoh:

Jika jumlah baris kode dalam komponen sistem adalah 500 dan jumlah baris yang dieksekusi di seluruh kasus uji yang ada adalah 50, maka cakupan pengujian Anda adalah:

(50 / 500) * 100 = 10%   // executed lines divided by total lines

Contoh Cakupan Tes

Persentase saja tidak pernah menceritakan keseluruhan cerita, seperti yang ditunjukkan oleh contoh-contoh di bawah ini.

Contoh 1:

Sebagai contoh, jika "pisau" adalah barang yang ingin Anda uji, maka Anda perlu fokus untuk memeriksa apakah pisau tersebut dapat memotong sayuran atau buah dengan akurat atau tidak. Namun, ada aspek lain yang perlu diperhatikan, seperti kenyamanan pengguna saat menggunakannya.

Contoh 2:

Sebagai contoh, jika Anda ingin memeriksa aplikasi notepad. Maka memeriksa fitur-fitur pentingnya adalah hal yang wajib. Namun, Anda perlu memperhatikan aspek lain seperti bagaimana aplikasi notepad merespons dengan baik saat menggunakan aplikasi lain, bagaimana pengguna memahami cara penggunaan aplikasi, tidak mengalami crash saat pengguna mencoba melakukan sesuatu yang tidak biasa, dan lain sebagainya.

Teknik Cakupan Pengujian

Kedua contoh tersebut mengarah pada kesimpulan yang sama: mencapai target cakupan kurang bergantung pada penulisan lebih banyak tes dan lebih bergantung pada pemilihan teknik desain tes yang tepat. Teknik-teknik di bawah ini memperluas cakupan sambil tetap menjagaping Suitenya kecil.

  • Analisis nilai batas: Memilih input di tepi setiap rentang yang valid, di mana cacat paling banyak terkumpul. Lihat analisis nilai batas untuk kasus yang sudah ditangani.
  • Pembagian kesetaraan: Mengelompokkan input yang diperlakukan secara identik oleh aplikasi, sehingga satu kasus dapat dengan aman mewakili seluruh kelas nilai.
  • Pengujian tabel keputusan: Mencakup kombinasi kondisi dan hasil yang diharapkan dalam satu grid.
  • Pengujian transisi negara bagian: Melakukan latihan untuk setiap langkah yang valid dan tidak valid antar status aplikasi.
  • Pengujian jalur dasar: Menentukan himpunan jalur independen minimum dari grafik aliran kontrol.
  • Pengujian berbasis risiko: Mengurutkan fitur berdasarkan dampak bisnis dan membahas fitur dengan risiko tertinggi terlebih dahulu.
  • pengujian eksplorasi: Mengungkap celah yang tidak pernah terungkap dalam studi kasus dan laporan liputan yang telah direncanakan.

Bagaimana Cakupan Pengujian Dapat Dicapai?

Setelah teknik dipilih, empat rute yang sudah mapan akan memberikan cakupan tersebut.

  • Cakupan tes dapat dilakukan dengan menggunakan teknik tinjauan statis seperti tinjauan sejawat, inspeksi, dan penelusuran
  • Dengan mengubah cacat ad-hoc menjadi kasus uji yang dapat dieksekusi
  • Pada tingkat kode atau tingkat pengujian unit, cakupan pengujian dapat dicapai dengan memanfaatkan cakupan kode otomatis atau alat cakupan pengujian unit
  • Cakupan tes fungsional dapat dilakukan dengan bantuan alat manajemen tes yang tepat

Cara Meningkatkan Cakupan Pengujian

Membangun cakupan adalah titik awal; meningkatkannya adalah rutinitas yang dapat diulang. Lakukan urutan ini di awal setiap siklus rilis.

  1. Tetapkan angka saat ini sebagai dasar. Jalankan laporan cakupan dan catat cakupan pernyataan, cabang, dan persyaratan secara terpisah, sehingga celah tetap terlihat per modul dan tidak tersembunyi di dalam satu rata-rata seluruh proyek.
  2. Petakan pengujian ke persyaratan. Membangun tracKisi-kisi kelayakan yang menghubungkan setiap persyaratan dengan setidaknya satu kasus uji. Setiap baris kosong merupakan celah yang terkonfirmasi, bukan kecurigaan.
  3. Urutkan modul berdasarkan risiko. Logika pembayaran, otentikasi, dan migrasi data layak mendapatkan cakupan yang jauh lebih mendalam daripada sekadar layar bantuan statis, jadi alokasikan anggaran di tempat yang kegagalannya akan paling merugikan.
  4. Tambahkan kasus negatif dan kasus khusus. Input kosong, nilai yang terlalu besar, waktu habis jaringan, dan kesalahan izin mencapai cabang yang tidak pernah disentuh oleh pengujian skenario yang berhasil.
  5. Susun lapisan level pengujian. Menggabungkan pengujian unit, tes integrasi, dan pemeriksaan ujung-ke-ujung, karena setiap level mencakup apa yang secara struktural tidak dapat dicakup oleh level lainnya.
  6. Otomatiskan rangkaian pengujian regresi. Promokasus stabil menjadi pengujian otomasi dan mengeksekusi mereka di dalam Pipa CI/CD setelah setiap commit.
  7. Hapus kasus-kasus yang berlebihan. Hapus pengujian duplikat yang menambah waktu eksekusi tanpa menambahkan satu baris pun yang belum tercakup.
  8. RevPantau trennya setiap sprint. Traccakupan k di samping kepadatan cacatMeningkatnya kebocoran dibandingkan dengan cakupan yang rata merupakan peringatan dini adanya titik buta.

โš ๏ธ Peringatan: Jangan jadikan 100 persen sebagai tujuan. Serangkaian pengujian dengan tingkat verifikasi 85 persen dan pernyataan yang kuat akan melindungi rilis jauh lebih baik daripada 95 persen pengujian dangkal yang menjalankan kode tanpa memverifikasi hasil apa pun.

Kelemahan Cakupan Pengujian

Cakupan perlindungan tetap berharga, namun memiliki batasan yang perlu disebutkan sebelum melaporkan persentase apa pun.

  • Sebagian besar tugas dalam cakupan tes bersifat manual karena tidak ada alat untuk mengotomatisasi. Oleh karena itu, diperlukan banyak upaya untuk menganalisis persyaratan dan membuat kasus uji.
  • Cakupan pengujian memungkinkan Anda menghitung fitur dan kemudian mengukurnya berdasarkan beberapa pengujian. Namun, selalu ada ruang untuk kesalahan penilaian.

Pertanyaan Umum Demo Slot

Sebagian besar tim menganggap 70 hingga 80 persen sebagai target praktis, dan 90 persen atau lebih tinggi untuk modul yang kritis terhadap keselamatan. Mengejar 100 persen jarang memberikan hasil yang sepadan dengan usaha yang dikeluarkan. Prioritaskan kedalaman pengujian pada logika berisiko tinggi daripada menyebarkan pengujian secara merata di seluruh basis kode.

Tidak. Cakupan penuh membuktikan bahwa setiap elemen telah dijalankan, bukan berarti setiap nilai, persyaratan, atau alur pengguna telah divalidasi. Persyaratan yang hilang, pernyataan yang lemah, dan kesalahan non-fungsional seperti waktu respons yang lambat masih luput dari rangkaian pengujian yang melaporkan 100 persen.

Laporan cakupan mencantumkan baris, cabang, dan fungsi yang tercakup dan tidak tercakup per file, dengan persentase yang dirangkum berdasarkan modul dan proyek. Alat-alat seperti JaCoCo Selain itu, tandai juga cabang-cabang yang sebagian tertutup, karena biasanya celah inilah yang paling cepat tertutup.

AI menganalisis kode sumber, riwayat eksekusi, dan data cacat untuk menunjukkan jalur berisiko tinggi yang belum diuji, kemudian mengusulkan kasus yang menutup jalur tersebut. AI juga menentukan peringkat pengujian mana yang harus dijalankan terlebih dahulu, mempersingkat umpan balik dalam alur kerja tanpa mengorbankan cakupan pengujian.

Ya. Alat-alat seperti biru berbeda Tuliskan unit test untuk logika yang belum terungkap secara otomatis, dan model generatif mengubah persyaratan dalam bahasa sederhana menjadi kasus yang dapat dieksekusi. Tinjauan manusia tetap penting, karena pernyataan yang dihasilkan dapat lolos tanpa memeriksa perilaku yang bermakna.

Ringkaslah postingan ini dengan: