Test Kapsamı
- İngilizcesi
- Test Coverage
- Türkçe karşılığı
- kod kapsamı
- Okunuşu
- test kavıric
Günlük kullanımda iki ad da yaygın.
Kısaca
Test kapsamı, otomatik testler çalışırken bir programın kaynak kodunun ne kadarının yürütüldüğünü ölçen ve genellikle yüzde olarak gösterilen bir metriktir.
Test kapsamı nedir?
Çoğunlukla kod kapsamı olarak da adlandırılan test kapsamı, test takımı çalışırken kodunuzun hangi bölümlerinin çalıştığını, hangilerinin çalışmadığını söyler. Bir kapsam aracı %82 gibi bir yüzde raporlar ve boşlukları bir bakışta fark edebilmeniz için genellikle kapsanmayan satırları vurgular.
Kapsam araçları kodu enstrümante eder; yani testler çalışırken yürütülen her satırı, dalı ve fonksiyonu kaydeden gizli sayaçlar ekler. Satır kapsamı çalıştırılan satırları sayar, dal kapsamı her if ifadesinin her iki tarafının da izlenip izlenmediğini kontrol eder, fonksiyon kapsamı ise en az bir kez çağrılan fonksiyonları sayar. Dal kapsamı satır kapsamından daha katıdır ve çoğu zaman test edilmemiş uç durumları ortaya çıkarır.
Kapsamı, bir güvenlik görevlisinin dolaştığı odaların haritası gibi düşünün: nereye gittiğini gösterir, ama dikkatle bakıp bakmadığını göstermez. Ekipler kapsam raporlarını pull request'lerde ve CI/CD hatlarında gösterir; bazıları kapsam %80 gibi bir eşiğin altına düşerse derlemeyi başarısız sayar.
Yaygın bir yanlış anlama, yüksek kapsamın kodun iyi test edildiği anlamına geldiğidir. Kapsam yalnızca kodun çalıştığını kanıtlar; testlerin doğru sonuçları kontrol ettiğini kanıtlamaz, hiç doğrulama (assertion) içermeyen bir test bile %100'e ulaşabilir. Kapsamı kendi başına bir hedef olarak değil, test edilmemiş alanları bulmak için kullanın.
Önemli noktalar
- Kapsam, testler sırasında hangi kodun çalıştığını gösterir ve genellikle yüzde olarak ifade edilir.
- Yaygın türleri satır, dal ve fonksiyon kapsamıdır.
- Dal kapsamı daha katıdır ve test edilmemiş koşulları yakalar.
- Yüksek kapsam, iyi testleri ya da hatasız kodu garanti etmez.
Örnek
function discount(price, isMember) {
let total = price;
if (isMember) total = price * 0.9;
return total;
}
// Test 1 runs every line above: 100% line coverage.
assert.equal(discount(100, true), 90);
// But the "not a member" branch never ran: only 50% branch coverage.
// Test 2 covers it and brings branch coverage to 100%.
assert.equal(discount(100, false), 100);Sık sorulan sorular
İyi bir test kapsamı yüzdesi nedir?
Pek çok ekip yaklaşık yüzde 70 ile 90 arasını hedefler, ancak herkes için geçerli bir sayı yoktur. Kritik iş mantığını kapsamlı biçimde kapsamak belirli bir rakama ulaşmaktan daha önemlidir ve yüzde 100'ün peşinden koşmak çoğu zaman düşük değerli testlere yol açar.
Kod kapsamı ile test kapsamı aynı şey midir?
Gündelik kullanımda evet: ikisi de genellikle testler tarafından yürütülen kodun yüzdesini ifade eder. Bazıları test kapsamını daha geniş anlamda, yalnızca kod satırlarını değil kaç gereksinimin ya da özelliğin test edildiğini anlatmak için kullanır.
İlgili sayfalar
- Birim TestiTest ve Kalite, s. 4Birim testi, bir fonksiyonun, metodun ya da sınıfın programın geri kalanından yalıtılmış olarak doğru davrandığını doğrulayan küçük ve otomatik bir kontroldür.
- Test Odaklı GeliştirmeTest ve Kalite, s. 31Test odaklı geliştirme, önce başarısız bir test yazdığınız, sonra onu geçirecek kadar kod yazıp ardından tasarımı temizlediğiniz bir kodlama pratiğidir.
- Regresyon TestiTest ve Kalite, s. 21Regresyon testi, daha önce çalışan özelliklerin bozulmadığından emin olmak için bir kod değişikliğinden sonra mevcut testleri yeniden çalıştırma pratiğidir.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- Code ReviewSürüm Kontrolü, s. 4Code review, kod değişikliklerinin birleştirilmeden önce başka geliştiricilerce incelenmesidir; hataları yakalar, kaliteyi artırır, bilgi paylaşımını sağlar.
- Beyaz Kutu TestiTest ve Kalite, s. 3Beyaz kutu testi, testleri kodun iç yapısına dair bilgiyle tasarlar; böylece kodun ifadeleri, dalları ve yolları doğrudan çalıştırılıp kontrol edilir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin