Yazılım Test Seviyeleri

Metehan Özer
Nettsi Bilişim Teknoloji A.Ş.
4 min readAug 20, 2020

Merhaba, yazılım testi konusunda temel bilgiye sahip olmak için yazılım test seviyelerini de öğrenmek gerekiyor. Bu amaçla küçük bir yazı hazırladım. Umarım faydalı olur.

Yazılım geliştirme yaşam döngülerinden (SDLC) biri olan V modeli ile yazılım geliştirirken daha çok önemini kavradığımız yazılım test seviyeleri aşağıdaki gibi 4 seviyeden oluşur.

  • Bileşen Testi (Component Testing)
  • Entegrasyon Testi (Integration Testing)
  • Sistem Testi (System Testing)
  • Kabul Testi (Acceptance Testing)
V-model ile yazılım geliştirme yaşam döngüsü

Yazılım test seviyeleri yukarıdaki resimde de görüldüğü gibi en alt seviye olan bileşen seviyesinden başlar en üst seviye olan kabul seviyesine doğru gider ve bu sıralama ürünü geliştirme zamanı ile (bazı açıdan) paralellik gösterir. Yani geliştirmenin ilk zamanlarında bileşen ve entegrasyon seviyesinde testler başlar. Sistem ve kabul seviyelerindeki testler ise artık geliştirme işinin son zamanlarında koşulur. Fakat bileşen ve entegrasyon seviyesindeki testler, yazılım geliştirme süreci devam ettiği müddetçe devam eder.

Yine yeri gelmişken belirtmekte fayda var. Maliyet açısından, bileşen seviyesinde fark edilen ve düzeltilen bir hata ile kullanıcı kabul seviyesinde farkedilip düzeltilen hata arasından çok büyük maliyet farkı var. Yazılım test seviyesi yükseldikçe hata düzeltme maliyeti artar. Bu yüzden hataların mümkün olan en alt seviyelerde çözülmesi çok önemlidir.

Hata Düzeltme Maliyeti

Bileşen (Birim) Seviyesi:

İlk test seviyesidir. Kodun kendi başına anlamlı olduğu en küçük parçası için yapılan testler bu seviyedeki testlerdir. Örneğin kod review bileşen seviyesinde yapılan bir test türüdür. Aynı şekilde çeşitli araçlar kullanılarak yapılan statik kod analizi de bileşen seviyesinde bir test işlemidir. Ya da bu seviyede en yaygın bilinen test olan, unit test de bileşen seviyesinde koşulan bir testtir.

Bileşen seviyesindeki testler genellikle araç ve test kütüphaneleri kullanılarak yazılım geliştiriciler tarafından (kod review hariç) otomatik olarak gerçekleştirilir. Ve bu seviyedeki testler, ürün testçilere gelmeden yapılmış olur/olmalıdır.

Yeri gelmişken Test Driven Development (Test Güdümlü Geliştirme) yaklaşımından da biraz bahsedelim. Birim testine yönelik yazılım geliştirme yaklaşımlarından birisi olan Test Driven Development (TDD) yönteminde önce geliştirilmek istenen fonksiyonun birim testi yazılır daha sonra ilgili fonksiyon yazılır. Test Driven Development yaklaşımında asıl amaç hataları bulmaktan ziyade geliştiriciyi belirli bir düzende kod yazmaya yönlendirmektir. Bu sayede kodun bakımı ve ürünün büyümesi daha kolay olacaktır.

Bileşen Seviyesi

Entegrasyon Seviyesi:

Entegrasyon Seviyesi

Geliştirilen yazılımların/modüllerin birbirleri ile etkileşimlerini sınamak için bu seviyede testler yapılır. Entegrasyon seviyesi, bileşen entegrasyon seviyesi ve sistem entegrasyon seviyesi olarak ikiye ayrılır. Bileşen entegrasyon seviyesindeki testleri daha çok yazılım geliştiriciler yaparken sistem entegrasyon seviyesindeki testleri ise test uzmanlarının yapması beklenir. Entegrasyon testlerinde modülün/sistemin fonksiyonelliğinden çok birbirleri ile olan etkileşimine yoğunlaşılması gerekir. Entegrasyon testlerinde büyük patlama, yukarıdan aşağıya, aşağıdan yukarıya yöntemleri uygulanabilir.

Sistem Seviyesi:

Artık ürün neredeyse nihai halini almıştır. Yazılmış olan fonksiyonel ve fonksiyonel olmayan sistem gereksinimleri bu seviyedeki testler ile doğrulanır. Bu seviyedeki testler tamamen test uzmanları tarafından koşulur. Özetle ürünün şartnameye uygun olup olmadığı bu seviyedeki testler ile belirlenir. Fonksiyonel testlerin dışında fonksiyonel olmayan gereksinimleri doğrulamak için performans testleri, yük testleri, stres testleri, kullanılabilirlik testleri, güvenlik testleri yapılır. Sistem testleri sırasında test ortamı canlı ortama olabildiğince yakın olmalıdır. Eğer test ortamı canlı ortamdan çok farklı olursa sistem seviyesinden geçen bir ürün kabul seviyesinde ya da gerçek ortamında çalışırken çok fazla hata ile karşılaşılabilir.

Sistem Seviyesi

Kabul Seviyesi:

Bu seviyedeki testler hata bulmaktan ziyade ürünü kullanacak olan kişilerin ürünü kabul etmesi amacıyla yapılır. Normalde bu seviyedeki testleri son kullanıcının yapması beklenir. Fakat her zaman durum böyle olmayabilir. Testler, organizasyon içinde müşteri isterlerini en iyi anlayan ekipler (örneğin iş analistleri) tarafından da yapılabilir. kullanıcı kabul testi, operasyonel kabul testi, alfa ve beta testi gibi kabul testi çeşitleri vardır. Kabul seviyesindeki testlerde sistem seviyesindeki senaryo ve planları kullanmak yerine ayrı senaryolar ve planlar oluşturmak daha doğru olacaktır.

Kabul Seviyesi

Kaynaklar:

  • Foundations of Software Testing — Doroty Graham, Erik Van Veenendaal, Isabel Evans, Rex Black
  • Software Testing Foundations — Andreas Spillner, Tilo Linz, Hans Schaefer
  • https://www.flaticon.com/

--

--