Yazılım Test Tasarım Teknikleri: Kara Kutu ve Beyaz Kutu Testleri Nedir?
Yazılım test tasarım tekniklerini Kara Kutu ve Beyaz Kutu testleri olarak iki başlıkta ele alabiliriz. Bu blogda test tasarım tekniklerinin avantajları, dezavantajları ve nasıl gerçekleştirildiğini özetleyerek alt kategorilerini derledik.
Kara Kutu Testleri Nedir?
Yazılım test tasarım tekniklerinden Kara Kutu Testi; sistemin, yazılımın iç yapısı hakkında bilgi sahibi olunmadan yani koda bakılmadan sistemin işlevselliğini ölçmeye yarayan test tekniğidir. İlgili sistemi bir kara kutu gibi görüp aslında içerisindeki mimari yapı veya kaynak kod hakkında bilgi sahibi olmadan uygulanabilir. Kara kutu testlerindeki amaç, gereksinimleri karşılayan çıktıların alınıp alınmadığını ölçümlemektir. Sistemden almayı beklediğimiz çıktılar kadar beklemediğimiz çıktılar da test edilmelidir.
Bu test tasarım tekniği, test uzmanlarının sıklıkla kullandığı bir yöntemdir. Kara kutu testi; birim, entegrasyon, sistem ve kullanıcı kabul testi gibi testlerin her seviyesinde kullanılabilir. Kara kutu test tekniğinin avantajları olduğu gibi dezavantajları da mevcuttur. Gelin avantajları ve dezavantajları inceleyelim.
Kara Kutu Testlerinin Avantajları:
- Test uzmanları tarafından yapıldığı için kod bilgisine ihtiyaç duyulmaz.
- Kodu geliştiren kişi ve test eden kişi farklı olduğu için farklı bakış açılarıyla test edilebilir ve görünmeyen hatalar bile kolaylıkla bulunabilir.
- Testler hızlı ve etkin bir biçimde uygulanabilir.
- Gereksinimlerin belirlenmesinin hemen ardından test senaryoları oluşturulabilir.
- Büyük ölçekli sistemlerde bu yöntem kullanıldığında oldukça yüksek verim alınır.
Kara Kutu Testlerinin Dezavantajları
- Sistemin iç yapısı bilinmediği için kaynak kod içerisinde kümelenmiş hataların bulunması zorlaşır.
- Halihazırda geliştiricinin kendi yaptığı testler ile tekrara düşülebilir.
- Karmaşık kod blokları içeren yazılımlarda kullanılamaz.
- Bütün olasılıkları kontrol etmek mümkün değildir bu sebeple test edilmemiş fonksiyonlar olabilir.
7 Farklı Kara Kutu Test Tekniği
1. Equivalence Partitioning Design
Denklik paylarına ayırma test tekniği de denebilir. En basit tanımıyla aynı özelliği gösteren test koşullarının gruplandırılması ve belirlenen grupların her birinden seçilen kısıtlı veri seti ile uygulamaların test edilmesidir.
2. Boundary Value Technique Design
Sınır değer tekniğidir. Yazılımda hataları bulmak için yazılımdaki tek noktaya odaklanmak yerine değişkenin alt ve üst sınırlarını kontrol ederek yapılan testlerdir. Yapılan yazılımların sınır değerlerinde hata çıkma olasılığının ufak farkla fazla olması sebebiyle kullanılır.
3. Decision Table Test Design
Karar tablosu test tekniğidir. Gereksinimleri belirlenmiş çok koşullu karmaşık yazılımlar için kullanılır. İş kuralları bir tablo üzerine yazılıp girdiler için alınabilecek değerler ve hangi girdi için hangi çıktının alınabileceği bu tabloda gösterilir. Görülebilecek bütün test senaryoları bu tabloya yazılır.
4. Classification Tree Test Design
Sınıflandırma ağacı test tasarımı tekniğidir. Test için kullanılan nesnenin hiyerarşik olarak denklik paylarının bir ağaç görünümünde modelleyerek bu payların birbirleriyle olan ilişkileri üzerinden test senaryoları üreten bir tekniktir.
5. Pairwise Test Design Technique
İkili test tasarım tekniğidir. Testi yapılan yazılımın fonksiyonunun birden fazla kombinasyona sahip olduğu durumlarda test senaryo sayısını önemli ölçüde azaltmaya yarayan test tekniğidir. Bir girdi girilip, bir çıktı alınan senaryolardan ziyade iki girdi girilip hata bulunabilirliğini arttırmaktadır. Bu teknik zamandan önemli ölçüde kazanç sağlamaktadır.
6. State Transition Test Design Technique
Durum geçişi test tasarımı tekniğidir. Yazılımın geçmişteki ve şu anki durumları değerlendirilerek yapılır. Durumlar arası geçişler test edilir. Başarılı sonlanan geçişler ve başarısız geçişler bir diyagram haline getirilir. Genellikle gömülü veya elektro-mekanik sistemler üzerinde kullanılan bir tekniktir.
7. Use Case Test Design Technique
Bu teknikte fonksiyonel olan ve fonksiyonel olmayan gereksinimler kullanılarak test senaryosu üretilir. Bu teknikteki en önemli özellik senaryoların açık ve detaylı olmasıdır. Temel olarak test yöntemi bir kullanıcı ve bu kullanıcının sistemden beklediği durumların oluşup oluşmadığını ölçümler.
Beyaz Kutu Testi Nedir?
Yazılım test tasarım tekniklerinden Beyaz Kutu Testi, şeffaf kutu testi de denebilir. Tıpkı ismi gibi beyaz bir kutu içerisinden bakılarak yazılımın kodunun iç yapısının bilinerek, ölçümlenerek test senaryolarının tasarlandığı tekniktir. Bu yöntemdeki ana amaç kod parçacıklarının tek tek test edilerek aslında en küçük parçacık halinde bile sağlıklı bir şekilde çalıştırılabildiğinin görülmesidir. Gereksinimler sonucu belirlenen girdilerin kodun bir parçasındaki çıktıları karşılayıp karşılamadığı test edilir. Yazılımın işlevselliği test edilmez.
Yazılım test uzmanları tarafından da kullanıldığı gibi çoğunlukla yazılım geliştiriciler tarafından kullanılır. Bu yöntem birim, entegrasyon ve sistem testi seviyelerinde kullanılır. Beyaz kutu test tekniğinin avantajları ve dezavantajlarını incelediğimizde;
Beyaz Kutu Testlerinin Avantajları
- Testler, yazılım geliştirilirken tasarlanıp yapıldığı için erken sürelerde müdahale edilebilmektedir.
- Geliştiriciler kendi kod parçacıklarını defalarca gözden geçirdikleri için kodun güvenilirliği yüksektir.
- Kod optimizasyonu fazladır.
Beyaz Kutu Testlerinin Dezavantajları
- Kod okumayı bilen nitelikli bir yazılım test uzmanı bulmak zor ve maliyetlidir.
- Geliştirici kendi testini kendi yaptığı için gözden kaçabilen noktalar olabilir.
- Testler çok kapsamlı ve ayrıntılı olduğu için uzun zaman alabilmektedir.
2 Farklı Beyaz Kutu Test Tasarım Tekniği
1. Komut Test Tasarım Tekniği
Komut kodda direkt olarak gerçekleşmesini istediğimiz bir işleve denir. Int y=5 bir komuttur. Komut test tasarımı ise yazılım içerisinde yer alan bütün komutların üzerinden en az bir kez geçerek hepsinin test edilmesiyle sağlanır.
2. Karar Test Tasarım Tekniği
Karar kapsamı kodumuzun içerisindeki if else, while, switch gibi birden fazla sonuç oluşturabilecek karar noktalarıdır. Bu test tasarım tekniğinde karar noktalarından her bir koşul üzerinden bir kez geçildiği durumlar değerlendirilir. Karar noktalarının üzerinden mutlaka geçilmesi gerekmektedir.