code coverage tutorial
Bu kapsamlı eğitim, Yazılım Testinde Kod Kapsamının ne olduğunu, türlerini, avantajlarını ve dezavantajlarını açıklar:
Herhangi bir yazılım geliştirme şirketinin nihai hedefi, kaliteli bir yazılım geliştirmektir. Bu hedefe ulaşmak için yazılımın kapsamlı bir şekilde test edilmesi gerekir.
Bu nedenle test, bir yazılım uygulaması geliştirmenin ayrılmaz bir parçasıdır. Bu nedenle, geliştirilen yazılımın geliştirici tarafından gözden geçirilmesi (birim test aşamasında yapılır) ve daha sonra minimum hataya sahip olduğundan veya hiç hata içermediğinden emin olmak için kapsamlı bir şekilde test edilmek üzere QC ekibine aktarılması önemlidir.
Yazılım, test için gerçek test ekibine sunulmadan önce birim testine tabi tutulur. Bu test, kod düzeyinde testleri içerdiğinden, geliştirici tarafından yapılır. Bu, test edilen kodun her bir bölümünün beklendiği gibi çalışmasını sağlamak için yapılır.
Burada, geliştirilen küçük kod parçaları, doğruluğunu sağlamak için ayrı ayrı test edilir. Ancak, genellikle bir geliştiricinin aklına gelen soru şudur: birim testi ne kadar yapılmalıdır ve bunun cevabı Kod Kapsamında yatmaktadır.
Bu eğitim, size Kod Kapsamının ne olduğu ve neden buna ihtiyacımız olduğu konusunda derin bir bilgi verecektir. Test Kapsamından ne kadar farklı olduğunu anlayacaksınız.
Kod Kapsamı için kullanılan araçlara ve metodolojilere de bir göz atacağız ve bu eğitimin sonuna doğru, dezavantajlarının yanı sıra faydaları da göreceğiz. Kod Kapsamı ile ilgili bazı efsaneler de burada ele alınacaktır.
Ne öğreneceksin:
Kod Kapsamı Nedir
Bu, önemli bir birim testi metriğidir. Birim testlerinin etkinliğini bilmekte kullanışlıdır. Test sırasında kaynak kodun yüzde kaçının yürütüleceğini gösteren bir ölçüdür.
Basit bir ifadeyle, Bir yazılım programının veya bir uygulamanın kaynak kodunun test sırasında yürütüleceği kapsam, Kod Kapsamı olarak adlandırılır.
Testler, tüm dallar, koşullar veya döngüler dahil olmak üzere tüm kod parçasını yürütürse, tüm olası senaryoların tam kapsamı olduğunu ve dolayısıyla Kod Kapsamının% 100 olduğunu söyleyebiliriz. Bunu daha da iyi anlamak için bir örnek ele alalım.
Aşağıda verilen, iki sayı eklemek ve sonucun değerine bağlı olarak sonucu görüntülemek için kullanılan basit bir koddur.
Input a, b Let c = a + b If c <10, print c Else, print ‘Sorry’
Yukarıdaki program iki girdi alır, yani 'a' ve 'b'. Her ikisinin toplamı c değişkeninde saklanır. C'nin değeri 10'dan küçükse, 'c' değeri yazdırılır, aksi takdirde 'Üzgünüm' yazdırılır.
Şimdi, yukarıdaki programı a & b değerleriyle doğrulamak için bazı testlerimiz varsa, böylece toplam her zaman 10'dan küçükse, o zaman kodun diğer kısmı asla çalıştırılmaz. Böyle bir senaryoda teminatın tam olmadığını söyleyebiliriz.
Bu, Kod Kapsamının anlamını açıklığa kavuşturmak için sadece küçük bir örnekti. Daha fazlasını keşfettikçe, bu konuda daha iyi netlik kazanacaksınız.
Neden Kod Kapsamına İhtiyacımız Var?
(resim kaynak )
Çeşitli nedenler, Kod Kapsamı'nı gerekli kılar ve bunlardan bazıları aşağıda listelenmiştir:
verizon hotspot için ağ güvenlik anahtarım nedir
- İyi bir Kod Kapsamı olmayan yazılıma kıyasla yazılımın daha az hataya sahip olduğunu tespit etmeye yardımcı olur.
- Kod kalitesinin iyileştirilmesine yardımcı olarak, dolaylı olarak daha iyi 'kaliteli' bir yazılım sunmaya yardımcı olur.
- Testin etkinliğini (kodu test etmek için yazılan birim testlerin etkinliği) bilmek için kullanılabilecek bir ölçüdür.
- Kaynak kodun test edilmeyen kısımlarını belirlemeye yardımcı olur.
- Mevcut testin (birim testi) yeterli olup olmadığını ve bazı daha fazla testin gerekli olup olmadığını belirlemeye yardımcı olur.
Kod Kapsamı Vs Test Kapsamı
Kod Kapsamı ile Test Kapsamı arasındaki farkı anlamak için önce Test Kapsamının anlamını anlayalım.
Test kapsamı
Bir yazılımın test edilmesi sırasında beklenen testin kaç bölümünün kapsanmış olduğunun bir ölçüsüdür. Tarafından 'Beklenen test' Belirli bir yazılımı test etmek için yürütülecek şekilde yazılan tüm test senaryolarını kastediyoruz.
Bir yazılımı test etmek için toplam 500 test senaryosu yazıldığını varsayalım. Şimdi, test faaliyetinin bir parçası olarak sadece 300 test senaryosu yürütüldü. Bunun zaman yetersizliğinden kaynaklandığını varsayalım. Bu durumda, aşağıdakiler test kapsamı olacaktır.
Test Kapsamı = (Yürütülen Test durumları / Toplam Test durumları) * 100
= (300/500) * 100
=% 60
Bunu, Kod Kapsamının ne olduğu ile karşılaştıralım.
Kod kapsamı
Kodu test ederken bir uygulamanın kaynak kodunun ne ölçüde yürütüldüğünü gösteren bir ölçüdür. Böylece bir kaynak kodun ne kadar test edileceğini gösterir.
500 satır kod içeren bir uygulamayı test edeceğinizi varsayalım, kodun yalnızca 400 satırı testlerle çalıştırılır. Bunun belirli bir döngü / koşulun yürütülmemesinden kaynaklandığını varsayalım. Bu durumda, aşağıdaki kod kapsamı olacaktır.
Kod Kapsamı = (yürütülen kod satırı sayısı / toplam kod satırı sayısı) * 100
= (400/500) * 100
=% 80
Aşağıda, Kod Kapsamı ve Test Kapsamı arasındaki farklar listelenmiştir:
Test kapsamı | Kod kapsamı |
---|---|
Bir yazılımın test edilmesi sırasında beklenen testin ne kadarının kapsanmış olduğunun bir ölçüsüdür. | Kodu test ederken bir uygulamanın kaynak kodunun ne ölçüde yürütüldüğünü gösteren bir ölçüdür. |
Test Kapsamı aşağıdaki formül kullanılarak hesaplanabilir: Test Kapsamı = (Yürütülen Test durumları / Toplam Test durumları) * 100 | Kod Kapsamı aşağıdaki formül kullanılarak hesaplanabilir: Kod Kapsamı = (yürütülen kod satırı sayısı / toplam kod satırı sayısı) * 100 |
Metodolojiler
Burada, Kod Kapsamını ölçmek için kullanılan / kullanılabilecek çeşitli yöntemleri tartışacağız.
Bu metodolojileri anlamak için aşağıdaki kod parçasına bir göz atalım:
Add (int a, int b) { If (b > a) { b = b - a Print b } If (a > b) { b = a – b Print b } Else Print ‘0’ }
Bildirim Kapsamı
Bu metodoloji, kaynak koddaki tüm olası çalıştırılabilir kod ifadelerinin en az bir kez çalıştırılıp çalıştırılmadığını söyleyen bir ölçüdür. Kaynak kodun her satırının en az bir kez testlerle kapsanmasını sağlayan bir yöntemdir.
Bu basit gelebilir, ancak Bildirim Kapsamını ölçerken dikkatli olunması gerekir. Bunun nedeni, bir kaynak kodda, giriş değerlerine bağlı olarak yürütülmeyebilecek belirli bir koşul olabilir.
Bu, tüm kod satırlarının testte kapsanmayacağı anlamına gelir. Bu nedenle, kaynak koddaki tüm bu koşulları kapsamak için farklı girdi değeri kümeleri kullanmak zorunda kalabiliriz.
Örneğin, Yukarıdaki kaynak kodunda, giriş değerleri 2 ve 3 olarak alınırsa, kodun 'Else' kısmı çalıştırılmaz. Bununla birlikte, giriş değerleri 3 ve 2 türündeyse, kodun 'If' kısmı çalıştırılmaz.
Bu, Bildirim Kapsamımızın herhangi bir değer kümesinde% 100 olmayacağı anlamına gelir. Böyle bir durumda,% 100 İfade Kapsamı sağlamak için testleri üç ((2, 3), (3, 2), (0, 0)) değer kümesinin tümü ile yürütmemiz gerekebilir.
İşlev Kapsamı
Adından da anlaşılacağı gibi, bu metodoloji, test sırasında kaynak kodda bulunan işlevlerin kapsamını ölçer. Kaynak koddaki tüm işlevler test yürütme sırasında test edilir. Yine, fonksiyonun kapsamlı bir şekilde test edilmesi için bu fonksiyonları değişken değerler için test etmemiz sağlanmalıdır.
Bir kaynak kodunda birden fazla işlev olabilir ve kullanılan giriş değerlerine bağlı olarak bir işlev çağrılabilir veya çağrılmayabilir. Bu nedenle, İşlev Kapsamının amacı, aranan her bir işleve sahip olduğumuzdan emin olmaktır.
Örneğin, Yukarıdaki kaynak kodda, testlerimiz 'Ekle' işlevini bir kez bile çağırırsa, bunu eksiksiz İşlev Kapsamı olarak adlandırırız.
Durum Kapsamı
Bir koşulumuzun olduğu bir kaynak kodda, sonuç doğru veya yanlış olan bir Boole değeri olacaktır. Koşul Kapsamı, testlerin her iki değeri de, yani doğru, yanlış, kapsayıp kapsamadığını belirlemeyi amaçlar.
Kaynak kodda, ortaya çıkan her durum hem doğru hem de yanlış durumlar için değerlendirildiğinde, kod için Koşul Kapsamının tamamlandığı söylenir.
Örneğin, yukarıdaki kodda (2, 3) ve (4, 2) değer kümeleri kullanılırsa Koşul Kapsamı% 100 olacaktır. Veri seti (2, 3) kullanıldığında, (b> a) doğru olarak değerlendirilir ve (a> b) yanlış olarak değerlendirilir. Benzer şekilde, veri seti (4, 2) kullanıldığında (b> a) yanlış olarak değerlendirilir ve (a> b) doğru olarak değerlendirilir.
Böylece her iki koşul da hem doğru hem de yanlış değerleri kapsar. Dolayısıyla Koşul Kapsamı% 100 olacaktır.
oracle mülakat sorularında performans ayarı
Şube Kapsamı
Bu metodoloji, her koşullu yapıda görünen her dalın kaynak kodda yürütülmesini sağlamayı amaçlamaktadır. Örneğin, yukarıdaki kodda, tüm 'Eğer' ifadeleri ve bunlara eşlik eden tüm 'Aksi' ifadeleri,% 100 Şube Kapsamı için test kapsamında olmalıdır.
Örneğin, yukarıdaki kodda (2, 3), (4, 2), (1, 1) değer kümeleri kullanılırsa, Dal Kapsamı% 100 olacaktır. Veri seti (2, 3) kullanıldığında (b> a) ve ilk 'If' dalı çalıştırılır. Benzer şekilde, veri seti (4, 2) kullanıldığında, (a> b) doğru olarak değerlendirilir ve ikinci 'Eğer' dalı çalıştırılır.
Daha sonra veri kümesiyle (1, 1) 'Else' dalı doğru olarak değerlendirilir ve çalıştırılır. Böylelikle% 100 Şube Kapsamı sağlar.
Şube Kapsamı Vs Koşul Kapsamı
Şube Kapsamı genellikle Koşul Kapsamı ile karıştırılır, ancak ikisi farklıdır.
Bunu basit bir örnekle anlayalım.
If (a >0) & (b >0) Then Print “Hello” Else Print “Bye”
Tamamlanması için gereken veri setini yazalım Şube Kapsamı:
(1, 1) - Bu durumda, 'a' ve 'b' nin her ikisi de doğrudur, bu nedenle If koşulu çalıştırılır.
(1, 0) - Bu durumda, 'a' doğrudur ve 'b' yanlış olacaktır, dolayısıyla kodun Else kısmı çalıştırılır.
Şube Teminatının amacı bildiğimiz gibi her şubeyi en az bir kez yaptırmaktır ve bu amaca ulaşılır.
Durum Kapsamı:
(1, 0) - Bu durumda, 'a' doğrudur ve 'b' yanlış olur.
(0, 1) - Bu durumda, 'a' yanlıştır ve 'b' doğru olacaktır.
Koşul Kapsamının amacı, yürütülen her koşul için doğru ve yanlışı elde etmektir ve bu amaca burada ulaşılır.
Koşul kapsamındaki diğer bölümün uygulanmadığını fark ettiniz mi? Koşul Kapsamı, Şube Kapsamından farklıdır.
Kod Kapsamı İçin Araçlar
Herhangi bir Yazılımın Kod Kapsamını ölçmek için, piyasada çeşitli araçlar bulunmaktadır.
Aşağıda referans olarak kullanabileceğiniz araçlardan bazıları listelenmiştir:
- Parasoft JTest
- Testwell CTC ++
- Kapsam
- JaCoCo
- CodeCover
- Bullseye Kapsam
- EMMA
- Açık kapak
- NCover
- Squish COCO
- Kapsam Ölçer
- GCT
- TCAT C / C ++
- Gretel
- JCov
Önerilen Okuma => Kod Kapsamı Araçları
Yukarıdaki bağlantı, bu araçlarla ilgili aşağıdaki bilgileri içerecektir:
- Ana Özellikler
- Lisans türü
- Resmi URL
- Lehte ve aleyhte olanlar
- En son sürüm
Faydaları
Yukarıda görüldüğü gibi, aşağıdaki nedenlerden dolayı çok faydalı bir test metrikidir:
- Testler tarafından test edilmemiş / keşfedilmemiş kalacak olan bir kaynak koddaki bu alanları tanımlamaya yardımcı olur.
- Kullanılan / ölü kodu belirlemede kullanışlı olur ve böylece kod kalitesini artırır.
- Birim testlerinin etkinliği Kod Kapsamı yardımıyla öğrenilebilir.
- Bu metrikler kullanılarak daha kaliteli yazılımlar teslim edilebilir.
Dezavantajlar
- % 100 kod kapsamını hedeflemeye çalışmak, bazen testlerin sağlamlığının olmamasına ve hataya açık senaryoların yakalanmasında eksikliğe neden olur.
- Yaygın algının aksine, tasarlanan yazılımın tüm gereksinimleri karşılayıp karşılamadığını garanti edemez.
Mitler Vs Gerçekler
Efsane | Gerçek |
---|---|
% 100 Kod Kapsamına sahip olmak, yazılımın hiçbir hataya sahip olmamasını sağlar. | Hayır,% 100 kod kapsamı, hatasız bir yazılımı garanti edemez. Kalite kontrol ekibinin iyi çabalarıyla birlikte iyi bir Kod Kapsamı, minimum hata içeren veya hiç hata içermeyen bir yazılım sağlayabilir. |
% 100 Kod Kapsamına sahip olmak, yazılan kodun mükemmel olduğu anlamına gelir. | Hayır, aslına bakılırsa, kod kapsamı% 100 olmasına rağmen önemli gereksinimler kod tarafından ilk etapta yakalanmamışsa, kod mükemmel olarak adlandırılamaz. |
Kod Kapsamı, bir Yazılım ürünü üzerinde gerçekleştirilen testlerin etkinliğini ölçer. | Hayır, Kod Kapsamı, yalnızca birim testlerin, yani yalnızca bir Yazılımın kaynak kodu üzerinde yürütülen testlerin etkinliğini test etmek için kullanılan bir ölçüdür. |
SSS
S # 1) Kabul edilebilir bir Kod Kapsamı nedir?
Cevap: Yazılım kodunu birim test ederken% 100 kod kapsamına ulaşmak hedef olmamalıdır. Ama neden olmasın? Nedeni anlamak için, altta yatan anlamı anlamak için biraz daha derine dalmanız gerekebilir.
% 100 kapsamı hedeflediğimizde, testleri tasarlarken tüm odak noktasının her bir ifadenin, döngünün, dalın veya koşulun test edilip edilmediğini sağlamaya gitmesi daha sık görülür. Bu yüzden, harcanan zamanı dikkate almaya değmeyebilecek çok fazla çaba harcıyoruz.
Dahası, yüksek bir kapsama odaklanmak aynı zamanda kusurlara sahip olma ihtimali olan önemli senaryoların da gözden kaçırılmasına neden olur çünkü tek amacımız her bir kod satırının test edilmesini sağlamaktır.
Yüksek kod kapsamına odaklanmak her zaman o kadar önemli değildir ve farklı kodları test etmeyi hedefleyen sabit bir sayı da olamaz. Ancak genel olarak% 75 -% 80'lik bir kapsama ideal bir sayı olmalıdır.
Kodumuzu test ederken ana odak noktası, kritik ve muhtemelen hataya açık senaryoları kapsamak olmalıdır. Bunlar gözden kaçırılırsa,% 100 Kod Kapsamına sahip olmalarına rağmen testlerimizin test etkinliği zayıf olacaktır.
S # 2) Kod Kapsamımı nasıl kontrol ederim?
Cevap: Kodu test etmek için tasarlanmış testlerle elde etmiş olabileceğiniz Kod Kapsamı yüzdesini test etmek için piyasada çeşitli araçlara sahibiz. Kullanılan programlama diline bağlı olarak çeşitli araçlarımız var.
Bunlardan bazıları aşağıda listelenmiştir:
- Java - Kapsam, JaCoCo
- Javascript - Blanket.js, İstanbul
- Python - Coverage.py
- Yakut - SimpleCov
Bu araçları kullanarak, kodun hangi bölümünün yürütüleceğini ve hangisinin testlerimiz tarafından gözden kaçırılacağını bilmemize yardımcı olan testlerimizin eksiksiz bir kapsama raporunu alabiliriz.
S # 3) Kod Kapsamı iyi bir ölçü mü?
Cevap: Gerçek hayat senaryolarında, bu belirli bir dereceye kadar ve bazı belirli şekillerde faydalıdır.
Öncelikle sınırlamalarına baktığımızda,% 100 kapsama sahip olmanın Kodun hatasız olduğunu garanti etmediğini ve tüm gereksinimlerin kodun kapsamına girdiğini garanti etmediğini çok iyi biliyoruz, yani% 100 Kod Kapsamına rağmen Kodda hatalar olması çok muhtemeldir, bunun nedeni kapsamın tüm senaryoların test edildiğini garanti etmemesidir.
Üstelik kod yazılırken gereksinimler atlanmışsa, Kod Kapsamının bir parçası olarak bakılan kodla gereksinim eşleştirmesi yapılmaz.
Bunu söyledikten sonra, Kod Kapsamı'nı ölçüt olarak kullandığımızda, kodumuzun her satırını test etmenin temel gereksinimlerini karşılayıp karşılamadığımızın bize bir fikir verdiğini inkar edemeyiz. Bu kapsam yüzdesi, birim testlerimizle kodumuzun kaç parçasının yürütüldüğü konusunda bize bir fikir verir.
Kodumuzun ne kadarının uygulanmayacağını öğrenmeye başladık. Bu da, daha ne kadar birim testin gerekli olduğuna ve kodun hangi bölümleri için gerekli olduğuna karar vermemize yardımcı olur.
Böylece, zayıf bir kapsama sahip olmanın bize birim testlerinin etkisizliği hakkında bir fikir verdiği sonucuna varabiliriz. Aynı zamanda,% 100 kapsama sağlamak, hatasız bir kod için bir garanti değildir. Bu nedenle, yüksek bir Kod Kapsamı yüzdesini hedeflemenin önemini fazla vurgulamadığımız dengeli bir yaklaşıma sahip olmak gerekir.
S # 4) Kod Kapsamımı nasıl geliştirebilirim?
Cevap: JaCoCo, İstanbul vb. Kapsam araçlarının sağladığı Kod Kapsamı Raporu, testlerin kapsadığı alanları ve ayrıca test edilmeyecek alanları gösterir.
Kodun test edilmemiş kısımlarını bilerek, testler manuel olarak veya aksi takdirde test edilmeyecek alanları kapsayacak şekilde herhangi bir otomasyon aracı kullanılarak yazılabilir ve böylece Kod Kapsamı artırılabilir.
Burada dikkat edilmesi gereken önemli bir nokta, koddaki bir işlevi test etmek için yüzlerce satır kod yazabilirken, yine de kapsam çok daha az olabilir. Bunun nedeni, büyük kodun bir bölümünü test etmek için çok derine inmenin Kod Kapsamını artırmaya yardımcı olmayacağıdır.
Bu nedenle, hedef kapsamı artırmaksa, tek bir işlevde derinlere dalmak ve bu tek işlev için büyük testler yazmak yerine tüm işlevleri, koşulları ve döngüleri kapsamaya özen gösterilmelidir.
Sonuç
Günümüzün yüksek tempolu internet dünyasında gerekli olan, yüksek kaliteli bir yazılım ürünüdür.
Unix'te iki dosya nasıl karşılaştırılır
Kaliteli bir yazılım sağlamak sadece bir QA Mühendisinin sorumluluğu değil, aynı zamanda geliştiricinin sorumluluğudur. Kod Kapsamı, geliştirici (ler) tarafından QA ekibine kaliteli bir ürün sunmak söz konusu olduğunda çok kullanışlıdır.
Bu eğitici, Kod Kapsamı ve kullanımları hakkında her şeyi açıkladı. Ayrıca, Kod Kapsamı ve Test Kapsamı arasındaki farkı anlamak için biraz daha derine indik. Bunun yanı sıra, çeşitli Kod Kapsamı araçlarıyla birlikte kullanılan metodolojileri de anladık.
Faydalar ve Dezavantajlar burada kısaca anlatılmıştır. Son olarak, Kod Kapsamı ile ilgili bazı mitleri ve SSS'leri ortadan kaldırdık
Mutlu Okumalar !!
Önerilen Kaynaklar
- En İyi 15 Kod Kapsamı Aracı (Java, JavaScript, C ++, C #, PHP için)
- Geliştirme, Derleme, Profil Oluşturucu, Kod Kapsamı ve İnceleme için 15 En İyi JAVA Araçları
- Kod Örnekleriyle C # İşlevleri / Yöntemleri Öğreticisi
- Kod Örnekleriyle C # İstisna İşleme Eğitimi
- Tortoise SVN Eğitimi: Kod Deposundaki Revizyonlar
- Kod Örnekleriyle Java Dizi Uzunluğu Eğitimi
- AWS CodeBuild Eğitimi: Maven Build'tan Kod Çıkarma
- SVN Eğitimi: Subversion Kullanarak Kaynak Kodu Yönetimi