26 Aralık 2016

Happy Path (Akış) ve Monkey Test Nedir? Arasındaki Farklar Nelerdir?

Happy Path (Akış) ve Monkey Test Nedir? Arasındaki Farklar Nelerdir?

Yazılım test süreçlerinde en çok kullanılan iki test yöntemi olan Happy Path Test ve Monkey Test kavramlarından bahsedeceğim. Happy Path testi genel olarak sistem akış testidir. Bir yazılımdan beklenen senaryolar (Girdiler ve Çıktılar) dizisinin test edilmesi diyebiliriz. Örnekle bir üyelik Formu doldururken ilk önce gerekli alanlar doldurulur sonra Kaydet diyerek ilgili Form kaydedilir ve Telefon numarası ile onaylama işlemi yapılarak işlem bitirilir. İşte bu akış senaryosunun doğru çalışıp çalışmadığının testine biz Happy Path Testing deriz.

Happy Path genelde beklenen akış olduğu için yazılımın doğru ve işlevini yerine getireceği tüm senaryoları işletmek Happy Path testin genel mantığıdır. Happy Path'de hata bulmak daha kolaydır ve Happy Path senaryolarını kolayca Analiz dokümanından da çıkarabilirsiniz. Çünkü Business Analiz dokümanında yazılımın ne yapması gerektiğini ve beklenen sonucu yazdığı için buradan beklenen Happy Path test senaryolarını çıkarmak daha kolaydır. Analiz dokumanı yetersiz ve eksik olan projelerin Happy Path test case'leri de eksik olur. Bu yüzden Analiz dokumanı yazılımın tüm fonksiyonel işlevini anlatacak düzeyde olması gerekir.

Monkey Testing(Maymun Testi) bir yazılım projesinde genel akış dışında rastgele(Random) seçilerek yapılan ve ürünün nasıl kullanıldığının hiç önemi olmadan sadece rastgele tuşlara basılarak yapılan test yöntemidir. Örnekle siz bir Form içindeki butonları test etmek istiyorsunuz. Kaydet, Düzenle, Sil, Yayınla, İptal gibi fonksiyonları bir sıra ile test edersiniz. Kaydetme işlemi yapmadan bir formu silemez veya iptal edemezsiniz. Monkey Testte siz görünür olan tüm butonları herhangi bir kural, akış veya validasyon tipi düşünmeden rastgele ve düzensiz şekilde deneyerek farklı use case'ler oluşturursunuz. Bu test yönteminde amaç farklı senaryolarda yazılımın nasıl davrandığını görmek ve test etmektir.

Monkey Testin temel mantığı sistemi zorlamak ve bozmak üzerine kurulmuştur. Bu sayede yazılımın dayanıklılığı ve kalitesi daha rahat ölçülür. Siz yazılımda Happy Path dışında farklı senaryolar deneyip sistemde açık bulmaya kadar yapacağınız tüm testlerde, yazılım bir bulgu veya hata vermiyorsa bu yazılımın kalitesini gösterir. Özellikle yük ve stres testleri Monkey Test kategorisine girmektedir.

Monkey Testin zor kısmı ise hata aldığınız use case'i her zaman yakalaya mamanız ve o senaryoyu yazılımcıya teknik olarak anlatmanızdır. Bu kolay bir durum değildir çünkü akış dışı davrandığınız için bir bulgu bulmuş oluyorsunuz ve yazılımcı akış dışı düşünmediği için Bug'ı anlamakta güçlük çekebiliyor.

Happy Path Test ve Monkey Test Arasındaki Farklar

1) Happy Path testinin senaryolarını Business Analiz dokumanında çıkarabilirsiniz fakat Monkey Test için farklı senaryolar denemeniz gerekir.

2) Validasyon kuralları olan bir yazılımda validasyon akışını Happy Path yöntemi ile test edebilirsiniz, Validasyon kurallarını atlatmak için üreteceğiniz senaryolar ise Monkey Test yöntemine girer.

3) Happy Path testindeki bulgular hemen fark edilir ve Fixlenme önceliği(Priority) daha yüksektir. Çünkü sistemin temel akışında bir problem oluşturacağı için yazılım çalışmayacaktır. Monkey testteki bulgular ise hemen fark edilmez, farklı senaryo ve akış yöntemlerinde bulgu çıkmaktadır.

4) İki test yöntemi de Fonksiyonel test kategorisine girer. Yazılımdan istenilen girdi(Input) ve beklenen çıktı(Output) test edilir, sadece sonuca giden Test Case'leri farklıdır.

5) Monkey Testin use case'leri analiz dokumanında yazmaz, sizin oluşturmanız gerekmektedir. Sonuca giden yolda farklı senaryolar düşünerek test etmeniz beklenir.

6) Monkey Test ile yazılımdaki tüm alternatif yollar ve senaryolar denenmiş olur.

7) Monkey Test bazen kullanıcı gözü ile bakmayı gerektirebilir ve kullanıcı deneyimi baz alınarak yapılırsa daha kaliteli test olur. Akıllı(Smart Monkey Tests) ve Aptal(Dumb Monkey Tests) kullanıcı düşünülerek test edilir.

8) Fuzzing test yönetim Monkey Test yöntemi içerisine girmektedir. Belli bir veri veya dizi yapısı sisteme göndererek Brute Force veya Tampon bellek taşması gibi testler yapılarak sistem zorlanır ve test edilir.

Kaynaklar
en.wikipedia.org/wiki/Happy_path (Happy Path Testing)
www.sei.cmu.edu/library/assets/happy.pdf (Happy Path Testing)
en.wikipedia.org/wiki/Monkey_testing (Monkey Testing)