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.
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.
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:
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:
- V (G), grafikteki maksimum bağımsız yol sayısıdır
- V(G)>=1
- V (G) = 1 ise G'nin bir yolu olacaktır
- 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 –
- M, dal kapsamına ulaşmak için test senaryolarının sayısı olabilir (Üst Sınır)
- 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.