Kompleksitas Siklomatik Mccabe: Hitung dengan Grafik Alir (Contoh)

Daftar Isi:

Anonim

Untuk memahami Cyclomatic Complexity, pertama-tama mari kita pahami -

Apa itu Metrik Perangkat Lunak?

Pengukuran tidak lain adalah indikasi kuantitatif dari ukuran / dimensi / kapasitas suatu atribut dari suatu produk / proses. Metrik perangkat lunak didefinisikan sebagai ukuran kuantitatif dari atribut yang dimiliki sistem perangkat lunak sehubungan dengan Biaya, Kualitas, Ukuran, dan Jadwal.

Contoh-

Ukur - Jumlah KesalahanMetrik - Jumlah Kesalahan yang ditemukan per orang

Dalam tutorial ini, Anda akan belajar-

  • Apa itu Metrik Perangkat Lunak?
  • Apa itu Cyclomatic Complexity?
  • Notasi diagram alir untuk program:
  • Bagaimana Menghitung Kompleksitas Siklomatik
  • Sifat kompleksitas Cyclomatic:
  • Bagaimana metrik ini berguna untuk pengujian perangkat lunak?
  • Lebih lanjut tentang V (G):
  • Alat untuk penghitungan Cyclomatic Complexity:
  • Kegunaan Cyclomatic Complexity:

Kompleksitas Siklomatik dalam Pengujian Perangkat Lunak

Cyclomatic Complexity in Software Testing adalah metrik pengujian yang digunakan untuk mengukur kompleksitas program perangkat lunak. Ini adalah ukuran kuantitatif jalur independen dalam kode sumber program perangkat lunak. Kompleksitas siklomatik dapat dihitung dengan menggunakan grafik aliran kontrol atau sehubungan dengan fungsi, modul, metode, atau kelas dalam program perangkat lunak.

Jalur independen didefinisikan sebagai jalur yang memiliki setidaknya satu sisi yang belum pernah dilalui sebelumnya di jalur lain.

Metrik ini dikembangkan oleh Thomas J. McCabe pada tahun 1976 dan didasarkan pada representasi aliran kontrol program. Aliran kontrol menggambarkan program sebagai grafik yang terdiri dari Node dan Edges.

Dalam grafik, Node merepresentasikan tugas pemrosesan, sedangkan edge merepresentasikan aliran kontrol antar node.

Notasi diagram alir untuk program:

Notasi Flow Graph untuk program mendefinisikan beberapa node yang terhubung melalui edge. Di bawah ini adalah Diagram alir untuk pernyataan seperti if-else, While, sampai dan urutan aliran normal.

Bagaimana Menghitung Kompleksitas Siklomatik

Representasi matematika:

Secara matematis, ini diatur jalur independen melalui diagram grafik. Kompleksitas kode program dapat ditentukan menggunakan rumus -

V (G) = E - N + 2

Dimana,

E - Jumlah tepi

N - Jumlah Node

V (G) = P + 1

Dimana P = Jumlah node predikat (node ​​yang mengandung kondisi)

Contoh -

i = 0;n = 4; // N-Jumlah node yang ada di grafiksementara (i 

Grafik alir untuk program ini akan menjadi

Menghitung secara matematis,

  • V (G) = 9 - 7 + 2 = 4
  • V (G) = 3 + 1 = 4 (Kondisi node adalah 1,2 dan 3 node)
  • Basis Set - Satu set jalur eksekusi yang mungkin dari suatu program
  • 1, 7
  • 1, 2, 6, 1, 7
  • 1, 2, 3, 4, 5, 2, 6, 1, 7
  • 1, 2, 3, 5, 2, 6, 1, 7

Sifat kompleksitas Cyclomatic:

Berikut adalah sifat-sifat kompleksitas Cyclomatic:

  1. V (G) adalah jumlah maksimum jalur independen dalam grafik
  2. V (G)> = 1
  3. G akan memiliki satu jalur jika V (G) = 1
  4. Minimalkan kompleksitas menjadi 10

Bagaimana metrik ini berguna untuk pengujian perangkat lunak?

Pengujian Basis Path adalah salah satu teknik kotak putih dan menjamin untuk mengeksekusi setidaknya satu pernyataan selama pengujian. Ini memeriksa setiap jalur independen linier melalui program, yang berarti kasus uji angka, akan setara dengan kompleksitas siklus program.

Metrik ini berguna karena sifat kompleksitas Cyclomatic (M) -

  1. M dapat berupa jumlah kasus uji untuk mencapai cakupan cabang (Batas Atas)
  2. M dapat berupa jumlah jalur melalui grafik. (Batas bawah)

Pertimbangkan contoh ini -

Jika (Kondisi 1)Pernyataan 1LainPernyataan 2Jika (Kondisi 2)Pernyataan 3LainPernyataan 4

Kompleksitas Siklomatik untuk program ini akan menjadi 8-7 + 2 = 3.

Karena kompleksitas telah dihitung sebagai 3, tiga kasus uji diperlukan untuk cakupan jalur lengkap untuk contoh di atas.

Langkah-langkah yang harus diikuti:

Langkah-langkah berikut harus diikuti untuk menghitung kompleksitas Cyclomatic dan desain kasus uji.

Langkah 1 - Konstruksi grafik dengan node dan edge dari kode

Langkah 2 - Identifikasi jalur independen

Langkah 3 - Perhitungan Kompleksitas Siklomatik

Langkah 4 - Desain Kasus Uji

Setelah set dasar terbentuk, TEST CASES harus ditulis untuk mengeksekusi semua jalur.

Lebih lanjut tentang V (G):

Kompleksitas siklomatik dapat dihitung secara manual jika programnya kecil. Alat otomatis perlu digunakan jika programnya sangat kompleks karena melibatkan lebih banyak diagram alur. Berdasarkan angka kompleksitas, tim dapat menyimpulkan tindakan-tindakan yang perlu dilakukan untuk mengukur.

Tabel berikut memberikan gambaran umum tentang bilangan kompleksitas dan arti yang sesuai dari v (G):

Bilangan Kompleksitas Berarti
1-10 Kode yang terstruktur dan ditulis dengan baik Biaya dan Upaya Tinggi untuk diuji lebih sedikit
10-20 Kode Kompleks Tingkat Pengujian Sedang Biaya dan upaya Sedang
20-40 Kode yang sangat kompleks Biaya dan Upaya Rendah untuk diuji tinggi
> 40 Sama sekali tidak dapat diuji Biaya dan Upaya Sangat tinggi

Alat untuk penghitungan Cyclomatic Complexity:

Banyak alat tersedia untuk menentukan kompleksitas aplikasi. Beberapa alat penghitungan kompleksitas digunakan untuk teknologi tertentu. Kompleksitas dapat ditemukan dengan jumlah poin keputusan dalam suatu program. Poin keputusannya adalah jika, for, for-each, while, do, catch, pernyataan kasus dalam kode sumber.

Contoh alat adalah

  • OCLint - Penganalisis kode statis untuk C dan Bahasa Terkait
  • Reflector Add In - Metrik kode untuk rakitan .NET
  • GMetrics - Temukan metrik di aplikasi terkait Java

Kegunaan Cyclomatic Complexity:

Cyclomatic Complexity terbukti sangat membantu

  • Membantu developer dan penguji untuk menentukan eksekusi jalur independen
  • Pengembang dapat memastikan bahwa semua jalur telah diuji setidaknya sekali
  • Membantu kami untuk lebih fokus pada jalur yang tidak terjangkau
  • Tingkatkan cakupan kode dalam Rekayasa Perangkat Lunak
  • Evaluasi risiko yang terkait dengan aplikasi atau program
  • Menggunakan metrik ini di awal siklus akan mengurangi lebih banyak risiko program

Kesimpulan:

Cyclomatic Complexity adalah metrik perangkat lunak yang berguna untuk Pengujian terstruktur atau White Box. Ini terutama digunakan untuk mengevaluasi kompleksitas program. Jika poin keputusan lebih banyak, maka kompleksitas program lebih banyak. Jika program memiliki angka kompleksitas tinggi, maka kemungkinan kesalahan tinggi dengan bertambahnya waktu untuk pemeliharaan dan pemecahan masalah.