Selenium testleri yazdığımız projelerde müşterilerimizin en öncelikli beklentisi, Selenium testlerinin kısa bir zamanda koşulması oluyor. Özellikle e-ticaret uygulamaları için hazırlanan yüzlerce test durumu düşünüldüğünde Selenium testlerini kısa bir zamanda koşmak pek mümkün olmamaktadır. Testleri paralel olarak çalıştırdığımızda testlerin koşulma sürelerinin çok ciddi bir oranda düştüğünü tecrübe ettik.
Selenium grid, testleri paralel olarak çalıştırmak için kullanılan bir yöntemdir. Hub-node yapısı temel alınarak tasarlanmıştır. Yukarıdaki şekilde de görüldüğü gibi testler, ortam veya tarayıcı baz alınarak çeşitli kombinasyonlar ile birlikte oluşturulabilir. Bütün test isteklerini karşılayan hub makinesi, istenilen koşullara göre uygun node makinesini otomatik olarak bulup istekleri yönlendirmektedir.
Şimdi bu yapının nasıl oluşturulduğuna bakalım:
İlk önce selenium-standole-server.jar dosyasını http://www.seleniumhq.org/download/ adresinden indirip, sistem üzerinde bir yere kaydetmelisiniz. Ardından sırasıyla aşağıdaki adımları takip etmelisiniz.
- Komut satırı ile selenium-standole-server dosyasını kaydettiğiniz dizini açıyoruz.
- “java -jar selenium-server-standalone-2.14.0.jar -role hub “ komutunu çalıştırıyoruz. Bu komut ile birlikte makinenizin 4444 portu üzerinde hub çalışacaktır. Siz farklı bir portta çalıştırmak isterseniz –port parametresi ile port numarasını özelleştirebilirsiniz.
- “java -jar selenium-server-standalone-2.14.0.jar -role node -hub http://localhost:4444/grid/register” komutu ile birlikte 5555 portu üzerinde node oluşturulacaktır. Node oluştururken de yine –port parametresi ile birlikte node için özel bir port belirleyebilirsiniz. Bu adımda node makinelerine ait özellikler de belirtilir. Bu özellikler tarayıcı tipi, ortam tipi gibi değerlerdir. Hub makinesi, gelen istekleri bu özellikler ile karşılaştıracak uygun node makinesine yönlendirecektir.
Selenium grid hazır hale getirildikten sonra selenium testlerimiz içerisinde WebDriver nesnelerini aşağıdaki şekilde oluşturuyoruz.
RemoteWebDriver testlerimizin uzak makinelerde çalışmasını sağlayan sınıftır. Birinci parametresi oluşturduğumuz hub makinesinin adresi olmalıdır. İkinci parametre olarak da DesiredCapabilities sınıfından oluşturulmuş bir nesne geçilmektedir.
DesiredCapabilities sınıfından oluşturulacak nesne, parametre olarak geçilmeden önce yukarıdaki fonksiyonlar ile birlikte istenilen ortam ve tarayıcılar set edilmelidir. Hub makinesi gelen test isteklerine uygun node makinesini bulmak için bu nesneyi baz almaktadır.
Yazılım geliştirirken sürekli entegrasyon(CI) yöntemini kullanıyorsanız, selenium testleriniz projeniz build edildikten sonra çalışacaktır. Build etme işleminin gün içerisinde birden fazla tekrar edebileceğini düşünürsek, selenium testlerimizin neden kısa zamanda koşulmak istenmesi daha fazla anlam kazanıyor. Selenium grid yöntemi hem bu zamanı kısa tutabilmek hem de bu kısa zaman içerisinde uygulamanızı bütün ortamlarda test edebilmek için mükemmel bir yöntemdir.
Daha fazla bilgi için web sitemizi ziyaret edebilirsiniz: https://www.keytorc.com/yazilim-test-otomasyon-araclari/
Yazar: Yakup Yazıcı