Test otomasyon mimarisi oluşturma konusunda daha önceki makalelerimde Silk Test Framework üzerinden anlatım yapmıştım. Basit olarak Lokal bilgisayara kurulum adımlarını yaparak sizde evde kendi bilgisayarınızda test otomasyon çalışmaları yapabilirsiniz.
Oluşturduğunuz Framework mimarisini daha da ileri götürmek için Framework içinde Framework barındırarak bunu mümkün hale getirebilirsiniz. Bu konuyu biraz daha açacak olursam; Örneğin siz lisanlı bir Framework kullanıyorsunuz; Silk Test, Ranorox veya IBM gibi. Framework mimarisi kurarken temel mantık Driver katmanlarını doğru kurgulamaktır. Çünkü Orta katman dediğimiz test yazılım katmanı bu katmandan beslenecektir.
Birçok Framework basic olan Otomasyon metotlarını desteklemektir; Click, SetText, TypeKeys, Thread.Sleep, Mouse Move, Wait, Clear gibi. Siz Web Browser dışında Desktop Application çözümleri ve Mobil için test otomasyonu yazmaya çalıştığınızda var olan tek Framework alt yapınız eksik kalacaktır. Bu durumda Framework'ününüz içine Free olan diğer Framework'lerin API'lerini ekleyerek onlardan beslenmesini sağlamanız gerekir.
Örnekle şöyle söylemeliyim; Ben Silk Test Framework (Silk4NET C#) kullanıyorum ama içinde Appium ve Selenium Framework'lerini de ekleyerek alt katmanımı zenginleştirdim ve daha profesyonel mimariye sahip bir Framework ortaya çıkardım.
GitHub'da Test Automation Framework olarak aratınca başta Selenium olmak üzere birçok Driver katmanı ve Custom metotları yazılan Framework örnekleri bulabilirsiniz. Genelde Web Application alt yapısına otomasyon yazmak daha kolay olduğu için birçok Framework alt yapısı Web Driver şeklindedir. Desktop ve Mobil olanları da incelemenizi tavsiye ederim.
GitHub'da arama yaparken Most Forks ve Most Stars filtrelerine bakarak Languages olarak istediğiniz dili seçebilirsiniz. Ben C# olanları genelde sizinle paylaşacağım.
1) Test Automation Framework (Silk4NET & White)
https://github.com/burakavcioglu/SilkWhiteFramework
https://github.com/vincentraj/SilkWhiteFramework
2) Test Automation Framework (Silk4NET API & White)
https://github.com/burakavcioglu/QBSilk4NetWhiteFramework
https://github.com/ashokkn/QBSilk4NetWhiteFramework
3) C# Framework to Automate Tests Using Selenium WebDriver
* Possibility to use MSTest, NUnit or xUNIT Framework
https://github.com/ObjectivityLtd/Test.Automation
4) Selenium Github Page
https://github.com/SeleniumHQ
https://github.com/SeleniumHQ/selenium
Selenium RC & IDE
* Browser Destekler
* JAVA, C#, Ruby dilinde yazılır.
* Can be easily extended as JUnit suite
* Open Source (FREE) Üründür.
* Sadece Web Application Ürünleri Destekler
* Kurumsal Support desteği yoktur
* No GUI Object Repository
* Visual Studio 2015 ile NuGet’den dosyalarını çekerek çalışabilirsiniz.
* Community olarak gittikçe güçleniyor, Framework alt yapınız da mutlaka bulundurunuz.
* Kullandığınız Lisanlı araçta mutlaka barındırın ama tek başına kullanmayın.
5) Winium for Desktop
* WinForms and WPF platforms
https://github.com/burakavcioglu/Winium.Desktop
https://github.com/2gis/Winium.Desktop
6) Golem C# Test Automation Framework
https://github.com/ProtoTest/ProtoTest.Golem
7) Atata ve Macking C# Test Automation Framework
https://github.com/atata-framework/atata
https://github.com/Macking/AutomationTestFramework
8) Cucumber Test Framework
Dil: Ruby (BDD)
https://github.com/cucumber/cucumber-ruby
www.cucumber.io
9) Appium: Mobile App Automation
* Mobil için Open Source Üründür
* Kurumsal Support desteği yoktur
* Sadece Mobil destekler
* www.appium.io (Web Sitesi)
Native, Hybrid ve Mobil uygulamaların test otomasyonunda kullanılan açık kaynak kodlu bir test Framework’ü. WebDriver protokolü ile iOS ve Android uygulamalar üzerinde çalışabilmektedir. Benim önerim; Sadece Mobil ürünler için düşününüz.
Dil: Ruby (BDD)
https://github.com/cucumber/cucumber-ruby
www.cucumber.io
9) Appium: Mobile App Automation
* Mobil için Open Source Üründür
* Kurumsal Support desteği yoktur
* Sadece Mobil destekler
* www.appium.io (Web Sitesi)
Native, Hybrid ve Mobil uygulamaların test otomasyonunda kullanılan açık kaynak kodlu bir test Framework’ü. WebDriver protokolü ile iOS ve Android uygulamalar üzerinde çalışabilmektedir. Benim önerim; Sadece Mobil ürünler için düşününüz.
10) Frisby.js Framework
Node.js Kütüphanesinin bir ürünü olan Frisby.js’yi API(Application Programming Interface) testleri için kullanabilirsiniz.
www.frisbyjs.com
11) Robot Framework
Robot Framework is a generic open source test automation framework for acceptance testing and acceptance test-driven development (ATDD).
www.robotframework.org
https://github.com/robotframework/robotframework
12) RedwoodHQ (Free)
RedwoodHQ, PrimaTest Inc tarafından geliştirilen Open Source(Free-Ücretsiz) olup JavaScript ile yazılmış Test otomasyon Framework'dür. Daha doğrusu Web tabanlı bir Cross Browser Testing Tool'da diyebiliriz. Çünkü otomasyon Framework'lerinin (Selenium, Appium, Silk) çoğunu destekleyip bir çatı görevi görerek test scriptlerinin yazılmasını koşmasını sağlamaktadır.
Lokal bilgisayarınıza kurabilirsiniz. 3000 portu ile arayüz (127.0.0.1:3000) arayüz açılacaktır. Burada kelime güdümlü testlerini yazabilirsiniz.Test Cases oluşturabilirsiniz. Kendisine ait Agent RedwoodHQ (WinVNC) vardır.
RedwoodHQ, programlama dili olarak Java/Groovy, Python ve Visual C# desteklemektedir.
https://github.com/dmolchanenko/RedwoodHQ
https://www.youtube.com/user/PrimaTestInc
www.redwoodhq.com
13) JUnit (JAVA Unit Testing)
Java'da Unit test yazarken en çok kullanılan kütüphanelerden birisi JUnit kütüphanesidir. Test otomasyon yazarken orta katman için test steplerini yazarken ihtiyaç çokça duyulur. Test Driven Development metodu için Unit testler oluşturmak amacıyla hazırlanmış projedir.
https://sourceforge.net/projects/junit
http://junit.org/junit5/
https://github.com/junit-team/junit5
14) NUnit (.NET Framework Unit Testing)
C# ile .NET Framework'de Unit test yazarken en çok kullanılan kütüphanelerden birisidir. GUI ve Konsol olmak üzere iki test çalıştırıcısı ile beraber kurulur. Konsol çalıştırıcısı, build otomasyonlarında sıklıkla kullanılır. JUnit'e göre daha kullanışlıdır.
www.nunit.org
https://github.com/nunit
Kaynakça
WinVNC: Herhangi bir ağ sunucusu üzerinde çalışan grafik arayüz uygulamalarına herhangi bir başka ağ üzerindeki bir bilgisayardan kolaylıkla ve hızla erişerek bu uygulamaları kullanabilmemizi ve yönetmemizi sağlayan platform bağımsız bir yapı.
Burak AVCI