Code Kapsama Aracı: İfade, Dal ve Karar Testi

⚡ Akıllı Özet

Code Kapsam, kaynak kodun bir test paketi tarafından ne ölçüde çalıştırıldığını bildiren, şeffaf bir ölçümdür.ping Ekipler, gizli hataların bulunabileceği test edilmemiş ifadeleri, dalları, koşulları ve yolları tespit eder.

  • 🎯 Tanım: Code Kapsama oranı, testlerinizin kaynak kodunun ne kadarını gerçekten çalıştırdığını nicel olarak ifade eder.
  • 📊 Yöntem: Beş yöntem mevcuttur: ifade, karar, dallanma, koşul ve sonlu durum makinesi kapsamı.
  • 🧩 Açıklama (Ek) ve Dal (Şube) Karşılaştırması: Açıklama kapsamı satırları kontrol ederken, dal kapsamı her karar sonucunu kontrol eder.
  • 🇧🇷 Code vs Fonksiyonel: Code Kapsama önlemleri, uygulanan kodu içeriyordu; işlevsel kapsama önlemleri, gereksinimleri kapsıyordu.
  • Araçlar: Cobertura, OpenCloverEMMA ve Sonar, kapsama alanının ölçümünü otomatikleştirir.
  • 🤖 Yapay Zeka Yardımı: Yapay zeka araçları, testler oluşturur ve test edilmemiş, yüksek riskli kapsama açıklarını otomatik olarak ortaya çıkarır.

Code Kapsama Eğitimi

Nedir? Code Kapsam?

Code kapsama Bir programın kaynak kodunun ne ölçüde test edildiğini tanımlayan bir ölçüdür. Bu, bir tür test yöntemidir. beyaz kutu testi Bu araç, bir dizi test senaryosu tarafından çalıştırılmayan program alanlarını bulur. Ayrıca, test kapsamını artırmak ve kod kapsamının nicel bir ölçüsünü belirlemek için ek test senaryoları oluşturmaya yardımcı olur.

Çoğu durumda, bir kod kapsamı sistemi çalışan program hakkında bilgi toplar. Ardından bu bilgileri kaynak kod bilgileriyle birleştirerek test paketinin kod kapsamı hakkında bir rapor oluşturur.

Neden kullan Code Kapsama Alanı Testi?

Kod kapsamını kullanmanın bazı temel nedenleri şunlardır:

  • Test uygulamasının verimliliğini ölçmenize yardımcı olur.
  • Bu, testin nicel bir ölçümünü sunar.
  • Kaynak kodunun test edilme derecesini tanımlar.

Code Kapsama Yöntemleri

Aşağıda başlıca kod kapsamı yöntemleri yer almaktadır:

  • Açıklama Kapsamı
  • Karar Kapsamı
  • Şube Kapsamı
  • Toggle Kapsam
  • FSM Kapsamı

Açıklama Kapsamı

Açıklama Kapsamı Beyaz kutu test tekniği, kaynak koddaki tüm yürütülebilir ifadelerin en az bir kez çalıştırıldığı bir yöntemdir. Kaynak kodda yürütülen ifade sayısını hesaplamak için kullanılır. İfade Kapsamasının temel amacı, kaynak koddaki tüm olası yolları, satırları ve ifadeleri kapsamaktır.

Kod kapsamı analizi, test edilen kodun yapısına bağlı olarak senaryolar oluşturmak için kullanılır.

Açıklama Kapsamı

Beyaz kutu testinde, test uzmanı yazılımın nasıl çalıştığına odaklanır. Başka bir deyişle, test uzmanı kontrol akış şemaları veya akış diyagramları açısından kaynak kodunun iç işleyişine odaklanır.

Genel olarak herhangi bir yazılımda, kaynak koduna bakarsanız, operatörler, fonksiyonlar, döngüler gibi çok çeşitli öğeler bulunur.pingHata işleyicileri ve benzeri unsurlar da dahil olmak üzere, programa verilen girdiye bağlı olarak bazı kod ifadeleri yürütülmeyebilir. İfade kapsamının amacı, koddaki tüm olası yolları, satırları ve ifadeleri kapsamaktır.

Şimdi bunu, ifade kapsamının nasıl hesaplandığına dair bir örnekle anlayalım. Burada, her senaryo için ifade kapsamı yüzdesini kontrol etmek üzere iki farklı senaryo ele alıyoruz.

Kaynak Code:

Prints (int a, int b) {                       ------------  Printsum is a function
    int result = a + b;
    If (result > 0)
        Print ("Positive", result)
    Else
        Print ("Negative", result)
    }                                        -----------   End of the source code

Senaryo 1: A = 3 ise B = 9

Beyan Kapsamı Senaryosu 1

Sarı renkle işaretlenmiş ifadeler, senaryoya göre yürütülen ifadelerdir. Yürütülen ifade sayısı = 5, Toplam ifade sayısı = 7, dolayısıyla İfade Kapsamı = 5/7 = %71.

Senaryo 2: A = -3 ise B = -9

Beyan Kapsamı Senaryosu 2

Sarı renkle işaretlenmiş ifadeler, senaryoya göre yürütülen ifadelerdir. Yürütülen ifade sayısı = 6, Toplam ifade sayısı = 7, dolayısıyla İfade Kapsamı = 6/7 = %85.

Ancak genel olarak bakıldığında, tüm ifadelerin her iki senaryo tarafından da kapsandığını görüyoruz. Dolayısıyla, genel ifade kapsamının %100 olduğu sonucuna varabiliriz.

Beyanname Kapsamı neleri kapsıyor?

  1. Kullanılmayan İfadeler
  2. ölü Code
  3. Kullanılmayan Şubeler
  4. Eksik İfadeler

Karar Kapsamı Testi

Karar Kapsamı Karar kapsamı testi, kaynak kodundaki her bir mantıksal ifadenin doğru veya yanlış sonuçlarını raporlayan bir beyaz kutu test tekniğidir. Karar kapsamı testinin amacı, her olası karar noktasının her dalının en az bir kez yürütüldüğünü kontrol ederek ve sağlayarak, erişilebilir tüm kaynak kodunu kapsamak ve doğrulamaktır.

Bu kapsama türünde, ifadeler karmaşık hale gelebilir ve %100 kapsama ulaşmak zorlaşabilir. Bu nedenle, bu metriği raporlamak için çeşitli yöntemler kullanılır. Bu yöntemler en kritik kombinasyonlara öncelik verir. Dal kapsamına benzer olmakla birlikte, kontrol akışına daha yüksek hassasiyet sağlar.

Karar Kapsamı Testi

Karar Kapsamı Örneği

Aşağıdaki kodu göz önünde bulundurun:

Demo(int a) {
    If (a > 5)
        a = a * 3
    Print (a)
    }

Senaryo 1: a'nın değeri 2'dir. Kararın "Hayır" sonucu (a>5) işaretlenirse, Karar Kapsamı = %50 olur.

Senaryo 2: a'nın değeri 6'dır. Kararın "Evet" sonucu (a>5) işaretlenirse, Karar Kapsamı = %50 olur.

Test Durumu A'nın değeri Çıktı Karar Kapsamı
1 2 2 50%
2 6 18 50%

Şube Kapsam Testi

Şube Kapsamı Beyaz kutu test yöntemi olarak adlandırılan bu yöntemde, bir kod modülünden (ifade veya döngü) çıkan her sonuç test edilir. Dal kapsamının amacı, her daldan gelen her karar koşulunun en az bir kez yürütüldüğünden emin olmaktır. Bağımsız kod segmentlerinin oranlarını ölçmeye ve dallanma içermeyen bölümleri bulmaya yardımcı olur.

Örneğin, sonuçlar ikili ise hem Doğru hem de Yanlış sonuçları test etmeniz gerekir.

Şube Kapsamını hesaplamak için formül:

Şube Kapsama Formülü

Şube Kapsamı Örneği

Dal kapsamını öğrenmek için, daha önce kullanılan aynı örneği ele alalım. Dal kapsamı, koşulsuz dallanmayı da dikkate alacaktır.

Test Durumu A'nın değeri Çıktı Karar Kapsamı Şube Kapsamı
1 2 2 50% 33%
2 6 18 50% 67%

Şube kapsamının avantajları:

  • Koddaki tüm dalları doğrulamanıza olanak tanır.
  • Programın çalışmasında herhangi bir anormalliğe yol açacak bir dallanmanın olmamasını sağlamanıza yardımcı olur.
  • İfade kapsamı testinden kaynaklanan sorunları ortadan kaldırır.
  • Diğer test yöntemleriyle test edilmemiş alanları bulmanızı sağlar.
  • Kod kapsamının nicel bir ölçüsünü bulmanızı sağlar.
  • Dal kapsamı, mantıksal ifadelerin içindeki dalları dikkate almaz.

Durum Kapsama Testi

Durum KapsamıKoşul kapsamı veya ifade kapsamı, koşullu bir ifadede yer alan değişkenleri veya alt ifadeleri test etmek ve değerlendirmek için kullanılan bir test yöntemidir. Koşul kapsamının amacı, her mantıksal koşul için ayrı ayrı sonuçları kontrol etmektir. Koşul kapsamı, karar kapsamına göre kontrol akışına daha iyi duyarlılık sunar. Bu kapsamda, yalnızca mantıksal işlenenlere sahip ifadeler dikkate alınır.

Örneğin, bir ifadede AND, OR veya XOR gibi mantıksal işlemler varsa, bu toplam olasılıkları gösterir. Koşul kapsamı, tam karar kapsamını garanti etmez.

Koşul Kapsamını hesaplamak için formül:

Durum Kapsama formülü

İki işlenenli bir ifade için dört olası kombinasyon vardır: TT, FF, TF ve FT. X=3, Y=4 (x) girdisini ele alalım. b) YANLIŞ, bu da Koşul Kapsama Oranının 1/4 = %25 olduğu anlamına gelir.

Sonlu Durum Makinesi Kapsamı

Sonlu durum makinesi kod kapsamı, şüphesiz en karmaşık kod kapsamı yöntemidir. Bunun nedeni, tasarımın davranışına dayanmasıdır. Bu kapsam yönteminde, belirli durumların kaç kez ziyaret edildiğine veya geçildiğine bakmanız gerekir. Ayrıca, sonlu durum makinesinde kaç dizinin yer aldığını da kontrol eder.

Hangi tür Code Seçilecek Kapsam

Bu, kesinlikle verilmesi en zor cevap. Bir kapsama yöntemi seçmek için, test uzmanının şunları kontrol etmesi gerekir:

  • Test edilen kodda tek veya birden fazla keşfedilmemiş hata bulunmaktadır.
  • Olası cezanın maliyeti,
  • İtibar kaybının maliyeti,
  • Kayıp satışların maliyeti ve benzeri.

Kusurların maliyetli üretim hatalarına neden olma olasılığı ne kadar yüksek olursa, seçmeniz gereken kapsam düzeyi de o kadar ciddi olur.

Code Kapsam ve Fonksiyonel Kapsam Arasındaki Fark

Code Kapsam Fonksiyonel Kapsama
Kaynak kodun test ortamınız tarafından ne kadar iyi çalıştırıldığını gösterir. Tasarımın işlevselliğinin test düzeneğiniz tarafından ne kadar iyi karşılandığını ölçer.
Hiçbir zaman tasarım spesifikasyonu kullanmaz. Tasarım şartnamesini kullanır.
Geliştiriciler tarafından yapıldı. Test uzmanları tarafından yapıldı.

Code Kapsama Araçları

İşte önemli kod kapsamı araçlarının bir listesi:

Araç Adı Açıklama
Cobertura Açık kaynaklı bir kod kapsamı aracı. Bir kod tabanını araçlarla donatarak ve test paketi çalıştırıldığında hangi kod satırlarının yürütüldüğünü ve hangilerinin yürütülmediğini analiz ederek test kapsamını ölçer.
Yonca Yonca (OpenCloverAyrıca, önceki sürümden bu yana değiştirilen uygulama kodunu kapsayan testleri çalıştırarak test süresini de kısaltır.
Geliştirici Ortağı DevPartner, geliştiricilerin analiz etmesine olanak tanır Java Kod kalitesi ve karmaşıklığı için kod.
Emma EMMA, kaynak dosya, sınıf ve metot düzeylerinde toplanan sınıf, metot, satır ve temel blok kapsamını destekler.
Kalistik Kalistick, kodu farklı açılardan analiz eden üçüncü taraf bir uygulamadır.
CoView ve CoAnt Kod kapsamı ölçümü, sahte nesne oluşturma, kod test edilebilirliği, yol ve dal kapsamı ve daha fazlası için bir kod kapsamı aracı.
Hedef tahtası C++ BullseyeCoverage, kod kapsamını ölçen bir araçtır. C++ ve C.
Sonar Sonar, kod kalitesini yönetmenize yardımcı olan açık kaynaklı bir kod kapsamı aracıdır.

Kullanmanın Avantajları ve Dezavantajları Code Kapsam

Avantajlar Dezavantajlar
Kod kapsamının nicel bir ölçümünü değerlendirmek için faydalıdır. Tasarımda belirli bir özellik uygulanmamış olsa bile, kod kapsamı yine de %100 olarak raporlanır.
Test kapsamını artırmak için ek test senaryoları oluşturmanıza olanak tanır. Kod kapsamı kullanılarak bir özelliğin tüm olası değerlerinin test edilip edilmediğini belirlemek mümkün değildir.
Bu ��zellik, bir dizi test senaryosu tarafından çalıştırılmayan program alanlarını bulmanızı sağlar. Code Kapsam, mantığınızı ne kadar ve ne kadar iyi ele aldığınızı göstermez.

SSS

Birçok ekip pratik bir hedef olarak %70 ila %80'i hedefliyor. %100'e ulaşmak nadiren maliyet açısından verimlidir. Tüm kod tabanında tek bir rakamı kovalamak yerine, kritik ve yüksek riskli mantığı kapsamaya odaklanın.

Hayır. Tam kapsam, her satırın çalıştırıldığını kanıtlar, ancak her girdinin, değerin veya gereksinimin doğrulandığını değil. Mantık hataları ve eksik özellikler yine de tespit edilmeden geçebilir, bu nedenle kapsam, iyi test tasarımının yerini almaktan ziyade onu tamamlar.

Code Kapsama alanı, test sırasında ne kadar kaynak kodun çalıştırıldığını ölçer. Test kapsamı daha geniştir, tracTestlerin gereksinimleri, özellikleri ve riskleri ne kadar iyi karşıladığını ölçer. Code Kapsam, genel test kapsamının girdilerinden biridir.

Hayır. Eksik bir else yolu gibi dalları test etmeden de %100 ifade kapsamına ulaşabilirsiniz. Dal (karar) kapsamı daha güçlüdür çünkü ifade kapsamını içerir ve her sonucu test eder.

Yapay zeka, kaynak kodunu ve mevcut testleri analiz ederek test edilmemiş, yüksek riskli yolları belirler ve ardından yeni senaryolar önerir veya oluşturur. Makine öğrenimi ayrıca hangi testlerin çalıştırılacağına öncelik vererek geri bildirim süresini kısaltır ve verimliliği artırır.ping Kapsama alanı yüksek.

Evet. Diffblue Cover gibi yapay zeka araçları kodu tarar ve kapsanmayan mantık için otomatik olarak birim testleri yazar. Riskli dalları ve koşulları hedefleyerek, çok daha az manuel çabayla test kapsamını artırırlar.

OpenClover Bu araç, ifade, dal ve yöntem kapsamını ölçer ve 20'den fazla ölçüm verisi toplar. CoberturaEMMA ve JaCoCo Diğer yaygın olarak kullanılan ücretsiz seçenekler şunlardır: Java projeleri.

Değiştirilmiş Koşul/Karar Kapsamı, bir karardaki her koşulun sonucu bağımsız olarak etkilemesini gerektirir. Dal kapsamından daha katıdır ve DO-178C standardı uyarınca aviyonik gibi güvenlik açısından kritik yazılımlar için zorunludur.

Bu yazıyı şu şekilde özetleyin: