Test Kapsamı (Test Coverage) Nedir?

Metin Alnıaçık
3 min readApr 16, 2023

--

Test kapsamı, yazılım projelerinde sıkça duyulan bir kavramdır. Bu kavram genel anlamda kullanılır. Özele inildiğinde üç çeşit coverage kavramı vardır.

Sınıf Özelinde Test Kapsamı (Class Coverage)
Bir sınıfın içerisinde kaç tane metot olursa olsun, herhangi bir metodun olası herhangi durumu test edildiğinde bu sınıf %100 class coverage’a sahiptir denebilir.

Metot Özelinde Test Kapsamı (Method Coverage)
Bir metodun herhangi bir patikası test edilmesi durumunda, bu metot %100 method coverage’a sahiptir denebilir.

Satır Özelinde Test Kapsamı (Line Coverage)
Bir sınıfın içerisindeki tüm metotlardaki tüm satırlar test edildiğinde line coverage tamamıyla sağlanmış olur.

Teorik kısım ile konu tam manasıyla anlaşılmamış olabileceğinden hemen örneğe geçelim.

Matematik işlemlerini yaptığımız MathOperationService adında bir sınıf oluşturuyoruz. Bu sınıfta dört metot mevcuttur. Bunlar; divide, add, subtract ve multiply metotlarıdır. Biz, sadece divide ve multiply metotları için test yazacağız. Bu sayede class coverage ile method coverage arasındaki farkı kolayca görebileceğiz.

Başta da söylediğimiz gibi bir sınıfın içerisinde bir metot için bile test yazılmışsa, class coverage yüzdesi %100 olacaktır. Bizim örneğimizde iki metot için test yazılmıştır. Method coverage ise toplam dört metodun sadece iki tanesine test yazıldığından bu sınıfın method coverage yüzdesi %50 olacaktır.

Son olarak, line coverage’dan bahsedelim. Burada kastedilen satır kavramı, sınıftaki tüm satırlar anlamında değil tabii ki. İş mantığı olan tüm satırlardır. Aşağıdaki örneği dikkatlice inceleyim.

Biz bu yedi satırdan sadece dört tanesini kapsıyoruz.
— Bir metot için dahi test yazsak 1. satırı (test edilecek sınıfı) kullanacağımız için ilk kapsanan satır olacaktır.
— Sıfırdan farklı bir sayıya bölmeyi test ettiğimizden dolayı 2. ve 4. satırlar kapsamda, 3. satır ise kapsam dışı olacaktır.
— add ve subtract metotlarıyla ilgili test metodu olmadığından onlarda kapsam dışıdır.
— multiply metodu için de test yazıldığından dolayı 7. satırda kapsamda olacaktır.

Bu istatistiksel bilgileri birçok araç kullanarak kolayca elde edebilirsiniz. Örneğin, Intellij Idea kullananlar aşağıdaki fotoğrafta mavi ile işaretlenmiş butona basarak istatistikleri görüntüleyebilir.

Üstteki fotoğrafın yakından görünümü aşağıdaki gibidir.

Mavi ile işaretlenmiş butona basıldığında test coverage istatiklerini veren kısım açılır ve ilgili bilgiler görüntülenir.
Kırmızı ile işaretlenmiş kısımda ise az önce detaylı olarak anlattığımız servisin üç farklı kategoride test coverage yüzdeleri mevcuttur.
Yeşil ile işaretlenmiş butona tıklandığında ise html formatında rapor çıktısını verecektir.

IDE’de gösterilen bilgilerin aynısıdır. Herhangi bir sınıfa tıklandığında aşağıdaki gibi detaylı bilgiler görüntülenecektir.

Yeşil satırlar test kapsamında olanlar, kırmızı satırlar ise test kapsamına dahil edilememiş satırlardır.

Burada anlatmış olduğum servis sınıfına ek olarak kodlara iki sınıf daha ekledim. Konunun daha iyi anlaşılabilmesi için kodları incelemenizi tavsiye ederim.

Not: test çıktılarını incelemek isterseniz, ana dizin altındaki test-report klasörünü inceleyebilirsiniz.

Örneğin tamamına github adresimden ulaşabilirsiniz.

İyi günler,
Bol kodlamalar :)

--

--