Yazılım Testinde Siklomatik Karmaşıklık (Örnek)

McCabe'nin Siklomatik Karmaşıklığı Nedir?

Yazılım Testinde Siklomatik Karmaşıklık bir yazılım programının karmaşıklığını ölçmek için kullanılan bir test metriğidir. Bir yazılım programının kaynak kodundaki bağımsız yolların nicel bir ölçüsüdür. Döngüsel karmaşıklık, kontrol akış grafikleri kullanılarak veya bir yazılım programındaki işlevler, modüller, yöntemler veya sınıflar açısından hesaplanabilir.

Bağımsız yol, daha önce başka yollardan geçilmemiş en az bir kenarı olan yol olarak tanımlanır.

Bu metrik, 1976 yılında Thomas J. McCabe tarafından geliştirilmiştir ve programın kontrol akışı temsiline dayanmaktadır. Kontrol akışı, bir programı Düğümler ve Kenarlardan oluşan bir grafik olarak gösterir.

Grafikte, Düğümler işleme görevlerini temsil ederken kenarlar, düğümler arasındaki kontrol akışını temsil eder.

McCabe'nin Siklomatik Karmaşıklığı

Bir program için akış grafiği gösterimi

Bir programın Akış Grafiği gösterimi, kenarlardan bağlanan birkaç düğümü tanımlar. Aşağıda if-else, While, Until ve normal akış sırası gibi ifadeler için Akış diyagramları bulunmaktadır.

Bir program için akış grafiği gösterimi

Siklomatik Karmaşıklık Nasıl Hesaplanır

Matematiksel gösterim:

Matematiksel olarak, grafik diyagramı boyunca bağımsız yolların kümesidir. Programın kod karmaşıklığı şu formül kullanılarak tanımlanabilir –

V(G) = E - N + 2

Nerede,

E – Kenar sayısı

N – Düğüm Sayısı

V (G) = P + 1

Burada P = Yüklem düğümlerinin sayısı (koşul içeren düğüm)

Örnek -

i = 0;
n=4; //N-Number of nodes present in the graph

while (i<n-1) do
j = i + 1;

while (j<n) do

if A[i]<A[j] then
swap(A[i], A[j]);

end do;
j=j+1;

end do;

Bu programın akış grafiği şu şekilde olacaktır:

Siklomatik Karmaşıklığı Hesapla

Matematiksel hesaplama,

  • V(G) = 9 – 7 + 2 = 4
  • V(G) = 3 + 1 = 4 (Koşul düğümleri 1,2 ve 3 düğümdür)
  • Temel Küme – Bir programın olası yürütme yolu kümesi
  • 1, 7
  • 1, 2, 6, 1, 7
  • 1, 2, 3, 4, 5, 2, 6, 1, 7
  • 1, 2, 3, 5, 2, 6, 1, 7

Siklomatik karmaşıklığın özellikleri

Siklomatik karmaşıklığın özellikleri şunlardır:

  1. V (G), grafikteki maksimum bağımsız yol sayısıdır
  2. V(G)>=1
  3. V (G) = 1 ise G'nin bir yolu olacaktır
  4. Karmaşıklığı 10'a düşürün

Bu ölçüm yazılım testi için nasıl faydalıdır?

Temel Yol testi, Beyaz kutu tekniğinden biridir ve test sırasında en az bir ifadenin yürütülmesini garanti eder. Program boyunca doğrusal olarak bağımsız her yolu kontrol eder, bu da Yani test vakalarının sayısı, programın döngüsel karmaşıklığına eşdeğer olacaktır.

Bu metrik, Siklomatik karmaşıklığın (M) özelliklerinden dolayı yararlıdır –

  1. M, dal kapsamına ulaşmak için test senaryolarının sayısı olabilir (Üst Sınır)
  2. M, grafiklerdeki yolların sayısı olabilir. (Alt sınır)

Bu örneği düşünün –

If (Condition 1)
Statement 1

Else
Statement 2

If (Condition 2)
Statement 3

Else
Statement 4

Bu program için Siklomatik Karmaşıklık 8-7+2=3 olacaktır.

Karmaşıklık 3 olarak hesaplandığından, yukarıdaki örnek için tam yol kapsamı için üç test vakası gereklidir.

İzlenecek adımlar:

Siklomatik karmaşıklığın hesaplanması ve test senaryolarının tasarımı için aşağıdaki adımlar izlenmelidir.

1. Adım – Koddan düğümler ve kenarlar içeren grafiğin oluşturulması

2. Adım – Bağımsız yolların belirlenmesi

3. Adım – Siklomatik Karmaşıklık Hesaplaması

4. Adım – Test Durumlarının Tasarımı

Temel küme oluşturulduktan sonra, TEST ÖRNEKLERİ tüm yolları çalıştıracak şekilde yazılmalıdır.

V (G) hakkında daha fazlası

Program küçükse, döngüsel karmaşıklık manuel olarak hesaplanabilir. Program çok karmaşıksa, daha fazla akış grafiği içerdiğinden otomatik araçlar kullanılmalıdır. Karmaşıklık sayısına dayanarak, ekip ölçüm için yapılması gereken eylemler hakkında sonuca varabilir.

Aşağıdaki tabloda karmaşıklık sayısı ve v (G)'nin karşılık gelen anlamı hakkında genel bir bakış sunulmaktadır:

Karmaşıklık Sayısı anlam
1-10 Yapılandırılmış ve iyi yazılmış kod

Yüksek Test Edilebilirlik

Maliyet ve Çaba daha azdır

10-20 Karmaşık Kod

Orta Test Edilebilirlik

Maliyet ve çaba Orta düzeydedir

20-40 Çok karmaşık kod

Düşük Test Edilebilirlik

Maliyet ve Çaba yüksektir

> 40 Hiç test edilemez

Çok Yüksek Maliyet ve Çaba

Siklomatik Karmaşıklık hesaplaması için araçlar:

Uygulamanın karmaşıklığını belirlemek için birçok araç mevcuttur. Bazı karmaşıklık hesaplama araçları belirli teknolojiler için kullanılır. Karmaşıklık, bir programdaki karar noktalarının sayısına göre bulunabilir. Karar noktaları, bir kaynak kodundaki if, for, for-each, while, do, catch, case ifadeleridir.

Araç örnekleri şunlardır:

  • OCLint – C ve İlgili Diller için statik kod analizörü
  • Reflektör Eklentisi – .NET derlemeleri için kod ölçümleri
  • GMetrikler – Metrikleri bulun Java ilgili uygulamalar

Siklomatik Karmaşıklığın Kullanımları:

Siklomatik Karmaşıklık, çok faydalı olabilir

  • Geliştiricilerin ve test uzmanlarının bağımsız yol yürütmelerini belirlemelerine yardımcı olur
  • Geliştiriciler tüm yolların en az bir kez test edildiğinden emin olabilirler
  • Keşfedilmemiş yollara daha fazla odaklanmamıza yardımcı olur
  • Kod kapsamını iyileştirin Yazılım Mühendisliği
  • Uygulama veya programla ilişkili riski değerlendirin
  • Bu metriklerin döngünün başlarında kullanılması programın daha fazla riskini azaltır

Sonuç

Siklomatik Karmaşıklık, yapılandırılmış veya Beyaz Box Test yapmak. Genellikle bir programın karmaşıklığını değerlendirmek için kullanılır. Karar noktaları daha fazlaysa, programın karmaşıklığı daha fazladır. Programın karmaşıklık sayısı yüksekse, bakım ve sorun giderme için daha fazla zaman harcanmasıyla hata olasılığı yüksektir.