Test otomasyonu tamamlandığında çoğu ekip “senaryolarımız hazır, artık her şey test ediliyor” diye düşünür. Ancak gerçekte işler o kadar basit değildir. Otomasyonun tamamlanması, test kapsamının gerçekten yeterli olduğu anlamına gelmez. İşte burada devreye kod kapsamı (code coverage) ölçümü girer.
Kod kapsamı, testlerin uygulama kodunun ne kadarını çalıştırdığını gösterir ve genellikle otomasyonun “etkinlik seviyesi” hakkında objektif bir bakış sunar. Bu yazıda, testin kapsamını doğru belirlemek ve otomasyon sonrası coverage ölçümüyle süreci sürekli iyileştirmek için izlenmesi gereken adımları ve best practice’leri anlatmaya çalışacağım.
🔍 1. Test Kapsamı mı, Kod Kapsamı mı? Farkı Bilmek
Öncelikle bu iki kavram sıkça karıştırılır:
- Test Kapsamı (Test Coverage): Test senaryolarının gereksinimleri, kullanıcı hikayelerini veya iş kurallarını ne ölçüde test ettiğini gösterir.
- Kod Kapsamı (Code Coverage): Testlerin uygulama kodundaki satır, yöntem veya sınıfların ne kadarını çalıştırdığını ölçer.
İyi bir test süreci bu iki kapsama da odaklanmalıdır. Gereksinim bazlı test kapsamı “doğru şeyi test ediyor muyuz?” sorusuna yanıt verirken, kod kapsamı “yeterince test ediyor muyuz?” sorusuna cevap verir.
🧩 2. Otomasyon Sonrası Coverage Ölçümü Neden Gerekli?
Robot Framework, Selenium, Appium veya API testleriyle otomasyon oluşturduktan sonra bile, testlerin gerçekten kodun hangi bölümlerine dokunduğunu bilemeyiz.
Bu nedenle otomasyon sonrası code coverage ölçümü, geliştirme ekibiyle test ekibi arasında bir köprü işlevi görür.
Örneğin:
- Backend testlerinde JaCoCo ile ölçüm yaparak hangi servis metodlarının testlerle tetiklendiğini görebilirsin.
- Mobil uygulamalarda JaCoCo ile instrumented test coverage ölçümü yapılabilir.
Bu ölçümden sonra:
- Kodun test edilmemiş bölgeleri belirlenir.
- Yeni test senaryoları planlanır.
- Otomasyonun “gerçek değeri” objektif olarak görülür.
⚙️ 3. JaCoCo ile Kod Kapsamı Ölçümü (Backend Örneği)
Java tabanlı sistemlerde en çok tercih edilen araçlardan biri JaCoCo’dur.
Otomasyon testlerinizi (örneğin Robot Framework’ten REST API çağrıları yapan testler) çalıştırdıktan sonra, uygulamanın çalıştığı ortamda JaCoCo agent eklenir.
Bu agent, testlerin çağırdığı kod bölümlerini izler ve sonunda .exec veya .ec dosyası üretir.
Sonrasında bu dosya:
- IntelliJ, Eclipse gibi IDE’lerde,
- ya da SonarQube, Jenkins vb. araçlarda raporlanabilir.
Örnek bir çalışma akışı:
jacoco-agent.jaruygulama JVM’ine eklenir.- Otomasyon testleri API’leri çağırır.
- Testler tamamlandığında
.execdosyası oluşur. jacoco:reporthedefiyle HTML veya XML rapor alınır.- SonarQube üzerinden coverage sonuçları analiz edilir.
📈 4. Coverage Sonuçlarını Yorumlamak
Kod kapsamı raporuna baktığında genellikle şu metrikleri görürsün:
- Instruction coverage – kodun çalıştırılan talimat yüzdesi
- Branch coverage – koşulların (if-else, switch-case) ne kadar test edildiği
- Method/Class coverage – hangi metotların veya sınıfların test edildiği
👉 %100 coverage her zaman mümkün değildir (ve bazen gerekli de değildir).
Önemli olan kritik akışların, iş kurallarının ve hata senaryolarının kapsandığından emin olmaktır.
Örneğin:
- Happy path zaten test ediliyorsa, negative testlerle exception durumlarını da kapsa.
- Az kullanılan branch’lerde (örneğin özel hata durumları) testlerin devreye girmesini sağla.
🧠 5. Kodda Girmediğimiz Yerleri Test Senaryosuna Dahil Etmek
Kapsanmayan kod alanları, genellikle yeni test fırsatlarıdır.
JaCoCo raporundaki “kırmızı alanlar” şunları işaret eder:
- Eksik test senaryosu
- Yanlış test verisi
- Mock’lanmış ama gerçek akışa ulaşmayan kod parçaları
Bu alanları tespit ettikten sonra şu adımları izle:
- Kapsanmayan metotları listele.
- İlgili iş kuralını belirle. (Belki o kod bir edge case için yazılmıştır.)
- Yeni test senaryosu tasarla.
- Robot Framework senaryosunu güncelle.
- Coverage ölçümünü yeniden al.
Bu döngü sayesinde test otomasyonun sürekli iyileşir.
💡 6. Best Practice’ler
- ✅ Kapsam hedefi belirle: Örneğin, “backend servisleri için %80 branch coverage” gibi ölçülebilir bir hedef koy.
- ✅ Otomasyona entegre et: Jenkins veya GitLab CI’da test koşumundan sonra coverage raporunu otomatik üret.
- ✅ Görselleştir: SonarQube ile coverage trendini takip et.
- ✅ Değerlendirme toplantıları yap: Her sprint sonunda düşük coverage alanlarını geliştirici ve test ekibi birlikte gözden geçirsin.
- ✅ Kodun test edilebilirliğini artır: Çok karmaşık metotları refactor et, böylece test edilebilir hale gelir.
🚀 7. Sonuç: Ölçmezsen Geliştiremezsin
Test otomasyonu yapmak, yazılım kalitesinin temel taşlarından biridir; ancak ölçüm olmadan iyileştirme yapılamaz.
Kod kapsamı ölçümü, test ekibine yalnızca testlerin ne kadar çalıştığını değil, nerede eksik olduklarını da gösterir.
Unutma:
Gerçek test başarısı, sadece çalıştırılan test sayısında değil, dokunulan kodun derinliğinde gizlidir.


Leave a comment