En Çok Kullanılan Yazılım Test Metodolojileri ve Tanımları

Miray TOSUN yurtseven | ÜRÜN YÖNETİCİSİ

Gündelik hayatımızın çoğu adımı, yaptığımız şeyleri test etmektir. Yemek yaptığımızda tuzunun iyi olup olmadığını, duvara çerçeve astığımızda düzgün durup durmadığını, yıkandıktan sonra saçımızın güzel kokup kokmadığını kontrol ederiz. Aynı durum geliştirmesini yaptığımız uygulamalar, makalesini yazdığımız teknik konular ve hatta şuan okunan bu yazı için de geçerlidir.

Ancak sorun şu ki yaptığımız testlerin anlamlarını, ne testi yaptığımızı  bilmeyiz. Evet amaç bellidir, ne yaparsak yapalım işi en iyi en kaliteli şekilde tamamlamaktır ama testin adını hatta doğru testi yapıp yapmadığımıza çoğu zaman emin olamayız.

Yazılım test metodolojileri yazılım testlerine farklı yaklaşımlar ile ele alarak sistemin bütünüyle doğru çalıştığını kontrol etmeyi hedefler. Yazılım test metodolojileri birçok kaynakta iki ana başlıkta toplanır; İşlevsel (“functional”) ve işlevsel olmayan (“non-functional”). Functional testler içerisinde:

  • Birim (“Unit”) testi
  • Duman (“Smoke”) testi
  • Bütünleşme (“Integration”) testi
  • Fonksiyonel (“functional”) test
  • Arayüz (“Interface”) testi
  • Sistem (“System”) testi
  • Regresyon (“Regression”) testi
  • Kullanıcı Kabul (“UAT-User Acceptance Test”) testi

Non-functional testler içerisinde;

  • Performans  (“Performance”) testi
  • Yük (“Load”) testi
  • Stres (“Stress”) testi
  • Güvenlik (“Security”) testi
  • Güvenlik Açığı (“Vulnerability”) testi
  • Kullanılabilirlik (“Usability”) testi
  • Uygunluk (“Compatibility”) testi

Farklı kaynaklarda bu testleri daha da çoğaltabiliriz ancak yaygın olarak testler yukarıdaki gibi sıralanabilir.

Kullanımı yaygın olan ancak tanımları karıştırılan ya da bilinmeyen  bu test yöntemlerini detaylandırırsak;

Functional Testler;

  • Birim (“Unit”) testi : Testin en başı da denebilir. Kalite test ekiplerine uygulama daha gelmeden önce uygulamayı yazan yazılımcılar tarafından yapılır. Temel amaç kodların doğru çalışıp çalışmadığını kontrol eden yardımcı kod bloklarının yazılmasıdır. Test edilen fonksiyona belirli değerler gönderilir ve dönen sonuç ile unit test içerisinde dönmesi beklenen sonucun aynı olup olmadığı kontrol edilir.
  • Duman (“Smoke”) testi : Bunu aslında devre testi gibi düşünmek daha kolay anlamamızı sağlar. Diyelim ki pille çalışan basit bir elektrik devresi yaptınız. Ana devrede elektrik akımını açan/kapatan anahtarınız olsun. Birde bu ana devreye bağlı farklı renklerde ampulleriniz olduğunu ve onlarında başka anahtarlara bağlı olduğunu düşünelim. Şimdi bu testi yapmak için tüm malzemelerinizi birleştirdiniz ve tüm test adımlarınızı deneyeceksiniz ancak öncesinde en önemli test adımınızı bilmeniz gerekir. Yani elektrik akımı devrede dolaşıyor mu? Yoksa kısa devre mi yapıyor? Eğer kısa devre yapıyor ise o zaman duman çıkar. İşte en önemli test adımınız olan Smoke testinizi buldunuz. Eğer bu adımı geçiyorsa zaten diğer adım olan renkli ampulleri test edebilirsiniz.
  • Bütünleşme (“Integration”) testi : Bütünleşme testi yine uygulamayı geliştiren yazılımcılar tarafından yazılan gelişmiş unit testi olarak bilinir. Birbiri ile bağlantılı metotların tümünün test edilmesi sağlanır. Burada dikkat edilmesi gereken nokta unit testi tek metodu test ederken Integration testi birden çok metodu aynı anda test eder.
  • Fonksiyonel (“functional”) test : Uygulamanın test ortamında kalite test ekipleri tarafından son kullanıcının istediği gibi çalışıp çalışmadığını kontrol etmektir.Eğer uygulama beklendiği gibi davranırsa,testlerin yapılmasına sıralı bir şekilde devam edilir.
  • Arayüz (“Interface”) testi : Arayüz testi, Kullanıcı Arayüzü (“UI-User Interface”) olarak da bazı kaynaklarda geçmektedir. Uygulamaya ait arayüzler incelenir. Kullanılan renkler, buton ve menü konumlarını da içeren test bu aşamada yapılır. Amaç kullanıcılar için görsel ve işlevselliğin optimum seviyeye getirilmesidir.
  • Sistem (“System”) testi : Sistem testi sadece uygulamanın değil donanım, yazılım ve servislerin tümüyle test edilmesidir.
  • Regresyon (“Regression”) testi : Genel anlamda detaya çok inmeden önemli kısımların test edilmesidir. Süreci devam ettirecek fonksiyonel testlerin elenerek yapılmasıdır.
  • Kullanıcı Kabul (“UAT-User Acceptance Test”) testi : Ürünün nihai versiyonunun, iş gereksinimlerini karşıladığından emin olmak adına son kullanıcı tarafından yapılan testlerin bütünüdür. Bu testler sonrasında onaylanan sistem canlı ortama alınarak hayata geçirilir.

Non-functional Testler;

  • Performans (“Performance”) testi: Uygulamanın çok kullanıcı ve çok data ile testi yapılarak sistemin çalışması ölçülür.
  • Yük (“Load”) testi : Uygulamaya çok kullanıcı ve çok data eklendiğinde belirlenen sürede cevap verip vermemesi kontrol edilir.
  • Stres (“Stress”) testi : Stres testi ise performans ve yük testi yapıldığı esnada alınan hataların gözlemlendiği, dönen cevapların doğru olup olmadığının kontrol edildiği testlerdir.
  • Güvenlik (“Security”) testi : İş tamamlandıktan sonra risk taşıyan maddeler üzerinde testler yapılır. En basit haliyle giriş yapılan bir ekranda <Script> yazarak giriş yapılamamalıdır.
  • Güvenlik Açığı (“Vulnerability”) testi : Güvenlik açığı testi, uygulamada güvenlik açıklarını azaltmak ve sistemde yer alan riskleri değerlendirmek için kullanılan yazılım test tekniği.
  • Kullanılabilirlik (“Usability”) testi : Uygulamanın son kullanıcı gözüyle rahat kullanılıp kullanılmadığını, uygulamanın kullanıcıya yol gösterip göstermediğine, rahat öğrenebilip öğrenilmediğine ve hata mesajlarına bakılır. En son kullanıcı gözüyle yapılan ve sistemi bilmeyen bir kullanıcı ile test edilmesidir. Buna göre sistemi bilmeyen bir kullanıcı rahatlıkla sistem üzerinde işlemini yapabiliyor ise bu testten geçilir.
  • Uygunluk (“Compatibility”) testi : Uygulamanın her browser’da, her mobil platformda her işletim sisteminde çalışıp çalışmadığının kontrolü yapılır. Kullanıcı özel olarak bir platform ya da browser belirtmedikçe tüm sistemlerde çalışması beklenir.

Bu test metotları daha da çoğaltılabilir ancak günümüzde en yaygın olarak bilinen ve kullanılanlar bu şekilde tanımlanabilir. Tanımları bilinen testlerden hangisinin üzerinde çalıştığımız uygulamaya daha uygun olduğuna karar vermek daha kolaydır.  Unutulmamalıdır ki her test metodolojisi tüm uygulamalarda kullanılmaz ya da zorunluluk teşkil etmez. Ancak bir uygulama hayata geçirilmeden önce testlerinin tamamlanarak olası risklerin bulunması ve hataların giderilmesi hayati bir meseledir.

Please follow and like us: