Black Box & White Box Testing

Aysel Bilici
4 min readJun 28, 2020

Merhabalar , bu platform üzerinden ilk yazımı sizlerle en yaygın kullanılan test tekniklerinden kara kutu ve beyaz kutu testleri üzerinden paylaşacağım. Konunun daha anlaşılabilir olması açısından c# dilinde yazdığım ufak bir örnek fonksiyon ile ilerleyeceğim. Yazmış olduğum fonksiyon her üniversitede kullanılan harf notu hesaplama sistemi. Harf notu hesaplama fonksiyonunu blackbox/whitebox test tekniklerini kullanarak test edeceğim.Testler sonucunda; bu test tekniklerinin kullanılabilirliği, avantajları ve dezavantajları gibi konularda sonuca varabileceğiz.Yazdığım fonksiyon sayısal olarak girilen notların harf notu karşılıklarını göreceğimiz harf notu hesaplama fonksiyonudur. Harf dönüşüm not aralıkları şu şekilde belirledim:

90–100:AA , 80–89:BA, 70–79:BB, 60–69:CB,53–59:CC,48–52:DC,

40–47:DD,30–39:FD,0–29:FF

Bu harf notlarının hesaplandığı fonksiyon:

Şimdi yazdığımız fonksiyonu test tekniklerimize göre inceleyelim.

Blackbox Test Tekniği
Blackbox test tekniğinden kısaca bahsetmek gerekirse; test edilen yazılımın davranışının uygulamanın kod yapısına, kodun implementasyonuna ve kodun nasıl işlediğine bakılmaksızın uygulanan test tekniğidir. Bu teknikte tamamen uygulamanın girdileri ile çıktılarına yoğunlaşılır ve uygulamanın çıktıları girdilerden nasıl elde ettiğine ilişkin durumlar göz ardı edilir.

Şimdi blackbox test tekniği ile girdiğimiz sayısal nota karşılık çıktı olarak beklediğimiz harf notlarını bir tablo ile oluşturalım.

Girdiğimiz sayısal not değerlerine karşılık beklediğimiz harf notu çıktıları tablodaki gibidir. Eğer 0–100 arası bir not girilmezse verilecek çıktı da bir uyarı mesajı şeklinde verilmiştir. Bu şekilde yazılımsal olarak bir bilgiye sahip olmadan girdi ve çıktı değerlerimizle koşullar sağlanıyor mu sağlanmıyor mu test etmiş oluyoruz. Girdiye karşılık beklenmedik bir çıktı alırsak testlerimizin başarısız olduğunu görmüş oluyoruz. Örnek olarak Beklenmeyen Çıktı kolonunda aldığımız değerler bize testler sonucunda uygulamamızın başarısız olduğu sonucunu verir.
Bu test tekniğinin bazı dezavantajları mevcuttur.Örneğin beklenmeyen bir çıktı aldığımızda uygulamanın yapısını bilmediğimiz için hatanın sebebini bulmak zordur.Bu koşullarda testlerin hazırlanması da zor olmaktadır. Sadece belirli sayıda girdi değeriyle testler yapılır. Tüm girdiler ile testlerin yapılması sonsuza kadar sürer.
Neden tercih ederiz noktasında avantajları hataların bulunması için hızlı bir şekilde yanıt verir. Testi gerçekleştirenlerin yazılımın ayrıntılarını bilmesine gerek yoktur. Testi gerçekleştiren kişilerle uygulamayı yazan kişiler birbirinden bağımsız çalışabilirler.
Whitebox Test Tekniği
Blackbox test tekniği ile incelemiş olduğumuz fonksiyonumuzu bir de whitebox tekniği ile ele alalım.Bu test tekniği kapsamında yazdığımız unit testler bize girdiğimiz değerlere karşılık beklediğimiz sonuçları alıp almadığımızı gösterecektir.Girilen değerler beklenen çıktılarla uyuşuyor ise testlerimiz passed(geçerli) olacaktır.Eğer uyuşmuyorsa failed(başarısız) olacaktır ve girilen değere karşılık beklediğimiz değer nedir görebileceğiz.
Whitebox test tekniğinden kısaca bahsetmek gerekirse ; kara kutu test tekniğinin aksine, tamamen kod yapısıyla ilgilenir. Projenin hem kaynak kodu hem de derlenmiş kodu test edilir. Bu testler, uygulama kodunun iç mantığı üzerindeki bilgiye bağlıdır.

Bu ekran görüntüsünde yazmış olduğumuz testlerin sonucunda fonksiyonumuzun girilen değerlere karşı beklenen çıktıları ürettiğini görmekteyiz. Testlerimiz başarılı sonuçlanmıştır.

Bir de girdiğimiz yanlış değere karşılık fonksiyonumuzda beklediğimiz değerle uyuşmamasından ötürü testimizin başarısız sonuçlandığı case’i inceleyelim.

Fonksiyonumuza gönderdiğimiz sayısal değerler ile beklenen değere girdiğimiz sonuçlar eşit olmadığı için testimiz başarısız olmuştur. Çıktı da belirtilen mesajda da görüldüğü gibi 67 notuna karşılık çıktı:CB olması gerekirken yolladığımız BB değerinin eşit olmadığını görmekteyiz. Farklı değerler için uygulamamızın verilen koşulları sağlayıp sağlamadığını bu şekilde test edebiliriz. Girdiğim bazı değerlere karşılık test sonuçlarımı aşağıdaki tabloda görebiliriz.

Whitebox test tekniğinin avantajları arasında; yazdığımız kodu en iyi şekilde optimize etmemizi sağlar. Direk uygulamanın yapısına müdahale edildiği için hatalara daha hızlı çözüm üretilebilir. Tek seferde görülmeyen hatalarımızı fark etmemizi sağlar. Blackbox test tekniğine kıyasla dezavantajı olarak tamamen koda bağlı olarak test yapıldığı için daha zor bir test sürecine sahip olabilir ve belirli özelliklere bağlı olarak test yaptığımız için maliyet artabilir.

Bu test teknikleriyle ilgili anlatacaklarımı örnek üzerinden açıklayıcı bir şekilde iletmeye çalıştım. Umarım faydalı bir paylaşım olur.Farklı konularda yeni yazılarda görüşmek dileğiyle :)

--

--