Kara kutu testleri; kodun yapısı(structure), tasarımı(design) ve uygulanışı(implementation) ile ilgilenmez. Kara kutu testlerinde girdi ve çıktı değişimine göre sistemin nasıl çalıştığı test edilir. Kara kutu test çeşitleri çoğu yazılım test uzmanı tarafından yaygın olarak kullanılan test çeşitleridir. Kara kutu test çeşitlerine gelmeden önce bu yazımda “Kara Kutu Test Teknikleri” konusundan bahsetmek istiyorum.

Kara Kutu Test Teknikleri

1)Eşit Bölümlere Ayırma Tekniği (Equivalence Partitioning)

Bu teknikle test ederken, sistemde aynı şekilde davranan ve aynı sonucu veren girdiler bölümlenir. Bu bölümlerden alınan birer örnek girdilerle sistem test edilir. Bu teknikte amaç test case sayısını azaltmaktır.

Örnekle açıklayacak olursak; Sadece -100 ile +100 arasındaki tam sayıları kabul eden bir girdi alanı test ettiğimizi düşünelim. Bu test tekniğine göre;

-78 , -50 , -23 vb. -100’den büyük bütün negatif tam sayılar aynı sonucu verecektir.

Aynı şekilde 100’den küçük bütün pozitif tam sayılar da aynı sonucu verecektir.

Bu örnek için 0 rakamı da özel bir durumdur, sistemden emin olmak için 0 durumunu da test etmek iyi olacaktır

Bu sebeple; bu teknikle bu sistemi test etmek için -100’den büyük 1 negatif tam sayı, 100’den küçük 1 tam pozitif sayı ve 0 yeterlidir. Test case sayısı bu teknikte 3’tür.

2)Sınır Değerleri Analizi (Boundary Value Analysis)

Çoğu sistemde uç noktalar daha fazla risk içermektedir. Bu teknikte sınır noktalarından örnekler kullanılarak sistem test edilir. Bu sayede sınır noktalarında oluşabilecek hataların önüne geçilir.

Yukarıdaki örnekle açıklayacak olursak; verdiğim örneğe göre bu teknik kullanılarak test edileceğinde test case sayımız -101 , -100 , -99 , -1, 0 , +1, +99 , +100 , +101 olmak üzere 9 olacaktır.

3)Karar Tablosu (Decision Table)

Bu teknikte test senaryoları, girdi ve nedenlerin tablolaştırılmasıyla oluşur. Karışık sistemlerin testinde genellikle bu yöntem kullanılır.

Yine bir örnekle açıklayalım;

Senaryo: Otobüs bileti belirleme uygulaması için

-Sabah 10’dan sonra seyahat edecekler indirimli, 10’dan önce edecekler tam bilet fiyatı ödeyecektir.

-Yaşı 60 ve üzeri olanlar için bu fiyatlar üzerinden %20 iskonto uygulanacaktır.

Bu senaryoda 2 Durum vardır:

-Seyahat saati 10’dan önce mi? sonra mı? Evet/Hayır 2 cevap

-Yolcunu yaşı 60 ve üzeri mi? Evet/Hayır 2 cevap

Toplam 2 koşul olduğu için burada test case sayımız da 2^N(Koşul Sayısı) formülünden 4 olacaktır.

Bu senaryoda 4 Eylem vardır:

-Tam Bilet

-İndirimli Bilet

-%20 İskontolu Tam Bilet

-%20 İskontolu İndirimli Bilet

Bu senaryo için Karar Tablosu görseldeki gibi olacaktır ve test senaryoları bu tabloya göre yürütülecektir.

Karar Tablosu

4) Durum Geçiş Tablosu (State Transition Table)

Bu yöntem, geçerli tüm geçişleri ve geçersiz olan geçişleri gösterir. Genellikle, birbirine dönüşen durumlar olarak tanımlanan sistemlerde kullanılır.

Herhangi bir sitenin ödeme sistemini düşünelim, bir ürün almak istediğinizde önce ‘Sepete Ekle’ işlemini gerçekleştirmeniz gerekiyordur. Daha sonra sepete gidip ödeme işlemine başlamanız ve ödemeyi de 3 dakika içinde yapmanız beklenmektedir. 3 dakika içinde ödeme yapmanız durumunda kargo şirketi seçim ekranına geçebilirsiniz ve son olarak siparişi tamamlayabilirsiniz. Bu senaryoda durumlar birbirini takip edecek şekildedir. Herhangi bir adımı atladığınızda sipariş işlemini gerçekleştiremezsiniz. Bu noktada durum geçiş diyagramı oluşturarak test senaryolarınızı oluşturabilirsiniz.

5) Kullanım Durumları Testi (Use Case Testing)

Aktörlerden, adımlardan, durumlardan ve çıktılardan oluşan bu teknik kullanıcı tabanlı olduğu için gerçek kullanıcı davranışlarını simüle etmek açısından en iyi yöntemlerden biridir. Test caseler daha kolay tanımlanabilir. Doğru bir akış tanımlandığında, kullanıcının bütün davranışları ve sistemin vereceği çıktılar test edilmiş olur.

Beyaz Kutu (White Box) Testi

Beyaz kutu testinde, kodun içine girilerek kodun doğruluğu ve kalitesi test edilir. Bu test türünde kod erişimi zorunludur. Kod yapısı ve tasarımına yönelik testler gerçekleştirilir. Örneğin, gereksiz bir kod bloğu tespit edilebilir veya kodun okunulabilirliğini arttırmaya yönelik durumlar tespit edilebilir. Kodda erken bulunacak hatalar Kara Kutu(Black Box) testlerini de kolaylaştırmaktadır. Beyaz kutu testleri çoğunlukla geliştiriciler tarafından yapıldığı gibi test uzmanları tarafından da uygulanabilir.

Yaygın kullanılan bazı Beyaz Kutu test teknikleri:

1)Statement Coverage: Bu teknik, koddaki her olası durumun en az bir kere test edilmesidir. 2)Branch Coverage: Bu teknik, bir yazılım uygulamasının olası tüm yollarını(if-else ve diğer koşullu döngüler gibi) kontrol etmeye yöneliktir.