Plazma sayı 4, sayfa 68

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 68

Diyelim ki kapalı kutu testleriyle başladınız. Speklere baktınız ve görebildiğiniz sınır koşulları ve denklik sınıflarını kullanarak 50 tane test birimi hazırladınız. Sonra bu testlerin sağladığı kod kapsamasını ölçtünüz ve 65 çıktı. Ardından şeffaf kutu yaklaşımına geçtiniz. Uğranmayan kod dallarını tespit edip onların bir kısmına uğranmasını sağlayacak şekilde 10 tane daha test birimi eklediniz. Tekrar kapsamayı ölçtünüz ve çıktı. Biraz inceleyince neden bazı kod dallarına hiç uğramadığınızı gördünüz. Mesela şöyle kodlar var.

cSoldier oSoldier - new Soldier( kBlue ); if ( oSoldier NULL )( Std:tcout <& "bellek bitti" << std::endl; exit 1;

veya;

XYZLibraryError t oError - XYZlLibraryInit(); if ( oError !— XYZ NO ERROR )( std::cout << "XYZ kutuphanesini baslatamadim" ec exit 1;

bu tip if'lerin içine giremiyorsunuz, çünkü bazı ekstra hatalar olması gerekiyor. Sizin testlerinizde doğal olarak makinenizin belleği normal şartlarda bitmiyor ve XYZ kütüphanesi hep başarıyla başlayabiliyor.

Bu noktada mevcut kapsama değerleriyle yetinip daha fazla test birimi üretmeyebilirsiniz. Bu çoğu zaman mantıklı bir karardır. Bazı projelerde bundan fazlası gerekebilir. Mesela Aya İniş Modülünün yazılımını yazıyorsanız ve oradaki astronota "pardon ya bellek bitti ben çıkıyorum" diyemeyeceğiniz için, bu tip hata koşullarının da test edilmesi gerekebilir. İşte bu test yaklaşımına da "Hata Enjeksiyonu" deniyor.

Hata enjeksiyonu yapmak değişik şekillerde mümkün olabilir. Kütüphaneler yerine aynı arayüze sahip ve sizin istediğiniz hataları döndüren taklit fonksiyonlar (bunlara stub denir) yazabilirsiniz. Ya da test ettiğiniz sistemde bir takım harici araçlarla hata koşullarını yaratabilirsiniz.

Sonuç

Yazılım doğrulama alanı yazılım geliştirmeye göre daha yeni ve fazla çözülmemiş bir alandır. Fakat yine de yazılım geliştirme projelerinde kaliteyi ve ilerlemeyi ölçen önemli bir metrik sağlar. Yazılım doğrulamanın alt alanlarından kısaca bahsettiğimiz ve Test Birimi tasarlamanın temellerine giriş yaptığımız bu yazı umarız ileriki projelerinizde faydalı olur.

nightlord (at) nightnetwork (nokta) org

Yararlanılan Kaynaklar:

* Testing Computer Software 2nd Ed.; Kaner, Falk, Nguyen

How to Break Software: A Practical Guide to Testing; Whittaker

Ship it! A Practical Guide to Successful Software Projects; Richardson, Gwaltney

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