Yanıtlar:
Kod kapsamı, otomatik testler çalışırken kodunuzun kaç satırının / bloğunun / yayının yürütüldüğünün bir ölçümüdür.
Kod kapsamı, izleme çağrıları eklemek ve enstrümanlı ürüne karşı tam otomatik testler yürütmek için ikili dosyaları enstrüman haline getirmek için özel bir araç kullanılarak toplanır. İyi bir araç, yalnızca yürütülen kodun yüzdesini değil, aynı zamanda verileri incelemenizi ve belirli bir test sırasında tam olarak hangi kod satırlarının yürütüldüğünü görmenizi sağlar.
Ekibimiz, kurum içi kod kapsamı araçları seti olan Magellan'ı kullanıyor . Bir .NET mağazasıysanız, Visual Studio kod kapsamını toplamak için tümleşik araçlara sahiptir. Bu makalede anlatıldığı gibi bazı özel araçları da döndürebilirsiniz .
Bir C ++ mağazasıysanız, Intel'in Windows ve Linux için çalışan bazı araçları var, ancak onları kullanmadım. Ayrıca GCC için gcov aracının olduğunu duydum, ancak bunun hakkında hiçbir şey bilmiyorum ve size bir bağlantı veremiyorum.
Nasıl kullandığımızla ilgili olarak - kod kapsamı, her kilometre taşı için çıkış ölçütlerimizden biridir. Aslında üç kod kapsamı ölçümümüz var - birim testlerden (geliştirme ekibinden), senaryo testlerinden (test ekibinden) ve birleşik kapsama.
BTW, kod kapsamı ne kadar test yaptığınız için iyi bir metrik olsa da, ürününüzü ne kadar iyi test ettiğinizin iyi bir metriği olması gerekmez. Kaliteyi sağlamak için kod kapsamı ile birlikte kullanmanız gereken başka metrikler de vardır.
Kod kapsamı temel olarak kodunuzun ne kadarının testler kapsamında olduğunu test eder. Yani,% 90 kod kapsamına sahipseniz, testlerin kapsamında olmayan kodun% 10'u olduğu anlamına gelir. Kodun% 90'ının kapsantığını düşünüyor olabileceğinizi biliyorum, ancak farklı bir açıdan bakmak zorundasınız. % 100 kod kapsamı almanızı engelleyen nedir?
Buna iyi bir örnek verilecektir:
if(customer.IsOldCustomer())
{
}
else
{
}
Şimdi, yukarıdaki kodda iki yol / dal vardır. Her zaman "EVET" dalına vuruyorsanız, diğer kısmı kapsamazsınız ve Kod Kapsamı sonuçlarında gösterilir. Bu iyi çünkü artık neyin kapsanmadığını biliyorsunuz ve diğer kısmı kapsamak için bir test yazabilirsiniz. Kod kapsamı yoksa, patlamak için bir bomba üzerinde oturuyorsunuz.
NCover , kod kapsamını ölçmek için iyi bir araçtır.
Unutmayın, "% 100 kod kapsamına" sahip olmak her şeyin tamamen test edildiği anlamına gelmez - her kod satırının test edildiği anlamına gelir, ancak her (ortak) durumda test edildiği anlamına gelmez.
Muhtemelen testler yazmanız gereken kod parçalarını vurgulamak için kod kapsamını kullanırdım. Örneğin, geçerli birim testlerimi çalıştırırken myImportantFunction () 'i gösteren herhangi bir kod kapsama aracı çalıştırılmazsa, muhtemelen geliştirilmeleri gerekir.
Temel olarak,% 100 kod kapsamı, kodunuzun mükemmel olduğu anlamına gelmez. Daha kapsamlı (birim) testler yazmak için bir rehber olarak kullanın.
x
ve geri dönen bir fonksiyonunuz x/x
varsa ve testi my_func (2) kullanarak çalıştırdıysanız (fonksiyonun kodu çalıştırılacağı için)% 100 kapsama sahip olursunuz, ancak 0 parametre olduğunda büyük bir sorunu kaçırdınız. Yani , % 100 kapsam dahilinde bile gerekli tüm senaryoları test etmediniz.
Önceki cevapların birçoğuna birkaç noktayı tamamlamak:
Kod kapsamı, test kümenizin kaynak kodunuzu ne kadar iyi kapsadığı anlamına gelir. yani test kodu kümesinin kaynak kodunun kapsamı.
Yukarıdaki yanıtlarda belirtildiği gibi, yollar, koşullar, işlevler, ifadeler vb. Gibi çeşitli kapsam kriterleri vardır.
Not: Statik kod analizi, erişilemeyen bir kod veya asılı kod olup olmadığını, yani başka bir işlev çağrısı kapsamına girmeyen kodu bulur. Ve ayrıca diğer statik kapsama. Statik kod analizi% 100 kodun kapsandığını rapor etse bile, olası tüm kod kapsamı test edilirse, test setiniz hakkında rapor vermez.
Kod kapsamı, önceki cevaplarda iyi açıklanmıştır. Bu daha çok sorunun ikinci kısmına bir cevap.
Kod kapsamını belirlemek için üç araç kullandık.
Bu araçları
Kod kapsamı, test edilen kodun bir ölçüsüdür. Ölçülebilen çeşitli kapsam kriterleri vardır, ancak genellikle bir program içindeki toplam kapsamı oluşturan çeşitli yollar, koşullar, fonksiyonlar ve ifadelerdir. Kod kapsamı metriği, bu kapsam ölçütlerinin her birini yürüten testlerin yalnızca bir yüzdesidir.
Projelerimdeki ünite test kapsamını nasıl izlediğime gelince, takip etmek için statik kod analiz araçlarını kullanıyorum.
Perl için modüllerimde düzenli olarak kullandığım mükemmel Devel :: Cover modülü var.
Yapı ve kurulum Module :: Build tarafından yönetiliyorsa ./Build testcover
, hangi kod yolunun kapsanmadığını görmenizi kolaylaştıran güzel renklerle, alt, çizgi ve koşul başına kapsama alanı anlatan güzel bir HTML sitesi almak için çalıştırabilirsiniz .
Önceki cevaplarda Kod kapsamı iyi açıklanmıştır. Sadece üzerinde çalışıyorsanız araçlar iOS
ve OSX
platformlar hakkında bazı bilgiler ekliyorum , Xcode kod kapsamı test etmek ve izlemek için tesis sağlar.
Referans Bağlantıları:
https://medium.com/zendesk-engineering/code-coverage-and-xcode-6b2fb8756a51
Her ikisi de Xcode ile kod kapsamını öğrenmek ve keşfetmek için faydalı linklerdir.
PHP için Sebastian Bergmann'dan Github'a bir göz atmalısınız
PHP kod kapsamı bilgileri için toplama, işleme ve oluşturma işlevselliği sağlar.