Code Coverage : White Box Testing Techniques

Apa itu Code coverage

Yaitu suatu metrik yang dimaksudkan untuk mengukur usaha pengujian yang diterapkan pada aplikasi perangkat lunak. Hal ini bertujuan untuk memeriksa kode secara langsung dan termasuk white box testing. Process ini dapat mengidentifikasi kode yang telah dieksekusi dan mana yang tidak. Code coverage dan unit testing saling melengkapi. Unit testing mengacu kepada kebutuhan kinerja sedangkan code coverage menyelesaikan sisanya.

Statement Coverage

Manfaat utama dari statement coverage sangat memungkinkan untuk mengisolasi bagian dari kode yang tidak bisa dieksekusi. Kriteria statement coverage akan melakukan sejumlah kasus uji yang memadai untuk menjamin eksekusi minimal satu kali dari setiap statement.

Branch Coverage atau Decision Coverage

Branch Coverage lebih impressif karena cenderung masuk lebih dalam ke dalam kode dibandingkan dengan teknik statement coverage. Branch coverage adalah metrik pengukuran hasil keputusan yang mengalami pengujian. Kriteria branch coverage akan melakukan sejumlah kasus uji untuk memastikan pelaksanaan setiap keputusan atau cabang minimal sekali dilakukan. Ini lebih baik dari statement coverage, tetapi belum memadai untuk aplikasi yang memerlukan integritas tinggi.

Basis Path Coverage

Path atau jalur adalah jalan eksekusi melalui suatu cara yang tepat dari awal sampai akhir. Path yang independen, dikenal juga sebagai himpunan basis. Dengan kata lain, himpunan basis adalah kelompok terkecil dari path, dikelompokkan bersama untuk membentuk semua kombinasi yang mungkin dari path melalui metode tersebut.

Kriteria Path Coverage melakukan sejumlah kasus uji untuk setiap feasible path, basis path menjamin eksekusi setiap path setidaknya setidaknya sekali dalam segmen program.

Jika ada sejumlah N keputusan, maka akan terdapat sejumlah 2^N path. Pada suatu yang memiliki loop, jumlah paths akan menjadi tak terhingga. Disebabkan jumlah banyaknya path pada aplikasi, path coverage cenderung akan menjadi sulit.

Untuk mengurangi jumlah path yang diuji, dapat digunakan ukuran yang disebut Cyclomatic Complexity. Pertanyaan atas berapa banyak path coverage diperlukan tergantung pada kompleksitas atau faktor risiko yang terlibat dalam aplikasi yang diuji.

Data untuk Pengujian

Pada contoh sederhana adalah mudah mendapatkan basis path coverage lengkap, sedangkan pada dunia nyata pengujian skenario lengkap dari basis paths menjadi sangat menantang bahkan tidak mungkin. Salah satu sebabnya adalah, perlunya memiliki data uji, yang mampu mengeksekusi path tertentu dengan menguji interaksi antara berbagai keputusan berdasarkan suatu cara tertentu. Ini bukan proses yang sederhana untuk mendapatkan beberapa data yang selanjutnya mengarah pada eksekusi path tertentu.

Best coding practices dapat membantu menyederhanakan proses pengujian.
  1. Buatlah kode sederhana.
  2. Hindari metode yang memiliki Cyclomatic complexity lebih dari 10.
  3. Tidak memiliki sejumlah basis paths.
  4. Memiliki sedikit keputusan untuk setiap pathnya.
  5. Tidak memiliki keputusan duplikat.
  6. Usahakan tidak ada ketergantungan data

Bottom-line

Statement coverage sebagaimana halnya branch coverage criteria sederhana untuk eksekusi tetapi memiliki kekurangan bahwa beberapa cacat utama cenderung untuk tidak terdeteksi. Sedangkan basis path coverage adalah pendekatan yang lebih kasar yang mampu mengidentifikasi kesalahan.