BÖLÜM 4: Beyaz Kutu Test Temelleri ve Statik Test Disiplini
4.1. Giriş ve Yaşamdan Metafor
İkinci el bir otomobil satın almak üzere sanayide bir oto ekspertiz merkezine gittiğini hayal et. Önünde aracın sağlığını ölçmek için tercih edebileceğin iki farklı yöntem ve iki farklı usta yaklaşımı vardır:
1. Yaklaşım: Dış Davranışı İnceleyen Ekspertiz (Kara Kutu / Black-Box)
İlk usta arabanın etrafında dolaşır. Kaportaya bakar, kapı kollarını çeker, klimayı açıp kapatır, direksiyonu çevirir ve gaza basıp egzoz dumanının rengini kontrol eder. Bu ustanın motor kapağını açıp pistonların aşınma payına, silindirlerin iç basıncına veya elektronik kontrol ünitesindeki (ECU) kablo bağlantılarına baktığı yoktur.
O sadece arabaya bir girdi verir (gaza basar) ve dışarıdan görünen tepkiyi (araba hızlanıyor mu?) ölçer. İşte bir önceki bölümde öğrendiğimiz Kara Kutu (Black-Box) test tam olarak budur: Sistemin iç yapısını, kodun nasıl yazıldığını görmeden yalnızca dış davranışını sorgularız.
2. Yaklaşım: İç Mekanizmayı İnceleyen Ekspertiz (Beyaz Kutu / White-Box)
İkinci usta ise arabayı dev bir hidrolik lifte kaldırır. Motor kapağını söker, silindirlerin içine küçük bir endoskopik kamera salar, şanzıman dişlilerinin temas açılarını kontrol eder ve multimetre cihazıyla her bir kablo hattından elektrik akımının geçip geçmediğini ölçer. Usta motorun iç yapısını apaçık görür.
Yazılım dünyasında bu yaklaşıma Beyaz Kutu (White-Box) ya da diğer adıyla Şeffaf / Cam Kutu (Glass-Box) test denir. Sistemin içine, yani doğrudan kaynak kodun kendisine bakarız. Kodun içindeki karar kavşaklarının (tren raylarındaki makaslar gibi: “Eğer bakiye yetersizse bu yola, yeterliyse diğer yola sap”) üzerinden bizzat geçerek test ederiz.
Peki Arabayı Hiç Çalıştırmadan, Kontağı Bile Çevirmeden Test Edebilir miyiz?
Bir an durup düşünelim: Bir arabayı test etmek için mutlaka motoru çalıştırmak, tekerlekleri döndürmek şart mıdır?
Araba fabrikada henüz tek bir parça sac bükülmeden önce ne yapılır? Başmühendisler toplanır, masaya motorun teknik çizim paftalarını serer. Çizim üzerindeki yağ kanallarının milimetrik ölçülerini cetvelle kontrol ederler. Eğer soğutma borusunun çizimindeki 2 milimetrelik bir daralmayı daha kağıt üzerindeyken fark edip düzeltirlerse; araba üretildikten sonra motorun hararet yapmasını ve şirketin yüz binlerce aracı servislere geri çağırmasını (recall) henüz sıfır maliyetle engellemiş olurlar.
İşte yazılım dünyasında kodu, gereksinim belgesini veya mimari tasarımı bilgisayarda hiç çalıştırmadan, sadece zihinsel incelemelerle, gözden geçirmelerle veya özel analiz araçlarıyla denetleme disiplinine Statik Test (Static Testing) denir.
Eğer sistemi bir test ortamında ayağa kaldırıp “Çalıştır” (Run) butonuna basarak test ediyorsak buna Dinamik Test; bilgisayara bile ihtiyaç duymadan dokümanı veya kaynak kod satırlarını okuyarak hataları avlıyorsak buna Statik Test deriz.
4. “Bir de Şöyle Düşün” (Kutu İçeriği)
💡 Bir de Şöyle Düşün: Röntgen Cihazı vs. Nabız Saymak
Bir doktora gittiğini hayal et:
Kara Kutu Test: Doktor göğsüne stetoskop koyar, “Derin nefes al” der. Ciğerlerinden gelen sesi dinler (Girdi: Nefes al, Çıktı: Akciğer sesi). İçeriyi görmez, sadece dışa vuran tepkiyi tartar.
Beyaz Kutu Test: Doktor eline ultrason veya endoskopi cihazını alır; doğrudan midenin, bağırsakların iç dokusuna canlı yayında bakar. İç yapıyı adım adım izler.
Statik Test: Doktor masaya oturur, senin kan tahlili raporunu veya genetik yatkınlık geçmişini okur. Seni koşturmaz, ameliyata almaz; sadece kağıt üzerindeki verileri ve raporları inceler.
Statik test, hastayı hiç yormadan teşhis koyma sanatıdır. Erken aşamada bir kağıdı incelemek, masada hasta kaybetmeyi engeller.
5. Mini Alıştırma
Senaryo: Yeni bir projeye başladın. Önünde iki farklı test görevi var:
-
Görev A: İş analistinin hazırladığı 20 sayfalık “Kredi Başvuru Akışı Taslağı”nı okuyarak eksik ve çelişkili maddeleri tespit etmek.
-
Görev B: Geliştiricinin test ortamına yüklediği web sitesini açıp giriş yap butonuna tıklayarak ana sayfanın gelip gelmediğini doğrulamak.
Soru: Bu iki görevden hangisi Statik Test, hangisi Dinamik Test kapsamına girer? Gerekçesini tek cümleyle açıkla.
Görev A bir Statik Test’tir; çünkü yazılım hiçbir sunucuda çalıştırılmamış, sistem koşturulmadan doğrudan yazılı bir iş ürünü (doküman) incelenmiştir.
Görev B bir Dinamik Test’tir; çünkü yazılım derlenmiş, ortama yüklenmiş ve çalışma zamanında (runtime) buton tetiklenerek sistem fiilen çalıştırılmıştır.