Plazma sayı 4, sayfa 66

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 66

Yazılım Doğrulama Birimleri: Test Birimleri

Buraya kadar anlattığımız bütün test türlerinde genellikle testler küçük veri gruplarından oluşur. Bir seferde programa verilecek veriler ve programın vermesini beklediğimiz cevap bir "Test Birimi"ni oluşturur.

Örneğin elinizde toplama yapan bir program var. Bu programa iki sayı veriyorsunuz ve o da toplamını döndürüyor. Bu programa 3 ve 5 verip cevap olarak 8 beklemek bir test birimidir.

İyi test birimleri tasarlamak çok önemli bir yetidir. Her programın veya kütüphanenin test birim tasarımı farklı olacaktır. Fakat test birimleri tasarlarken dikkat edilecek bazı ortak noktalar var. Bunlara değinelim.

Kapalı

kutu test tasarımı

Kapalı kutu test tasarımı yaparken bildiğiniz (veya bildiğinizi varsaydığınız) tek şey test ettiğiniz yazılımın spekidir. Spekin parçası olarak programla nasıl etkileşileceği (yani arayüz) açıklanmıştır. Mesela daha önce değindiğimiz toplama örneğini ele alalım.

Toplama yazılımı: Bu yazılım iki adet iki basamaklı pozitif sayıyı girdi olarak alır, bu sayıların toplamını çıktı olarak döndürür. Eğer hatalı bir girdi verilirse sonuç -1 olarak döndürülür.

Bu örnekte bahsettiğimiz yazılım bir GUI programı da olabilir, bir konsol programı da, ya da bir API'nin parçası olan bir fonksiyon da olabilir. Biz burada bunu önemsemiyoruz. Yani girdileri, GUI veya konsola mı veriyoruz, yoksa bir fonksiyona argüman olarak mı geçiriyoruz, buna şimdi dikkat etmeyeceğiz. Biz daha çok test birimini belirlemeye çalışacağız. Yani bu yazılımı hangi sayı çiftleri ile test edeceğimizi tartışacağız.

Sınır Koşulları

Bir programa verilen olası girdi değerlerinin tümünü deneyebilseydik programla ilgili kendimizi çok güvende hissedebilirdik. Fakat bu genellikle imkansızdır. Bu yüzden bir Test Birimi tasarlarken mutlaka girdilerin alabileceği hangi değerlerin kritik olduğuna ve olası hataları ortaya çıkarabileceğine bakarız.

Genel olarak programlar kabul ettikleri girdiler ile ilgili bazı sınırlar belirtirler. Bu sınırların dışında kalan değerlerin kabul edilmediğini veya bir sınırın üstünde ve altında değerler için farklı işlemler yapıldığını belirtebilirler.

Genellikle pek çok hata bu sınırlar ve onların hemen yakınında olur. Mesela örnek programımızda verilen sayıların iki basamaklı pozitif sayılar olması bekleniyor. Programın içinde sayının üst sınırının kontrol edildiğini düşünelim. Bu kontrolü yapan kod şöyle bir şey olabilir.

1f (

( Verilen Sayi < 99 )

veya belki de şöyledir:

( Verilen Sayi >- 100 )

ya da böyle:

( Verilen Sayı < 100 )

Dikkat ederseniz buradaki karşılaştırma koşulu bir olası hata noktası. Verdiğimiz ilk iki kod hatalı. İlki geçerli bir girdi olan 99 değerini reddedecek. İkincisi ise geçersiz bir girdi olan 100 değerini kabul edecek.

Böyle problemlere çok sık rastlandığı için genelde sınır değerleri yakınında ve üzerinde değerler içeren test birimleri hazırlamak mantıklıdır. Örneğin;

. . 0,5 . 1,5 . 98,5 . 99,5 100,5 . 12,-1 . 12,0 . 12,1 . 12,98 . 12,99 12,100

Bu 12 test birimi ile sınır koşullarını her iki girdi için de test etmiş oluyoruz. Eğer bütün olasılıkları test edecek olsaydık 100 x 100 toplam 10000 test birimi hazırlamak gerekirdi. Burada sadece 12 test birimi ile 10000 birimlik testimize çok yakın bir güven elde edebiliriz (Bu güveni nasıl nümerik olarak ölçebiliriz birazdan göreceğiz)

Klavyeyle gezinmek için ← ve → tuşları.