Test Otomasyon Aracı Selenium’u Tanıyalım
Yazılım geliştirmenin en önemli ve kritik süreçlerinden birisi de test. Fonksiyonel test, performans testi, güvenlik testi… gibi birçok farklı testlerden başarıyla geçebilen uygulamalar daha kullanılabilir, hatadan arınmış ve hızlı hale gelmektedir. Test süreçlerini iyileştirmek ve kolaylaştırmak adına bugün piyasada bir çok yazılım ve araç bulunmakta. Bu araçlardan biri de Selenium.
Selenium web sitesindeki tanımıyla bir “Browser Automation” aracı, yani web sitelerinin bazı test adımlarını web tarayıcınız üzerinden otomatik şekilde oluşturmanızı ve işletmenizi sağlayan bir araç. Örneğin web sitenizin kullanıcı kayıt sayfasının düzgün ve hatalı çalışma senaryolarını test etmek isterseniz Selenium ile kullanıcı kayıt sayfasının açılması, sayfadaki input alanlarının doldurulması, butona tıklanması… gibi adımları otomatize edebiliyorsunuz. Yani uygulamanıza ait fonksiyonel testleri yapmanızı kolaylaştırıyor. Bu şekilde farklı senaryoları kaydederek ilerleyen zamanlarda bu senaryoları kendiniz manuel yapmak yerine Selenium’a yaptırabiliyor ve test sonuçlarını inceleyerek “sonuçlar başarılı” veya “bazı senaryolarda sorun var” diyebiliyorsunuz.
Bu yazımızda size Selenium hızlıca anlatmaya ve Selenium bileşenlerini tanıtmaya çalışacağım. İlerleyen zamanlarda fırsat buldukça Selenium’la ilgili daha detaylı yazılara da yine Devnot’ta yer vermeye çalışacağım.
Selenium’u üç ana başlıkta inceleyeceğiz.
- Selenium IDE
- Selenium WebDriver
- Selenium-Grid
I. Selenium IDE
Selenium IDE, geliştirdiğimiz web tabanlı uygulamaların test edilmesini sağlayan ve bunları daha sonrasında otomatize ederek browser üzerinde aynı caseleri tekrar tekrar girmeden kontrol etmemizi sağlayan araçtır.
Selenium IDE’nin özelliklerini sayacak olursak;
- Normal bir kullanıcı gibi davranıp işlemleri ona göre yapıyor ve kaydediyor.
- Fonksiyonel testler yazmak için kullanılabilir.
- Firefox plug-in’i olarak çalışmaktadır.
- Bir çok dil desteği mevcut (Java, .NET, Python, Ruby, PHP,Perl)
- Selenium’un open source olması sayesinde bir çok platformda (Windows, Linux, IOS) herhangi bir sorun yaşamadan çalışmaktadır.
- Bir çok dil desteği ve platform desteği sayesinde diğer test araçlarına göre daha çok tercih edilmektedir. (UFT, QTP)
http://docs.seleniumhq.org/download/ linkine tıklayarak indirebilirsiniz. Xpi dosyasını indirdikten sonra Firefox’dan Eklentileri kısmını açarak aşağıdaki resimdeki gibi kurabilirsiniz.
Selenium IDE’yi kurduktan sonra Firefox’u açıp Tools menüsünden Selenium IDE programını açarak inceleyebiliriz.
IDE Özellikleri;
Selenium IDE’yi açtıktan sonra aşağıdaki gibi bir ekranla karşılaşacaksınız. Buradaki seçenekleri kullanarak web sayfalarınız üzerinden test senaryolarını canlandırıp kaydedebilir, daha sonradan bu senaryoları Selenium üzerinden tekrarlayarak testlerinizi yapabilirsiniz. Selenium IDE aracında yer alan menü ve linkler kısaca aşağıda açıklanmıştır.
Menüler: Menü kısmında yeni test oluşturmak, yapılan testleri kaydetmek ve istediğiniz testi, istediğiniz dilde export ederek kullanabilirsiniz. Bu özelliklerin hepsini yapacağınız testlerde kullanabilirsiniz.
Table: Adım adım yapılan işlemlerin tutulduğu bölümdür.
Source: Table’da bulunan değerlerin HTML kodudur.
Play: Kaydedilen adımların otomatize edilip tekrardan aynı test caselerini girmeden çalıştırıldığı bölümdür.
Test Case: Yapılan testlerin isimlendirerek saklandığı bölümdür.
Command: Çalıştırılan uygulamanın test caselerine uygun alanların doldurularak işleme devam edildiği yerdir. En çok kullanılan komutlar aşağıdaki gibidir.
- open: URL’i ( Siteyi/adresi ) açmak içindir.
- click: Bir nesneye tıklamak içindir.
- clickandWait: Nesneye tıkladıktan sonra sayfanın yüklenmesini bekler.
- assertElementPresent: Belirtilen elemanın yüklenmesini bekler.
- assertTextPresent: Belirtilen bir text’in(yazının) sayfada olup olmadığını kontrol eder.
- deleteCookie: Belirtilen Cookie’nin silinmesi sağlar.
- mouseOver: Mouse’u belirtilen elementin üzerine götürür.
- verifyTextPresent: Belirtilen nesnenin belirmesini bekler ve sağlamasını yapar.
- waitForPageToLoad: Sayfanın yüklenmesini bekler.
- captureEntirePageScreenshot: Üzerinde test yaptığınız sayfanın ekran görüntüsünü çerçevesiz olarak kaydeder.
- waitForElementPresent: Sayfadaki bir elementin yüklenmesini bekler, bunu genellikle JavaScript tarafından kontrol edilen elementler için kullanırız.
- type: Bir input’un içine yazmak için kullanılır.
Target: Ekranda test edilmek istenen alanın belirtildiği kısımdır.
Value: Yapılan istenen test için değerin girildiği alandır.
Runs&Failures: Testlerin kaç tanesinin başarılı, kaç tanesinin başarısız olduğunun listelendiği kısımdır.
Record: Kayıt tutmak için kullanılan buton.
Base URL: Testlerin hangi sayfada yapılacağını gösteren kısımdır.
Log: Adım adım yapılan testlerin loglarının bulunduğu kısımdır. Play ile çalıştırılarak yapılan testler hakkında hata mesajlarının görüntülendiği kısımdır. Bu sayede yaptığınız testleri bir nevi debug etmiş olursunuz.
Reference: Command kısmında kullanılan kodların dökümante edildiği kısımdır. Bu sayede yaptığınız testleri dökümante ederken size kolay sağlayarak işlemlerinizi hızlı bir şekilde yapabilirsiniz.
II. Selenium WebDriver
Daha öncesinde Selenium’un en önemli projelerinden bir tanesi Selenium RC’di. WebDriver’ın eklenmesinden sonra Selenium 2.0 olarak yayınlandı. WebDriver,Selenium’un kendi içinde geliştirmiş olduğu en önemli özelliklerinden biri diyebiliriz. Çünkü WebDriver, test yapan kişilerin isteklerine göre browserın kendi metodlarını kullanarak işlem yapabilir. WebDriver bir çok browserda çalışmaktadır.(Firefox,Chrome,Opera, Safari, Internet Explorer) Bu durum test uzmanları için güzel bir özellik olup, browserların davranışlarını daha yakından görerek müdahele etmelerine olanak sağlar.
WebDriver’ın geliştirilmesindeki en büyük amaç dinamik web sitelerinin içeriklerinin belli bir kısmının değişimi sırasında tüm sayfanın tekrardan yüklenmeden yapılan değişiklikleri görerek test caselerinizi devam ettirmenizde yardımcı olmaktır. WebDriver sayesinde yapmış olduğunuz projenin testi için kullanmanız gereken tek şey WebDriver API’ı indirmektir. API sayesinde projenizin diline göre Java, .NET, Python, Ruby, PHP,Perl gibi dillerini kullanarak test scriptlerinizi yazabilirsiniz. Tabii ki bu aracın kullanımını için geliştirme yapmak gerekiyor, bu nedenle I numaralı maddede incelediğimiz Selenium IDE’nin daha pratik ve kolay bir araç olduğunu söyleyebiliriz.
III. Selenium-Grid
Selenium’un geliştirmiş olduğu ve geliştirmesi devam eden Selenium-Grid farklı sunucular üzerinde farklı browserlar ile paralel bir şekilde çalıştırmaktadır. Buradaki asıl amaç farklı işletim sistemi, donanım, cihaz gibi kombinasyonlar üzerinde test sonuçlarını görmek, dağıtık ortamda paralel olarak test süreçlerini yürütmek ve test sonuçlarını hızlıca almaktır. Bu testler paralel olarak çalıştığında süre olarak ciddi bir zaman kazancı gözükmektedir.
Selenium Hub ve Node yapısını kullanarak testlerini yapmaktadır.
Hub: Selenium’da kullanılan Hub tek bir tane olmak koşuluyla çalışmaktadır. Sunucu gibi davranan bu yapı kendi üzerinde bir çok işlemi barındırarak farklı istemcilerden gelen istekleri yanıtlayarak aynı kodu farklı platformlarda ve browserlarda test edebilirsiniz.
Node: Hub’a bağlı olan bir veya biden fazla istemciden oluşan yapıya node denir. Node’lar ile selenium-grid kullanarak bir çok Node’tan tek bir Hub’a istekte bulunarak test yapabilirsiniz.
Kaynakça
http://docs.seleniumhq.org/docs/
http://labs.sahibinden.com/yazi/kusursuz-testler-yazmak-selenium-ide/
3 Comments
Akif Yanbak
3 Ağustos 2015 at 11:04Visual Studio ile kullanımı http://www.akifyanbak.com/2015/03/visual-studioya-selenium-kurulumu-ve-kullanimi/
Selenium ile Test Senaryoları Oluşturma | Devnot
2 Aralık 2015 at 08:21[…] sağlayan Selenium ile ilgili daha önceden Devnot’ta bir yazı yayınlamıştım. http://devnot.com/2015/test-otomasyon-araci-seleniumu-taniyalim adresinden ulaşabileceğiniz bu yazıda kısaca Selenium’un farklı araçları ve kullanımları […]
alper
15 Haziran 2016 at 15:37Selenium kurulumu yapamıyorum bana yardımcı olurmusun? hangi linki kullanacağım