Beyaz Kutu Testi
- İngilizcesi
- White-Box Testing
- Okunuşu
- vayt boks testing
Günlük kullanımda iki ad da yaygın.
Kısaca
Beyaz 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.
Beyaz kutu testi (white-box testing) nedir?
Kara kutu testi yazılımın şartnamenin söylediğini yapıp yapmadığını sorarken beyaz kutu testi kodun her parçasının çalıştırılıp çalıştırılmadığını ve doğru davranıp davranmadığını sorar. Test eden kişi gerçekleştirimi okur ve bir if'in her dalına giren, döngülerden sıfır, bir ve birçok kez geçen ve her hata yönetimi yolunu tetikleyen testler yazar.
Kapsama (coverage) ölçüleri işe yön verir. İfade kapsamı hangi satırların çalıştığını, dal kapsamı her koşulun hem doğru hem yanlış olup olmadığını, yol kapsamı da dal kombinasyonlarından geçilip geçilmediğini gösterir. Istanbul, coverage.py ve JaCoCo gibi araçlar bu sayıları raporlar; mutasyon testi de koddaki küçük, kasıtlı değişiklikleri testlerin fark edip etmediğini kontrol ederek bir adım daha ileri gider.
Beyaz kutu testlerinin çoğunu, kodu en iyi bildikleri için geliştiriciler birim ve entegrasyon testleriyle yapar. Özellikle karmaşık mantık, güvenlik kontrolleri ve bir zaman aşımından sonra yeniden deneme gibi nadiren girilen bir dalın production'da sessizce başarısız olabileceği kodlar için değerlidir.
Sık yapılan bir yanlış, tam kapsamanın kodun doğru olduğu anlamına geldiğini düşünmektir. Kapsama yalnızca satırların çalıştırıldığını kanıtlar, doğru sonuçların doğrulandığını değil; bir gereksinim hiç uygulanmadığı için tamamen eksik olan davranışı da ortaya çıkaramaz. Beyaz kutu testleri ayrıca gerçekleştirime bağlı olma eğilimindedir; bu yüzden kod yeniden düzenlendiğinde daha sık güncellenmeleri gerekir.
Önemli noktalar
- Beyaz kutu testi, testleri tasarlamak için kod bilgisini kullanır.
- Amaç ifadeleri, dalları ve yolları çalıştırmaktır.
- Kapsama araçları ve mutasyon testi ne kadar kapsamlı olduğunu ölçer.
- Çoğunu geliştiriciler birim ve entegrasyon testlerinde yapar.
- Yüksek kapsama doğruluğu kanıtlamaz ve eksik özellikleri yakalamaz.
Örnek
function shippingCost(total, country) {
if (total >= 100) return 0; // branch 1: free shipping
if (country === "TR") return 5; // branch 2: domestic
return 15; // branch 3: international
}
test("free above the threshold", () => expect(shippingCost(100, "DE")).toBe(0));
test("domestic rate", () => expect(shippingCost(99, "TR")).toBe(5));
test("international rate", () => expect(shippingCost(99, "DE")).toBe(15));
// npx jest --coverage → 100% branch coverage for shippingCostSık sorulan sorular
Beyaz kutu testini kim yapar?
Çoğunlukla geliştiriciler, çünkü kodu okuyup anlamayı gerektirir. Güvenlik test uzmanları da açıklar için kod incelerken onu kullanır.
Dal kapsamı (branch coverage) nedir?
Her if ifadesinin hem doğru hem yanlış tarafı gibi karar sonuçlarından testlerin çalıştırdığı yüzdedir. Düz satır kapsamından daha katı ve daha faydalıdır.
Gri kutu testi nedir?
İki yaklaşımın karışımıdır: testler kara kutu testleri gibi dışarıdan tasarlanır, ama olası sorunları hedeflemek için veritabanı şeması ya da mimari gibi iç yapı hakkında kısmi bir bilgiyle.
Sık karşılaştırılanlar
İlgili sayfalar
- Kara Kutu TestiTest ve Kalite, s. 13Kara kutu testi, yazılımı içindeki koda bakmadan ya da ona dayanmadan, yalnızca girdileri ve çıktıları üzerinden, yapması gereken şeye göre kontrol eder.
- Test KapsamıTest ve Kalite, s. 30Test 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.
- 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.
- Mutasyon TestiTest ve Kalite, s. 17Mutasyon testi, koda küçük kasıtlı hatalar ekleyip testlerin her birini yakalayarak başarısız olup olmadığına bakarak bir test takımının kalitesini ölçer.
- Statik AnalizTest ve Kalite, s. 26Statik analiz, hataları, güvenlik açıklarını ve kalite sorunlarını erken bulmak için kaynak kodun çalıştırılmadan otomatik olarak incelenmesidir.
- Entegrasyon TestiTest ve Kalite, s. 7Entegrasyon testi, kod, veritabanı ve API gibi bir sistemin birkaç parçasının birlikte doğru çalışıp çalışmadığını kontrol eden otomatik bir testtir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin