Herkese Merhaba,
Yazılım Test Süreci eğitimlerine yazılım test düzeyleri konusu ile devam ediyoruz. Yazılım test düzeyine giriş yaparak bu yazımızda Birim Testleri ve Entegrasyon Testlerini inceleyeceğiz. Yazılım test seviyeleri planlanan testlerin derinliklerinin hangi seviyede yapılacağı ile bağlantılıdır.
Yazılım Test Seviyeleri
Yazılım test seviyeleri yapmayı düşündüğümüz yukarıda da bahsettiğim gibi testlerin hangi derinlikte olduğu ile ilgilidir. Burada derinlikten bahsettiğimiz durum için örnek şu şekilde verebiliriz. Birim testi ya da birim entegrasyon testi seviyeleri ağırlıklı olarak kod düzeyindedir. Oluşturulan yazılan kod bloklarının gerekliliği, doğruluğu, netliği ve anlaşılırlığı gibi kriterler birim testi seviyesinde incelenirken diğer test seviyelerinde gereksinimlerin uygunluğu incelenir. Örneğin kabul testlerinde, kara kutu(blackbox) test tasarım teknikleri olarak da adlandırılan testler yapılarak proje ya da taleplerdeki gereksinimlerin uygunluğu, regülatif konulara uygunluğu gibi kriterler ele alınır. Bu gibi örneklerden de anlaşılacağı gibi farklı test seviyelerinde farklı testler yapılır.
Test seviyelerini aşağıdaki gibi sıralayabiliriz:
- Bileşen (Birim) Testleri
- Entegrasyon Testleri
- Sistem Testleri
- Kabul Testleri
Bu yazımızda test seviyeleri için ilk olarak Birim testi ve Entegrasyon test seviyelerine başlayalım.
Birim Testi
Birim testleri, test ekibine, testi yapan kişilere iletilmeden önce kod kapsamında geliştirilen ürünü, uygulamayı test eden geliştiriciler tarafından gerçekleştirilen testlerdir. Amaç, geliştirilen üründe çıkması muhtemel hataların önceden bulunup çözülmesidir. Bu test seviyesinde testler genelde yazılımcıların sorumluluğundadır. Birim testleri kod kapsamında olduğu için tek bir fonksiyon testide olabilir, sınıf ya da modül testlerini de içerebilir. Yapılacak testin kapsamı yine geliştiriciler tarafından belirlenir.
Birim testler gerçekleştirilirken;
Tek bir birim test edileceğinde diğer birimler etkilemeyecek şekilde düzenleme yapılmalıdır. Yani diğer birimlerin doğru olduğu kabul edilerek sadece bir birim, metot, fonksiyon test edilir. Burada devreye stub veya driver objeleri kullanılarak diğer birimlerle olan haberleşmeler gerçekleştirilir.
Testlerin kapsamı geliştiriciler tarafından belirleneceğinden yapılacak testler için test senaryoları oluşturulur ve bu takip edilerek test edilecek birim çalıştırılır. Gerçekleşen sonuçlar ile test senaryosunda beklenen sonuçlar karşılaştırılır. Test değerlendirmesi yapılır. Hata çıkmış ise test edilen birime ait kod için gözden geçirme işlemi yapılır, düzeltmeler gerçekleştirilir. Hata düzeltildikten sonra tekrar testi yapılır. Diğer birimler de işin içine katılmak istenirse birim entegrasyon testleri yapılır.
Birim testleri; fonksiyonel, fonksiyonel olmayan,yapısal testleri kapsayabilir ve test senaryoların da birim gereksinimleri, tasarımı esas alınarak oluşturulabilir. Testler yapılırken hata ayıklama araçları gibi geliştirilen ortam yardımıyla gerçekleştirilir. Testler sırasında saptanan hatalar genellikle kayıt altına alınmadan düzeltilip tekrar testi yapılabilir. Birim test seviyesinde, test driven development(test güdümlü geliştirme) yaklaşımı benimsenir yani kod yazmadan önce test senaryoları oluşturulur ve otomatikleştirilir.
Örnek birim testi uygulamasını aşağıda bulabilirsiniz.
Entegrasyon Testleri
Birden fazla birim, modül ya da sistemlerin birilikte çalışırken çıkması muhtemel hataların test edilmesi entegrasyon test seviyesinde yapılır. iki seviyede olabilen entegrasyon testleri birden fazla birimin olması halinde birim entegrasyonu testi, sistem olması halinde sistem entegrasyonu testi olarak adlandırabiliriz. Entegrasyon testleri ile birimler, bileşenler ya da sistemler arasındaki arayüzleri, işletim sistemi, donanım sistemi, dosyalama sistemi gibi sistemlere ait farklı bölümler, modüller arasındaki etkileşimleri, iletişimleri test edilir. Örneğin A sisteminde senaryo gereği oluşan bir değer, B sisteminde ilgili alanda girildiğinde çıkacak sonucun test edilmesi gibi.
Entegrasyon testleri ile; fonksiyonel olmayan özellikler, farklı birimlerin, bileşenlerin, sistemlerin iletişimi, tek bir birim olarak oluşturulmayan birimlerin testleri yapılır. Test senaryoları oluşturulurken yazılım gereksinimleri, yazılım ve sistem tasarımları, yazılım mimarisi, varsa iş akış diyagramları, referans alınır. Bu test seviyesinde alt sistemler , arayüzler, altyapı, sistem yapılandırması verileri, veritabanı test objeleri kullanılır. Bu test seviyesinde kara kutu test tekniği kullanılır. Testler yapılırken pozitif ve negatif senaryoları uygun test ön şartlarındaki parametreler kullanılır. Test sonucunda gerçekleşen sonuçlar ile test senaryolarındaki beklenen sonuçlar karşılaştırılarak test değerlendirmesi yapılır.
Entegrasyon test aşamalarının her birinde testi yapan kişiler sistemlerin fonksiyonelliğinden çok sistemlerin arasındaki etkileşime odaklanmalıdır. Örneğin A sistemi ile B sistemi entegre edilmiş ie bunların arasındaki iletişim test edilmelidir. Fonksiyonel olmayan özelliklerde (örneğin yük testi, performans testi gibi) entegrasyon testlerine dahil edilebilir.
Son olarak entegrasyon testleri için test uzmanlarının entegrasyon mimarisini anlayıp entegrasyon test stratejisini belirlemeleri uygun bir yaklaşım olabilir. Örneğin birimlerin ya da sistemler yapılmadan önce entegrasyon testleri planlaması yapılmış ise hataları erkenden saptamak için entegrasyon testleri aşamalı olarak yapılmasını sağlanabilir. Bu yazımızda Yazılım Test Seviyelerine giriş yapı Birim Testleri ve Entegrasyon Testleri incelemeye çalıştık. Sonraki yazımızda Sistem testleri ve Kabul testlerini ele alacağım.
21
Örnekler le anlatım çok değerli. Teşekkürler.