what is cyclomatic complexity learn with an example
Siklomatik Karmaşıklık, Geliştirme topluluğunda çok yaygın olarak kullanılan bir kelimedir. Bu teknik esas olarak bir kod parçasının veya işlevselliğin karmaşıklığını belirlemek için kullanılır.
Teknik, MaCabe tarafından geliştirilmiştir ve programlar / özellikler için aşağıdaki 3 soruyu belirlemeye yardımcı olur
- Özellik / program test edilebilir mi?
- Özellik / program herkes tarafından anlaşılıyor mu?
- Özellik / program yeterince güvenilir mi?
Kalite Güvencesi olarak bu tekniği testimizin 'seviyesini' belirlemek için kullanabiliriz. Döngüsel karmaşıklığın sonucu az ya da çok bir sayı ise, bu işlevsellik parçasının karmaşık nitelikte olduğunu düşündüğümüz ve dolayısıyla bir testçi olarak sonuca vardığımız bir uygulamadır; kod parçasının / işlevselliğin derinlemesine test edilmesi gerektiği.
Öte yandan, Siklomatik Karmaşıklığın sonucu daha küçük bir sayı ise, QA olarak işlevselliğin daha az karmaşık olduğu sonucuna varır ve kapsama buna göre karar veririz.
Adım adım ilerleyeyim: önce nasıl hesaplandığını anlayın, ardından test seviyesinin nasıl belirlendiğini anlamak için ilerleyeceğiz.
Ne öğreneceksin:
- Siklomatik Karmaşıklık Nasıl Hesaplanır?
- Siklomatik Karmaşıklık formülü
- Siklomatik Karmaşıklık Örneği
- Testçiler bunu nasıl kullanabilir?
- Şimdi kısayol geliyor
- Önerilen Kaynaklar
Siklomatik Karmaşıklık Nasıl Hesaplanır?
CC'nin hesaplanması 2 kavram etrafında döner
- Düğümler
- Kenarlar
Bir programdaki ifadeler düğümler olarak temsil edilir ve bir ifadeden diğerine giden kontrol yolları Edges ile temsil edilir.
Siklomatik Karmaşıklık formülü
CC hesaplama formülü şu şekildedir:
örnekle regresyon testi nedir
CC = E ~ N + 2
Nerede:
E = Kenar sayısı
N = Düğüm sayısı.
(Hesaplamak için bir kısayol var, ancak şimdi değil …… sonra…)
Siklomatik Karmaşıklık Örneği
Bunu anlamak için aşağıdaki örneği alalım.
Aşağıdaki Kontrol akış grafiğini göz önünde bulundurun:
Yerleştirdim AĞ Düğümleri tanımlamak için noktalar ve MAVİ kenarları belirleyen çizgiler:
İşte bu örnekte:
Düğüm Sayısı (Kırmızı noktalar) = 14
Kenar Sayısı (Mavi Çizgiler) = 15
Yani Siklomatik Karmaşıklık = N ~ E + 2 = (14-15) +2 = 3
Testçiler bunu nasıl kullanabilir?
Gerçek dünyada, Test Uzmanları, belirli bir kod parçası için kontrol akış grafiğini türetmek için geliştiricilerle birlikte oturabilir. Ve grafiğe sahip olduğumuzda, bu formülü kullanarak karmaşıklığı türetebiliriz. Ancak Testçiler için hikaye burada bitmiyor: - buradaki ana nokta - test ekibi için bu sayının kullanımı nedir?
Testçiler, testlerinin düzeyini belirlemek için bu sayıyı kullanabilir.
Uygulamada 2 test seviyesi vardır:
- Uzunluk Testi
- Genişlik Testi
Herhangi bir modülün farklı özellikleri için aşağıdaki matrisi düşünün: -
Uzunluk Testi, her özellik için önemli test senaryolarını seçerek tüm kapsamı kapsamaya çalıştığımız bir yoldur. Örneğin , bu durumda, Uzunluk testini ima etmeyi seçtiğimi varsayalım, sonra şunu seçebilirim -
- Özellik 1 için Alt Özellik 1.1 ve Alt Özellik 1.3
- Özellik 2'den alt özellik 2.2
- Özellik 3'ten Alt Özellik 3.3
- Özellik 4'ten Alt Özellik 4.2 ve Alt Özellik 4.3
- Özellik 5'ten Alt Özellik 5.3
Bu yüzden burada alt özelliklerin ayrıntılı ayrıntılarına girmeden tüm özelliğe değiniyorum.
Şimdi, CC'nin sonucu daha büyük bir sayı ise, Genişlik testi ile gitmeyi seçiyorum, aslında her bir özelliği ve her bir alt özelliği test edeceğim.
Dolayısıyla, mevcut proje gereksinimlerinize, ortam güvenilirliğine bağlı olarak, test uzmanları geliştirme ekibiyle birlikte çalışabilir ve test seviyesinin ve kapsamının belirlenmesi için bir standart oluşturabilir. Örneğin -
- CC<=15 – Basic sanity test
- CC 16 ile 30 arasındaysa - Uzunluk Testi
- CC 31 ile 50 arasındaysa - Kapsam testi
- CC> 50 ise - Kaotik bir işlevselliktir ve daha fazla ayrıştırılması gerekir
Şimdi kısayol geliyor
Kapalı bölgelerin sayısını sayın ve buna 1 ekleyin.
daha yeni olanlar için temel sql mülakat soruları ve cevapları pdf
Yukarıdaki örneğimizde - kapalı bölge sayısı = 2 (sarı ile doldurulmuş), dolayısıyla CC = 2 + 1 = 3
json dosyası nasıl açılır
Gerçek çalışmada şöyle ifadeler verdiğimizde sonucu sonuçlandırmak çok zordur:
- '… ..Bu işlevselliğin uygulanması çok zor'
Zor derken neyi kastediyorsun? Karmaşık mı, karmaşık mı yoksa kaotik mi?
Bunun zor olduğu sonucuna nasıl vardınız?
- '... bu günün sonunda hazır olmalıdır'
Günün sonu nedir? Günün sonun 19:00, benimki muhtemelen 18:00?
- '... bunun için ayrıntılı testler yapmam gerekir'
Ayrıntılı test nedir? 'Ayrıntılı Test' denen bir test tekniği yoktur
- '… Biz QA'ya dağıtmadan önce kodun kaliteli olması gerekir'
İyi kaliteyi nasıl ölçüyorsunuz?
Bunun yerine, aşağıdaki gibi ifadeleri yeniden ifade edersem -
Kod parçasının Siklomatik Karmaşıklığı 75 olarak hesaplanır ve standartlarımıza göre; bu işlevsellik Kaos doğasındadır. Bu nedenle, onu daha fazla ayrıştırmanızı öneririz.
Bitmiş
- '… ..Bu işlevselliğin uygulanması çok zor'
İşlevsellik, 5.00 PM CST'ye kadar QA ortamında dağıtılacaktır.
Bitmiş
- '… .Bu gün sonunda hazır olmalıdır'
Siklomatik karmaşıklık 48 olarak hesaplandığından, standardımıza göre, özellik için Entegrasyon ve Regresyon testleri ile birlikte sistem testlerini yapıyor olacağız.
Bitmiş
- '… .Bunun için ayrıntılı testler yapmam gerekecek'
Sonar'a göre, CC artık 102'dir. CC'yi 10'a sahip olacak şekilde standart hale getirdik. CC'yi 10'dan küçük yapmak için kodu iyileştirdiğimizde kodu dağıtıyor olacağız.
Bitmiş
- '… .Kod, KG'ye dağıtmadan önce iyi kalitede olmalıdır'
İki ifade arasındaki fark nedir?
Eh, buradaki fark ölçüdür. Paydaşlarımın tam olarak ne söylemek istediğimi bilmelerine yardımcı olacak her bir beyanımı uygun ölçümlerle destekledim.
Benzer şekilde, test çabalarınızın kesin ölçüsünü belirlemek için yazılım testinde Siklomatik karmaşıklığı kullanın ve bunu yalnızca testinizin kapsamını değil, aynı zamanda yapmanız gereken test türlerini belirlemek için de kullanabilirsiniz.
Önerilen Kaynaklar
- Bileşen Testi veya Modül Testi Nedir (Örneklerle Öğrenin)
- Karşılaştırma Testi Nedir (Örneklerle Öğrenin)
- Yazılım Testi Kariyer Paketi e-Kitabı
- Sistem Entegrasyon Testi (SIT) Nedir: Örneklerle Öğrenin
- En İyi Yazılım Test Araçları 2021 (QA Test Otomasyon Araçları)
- Primer e-Kitap İndirmeyi Test Etme
- Test Uzmanlarının Kullanmayı Öğrenmesi Gereken 5 Önemli Diyagram
- TestRail İnceleme Eğitimi: Uçtan Uca Test Vaka Yönetimini Öğrenin