Özellikle eski uygulamalar olmak üzere birçok uygulama üzerinde çalışıyorum. Şu anda, kod kapsamları oldukça düşüktür: genellikle% 10 ila 50 arasında.
Birkaç haftadan beri, Bangalore ekipleriyle (gelişimin ana kısmı Hindistan'da denizaşırı yapılır) Cobertura'ya (şu anda JaCoCo'ya geçiş yapıyor olsak bile kod kapsamı aracımız) hariç tutulan tartışmalar hakkında tekrar tekrar tartışıyoruz.
Bakış açıları şöyledir: uygulamanın bazı katmanları (1) üzerinde herhangi bir birim testi yazmayacakları için , bu katmanlar kod kapsamı ölçüsünden kolayca çıkarılmalıdır. Başka bir deyişle, kod kapsamı ölçüsünü sınanan veya sınanması gereken kodla sınırlamak isterler .
Ayrıca, karmaşık bir sınıf için birim testi üzerinde çalıştıklarında, büyük bir uygulama nedeniyle faydalar - sadece kod kapsamı açısından - fark edilmeyecektir. Kod kapsamının kapsamını azaltmak, bu tür çabaları daha görünür hale getirecektir ...
Bu yaklaşımın amacı, uygulamanın test edilebilir olarak değerlendirdiğimiz kısmının mevcut durumunu gösteren bir kod kapsamı ölçütümüz olacaktır .
Ancak benim görüşüm, rakamları bir şekilde taklit ettiğimizdir. Bu çözüm, herhangi bir çaba harcamadan daha yüksek kod kapsamına ulaşmanın kolay bir yoludur. Beni rahatsız eden bir başka nokta şudur: bir haftadan diğerine kapsama artışı gösterirsek, bu iyi haberin geliştiricilerin iyi çalışması mı yoksa sadece yeni istisnalar mı olduğunu nasıl anlayabiliriz?
Ayrıca, kod kapsamı ölçüsünde nelerin dikkate alındığını tam olarak bilemeyiz. Örneğin, kod kapsamının% 40'ına sahip 10.000 satırlık bir kod uygulamam varsa, kod tabanımın% 40'ının test edildiğini düşürebilirim (2) . Ancak istisnalar belirlersek ne olur? Kod kapsamı şimdi% 60 ise, tam olarak ne çıkarabilirim? "Önemli" kod tabanımın% 60'ı test edildi mi? Nasıl yapabilirim
Bildiğim kadarıyla, bu konuda neşeli olamazsak bile, "gerçek" kod kapsamı değerini korumayı tercih ederim. Ayrıca, Sonar sayesinde, kod tabanımızda kolayca gezinebilir ve herhangi bir modül / paket / sınıf için kendi kod kapsamını biliriz. Ancak, elbette, küresel kod kapsamı hala düşük olacaktır.
Bu konuda ne düşünüyorsunuz? Projelerinizde nasılsınız?
Teşekkürler.
(1) Bu katmanlar genellikle UI / Java çekirdekleri vb.
(2) Bunun doğru olmadığını biliyorum. Aslında, bu sadece kod tabanımın% 40'ının