25 Ocak 2014 Cumartesi

SELENIUM


Selenium
Selenium web tabanlı uygulamaların testlerini browser üzerinden yapmamızı sağlayan bir araçtır.Tüm web testlerinin yapılabileceği açık kaynak kodlu bir test aracıdır. Diğer test araçlarına göre daha fazla gelişmiştir. Web ortamında testlerinizi kaydetme , çalıştırabilme, düzeltme, yeniden test etme imkanı verir.
Test adımları için java, ruby, python gibi farklı yazılım dilleri kullanılabilir.
Test adımlarını web üzerinden görebilmek için selenium-ide kullanılır.Selenium ide fırefox için geliştirilmiş bir eklentidir.
Seleniumda firefoxdaki haraketlerimizi kayıt edebilir ve sonraki ürettiğimiz test kodlarını otomotik testler için kullanabiliriz.
Şimdi 4 adımda bir senaryo düşünelim. www.sahibinden.com adresine girdik
1- siteyi açtım
2- arama kısmına tıkladım, telefon yazdım, aradım
3- ilk çıkan sonuca tıkladım
4- ilan no : 3123123 tarzı bişey yazıyo mu onu kontrol ettim


Diyelim ki sahibinden.com'da çalışıyoruz, kod yazdık, aramayı güçlendiriyoruz.
Kodumuzdan öyle eminiz ki, ya da arama kısmıyla beraber ürünle ilgili de bi kod yazıyoruz, en ucra köşede bir kod, evet kodumuz çalışıyor. Ama,
ya aramayı bozmuşsa? Ya aralarında bağ varsa? Ya ilan numarası gelmiyorsa? Sırf o yazdığımız küçük kod yüzünden? Bunlar olabilir..

Tester larımız vardır, click clickçiler, şu yukarıdaki senaryomuzu ona veririz, ve her bir güncellemede, bunları test eder. Sen de doğrularsın kodun, aramayı bozmamış. Bunun gibi 100lerce senaryo düşünürsek;
mesaj göndersin, paylaşsın, yazdırsın, favorilere eklesin vs..

peki hep click clickçilerle mi uğraşçaz? Bi ton para, + insan, yanılabilir. İşte bu aşamada ,automated ui tests devreye giriyor..

Şimdi, Selenium kendini burada gösteriyor kendi içinde, “tıkla” , “aç”, “doğrula”, “yaz” gibi automated test için çok kullanılan fonksiyonlara sahip.
Biz de onu kullanarak, senaryoyu yazarız. Ve RUN! dediğimiz an , kendine kendine bizim senaryomuzu çalıştırır, ve bize, evet çalıştırdım, düzgün çalışıyor yada eğer bozuksa hata var! gibi çıktılar verir.
Biz her güncelleme yaptığımızda , sadece RUN! diyerek bu testimizi çalıştırabiliriz bu sayede.

Burada Selenium-İde görüntüsü yer almakta ve aşağıda da açıklanmakta.


Selenium'da;
1-Dosya seçeneği, yeni veya önceden açılmış test case açmaya , kaydetmeye,yarar.
2-Düzenle seçeneği, kontrol işlemlerini yapar (kes,yapıstır, geri al gibi).
3-Options seçeneği, ide ile alakalı ayarlar yapılır, varsayılan ide dili değiştirilir.
    3.1-Options>Options seçeneği, karakter kodlaması ve “*waıt” komutu için       milisaniye cinsinden sürenin belirlenmesi bu kısımda yapılır.Varsayılan bekleme süresi 30 sn .ayrıca bu bölümde kişisel java scriptler yüklenebilir.
    3.2-Options>Format seçeneği, html dilindeki scriptleri başka dile çevirmeye yarar.
    3.3-Options >Clipboard format seçeneği; hızlı şekilde mevcut diğer dillere çevirme işlemini yapar.

*Base URL, test yapılmak istenen url adresi bu bölüme yazılır. Eğer kayıtlı bir test case varsa test case çalıştırıldığında bu url otomatık olarak gelir.
*Fast & slow, bu kısımda testin hızı ayarlanır. Hız göstergesi ile 1 ile 10 arasındadır. Testin varsayılan hızı 10 dur.
*Play all, tüm test caseleri çalıştırmak için kullanılır.
*Play, üzerinde çalışılan test case çalıştırır.
*Pause, çalıştırılmış bir test case bekletir.
*Step, bekletilmiş bir test case adım adım ilerletir.
*Test runner, selenium kodunu, test case ve test yapılan siteyi gösterir.
*Record, testi kaydetmek ve testi durdurmak için kullanılır. Selenium-ide ilk başlatıldığında kayıt otomatik başlar.

~Log: testin çalıştırılması ile hatalı ve başarılı işlemlerin kaydını tutar.
~Reference: Komutların açıklanmasını gösterir. Komutların nasıl kullanılacağı burada anlatılmaktadır.

Selenium Nasıl Çalışır?

1-Command: Test için senaryomuzdaki komutları girdiğimiz yer.Bazı komutlar;
   Open: Verilern URL'ye(siteye) ait web sayfasını açmak için
   Click: Bir nesneyi tıklamak için
   ClickAndWait: Nesneye tıklattıktan sonra sayfanın yüklenmesini beklemek için
   AssertElementPresent: Belirtilen elemanın yüklenemesini beklemek için
   AssertTextPresent: Belirtilen bir metnin sayfada olup olmadığını kontrol  eder.
   WaitForPageToload: sayfanın yüklenmesini bekler.
   WaitForElementPresent: Sayfadaki beklenen arayüz ekrana gelene kadar   testi bekletir.
   Type:bir inputun içine yazmak için kullanılır.
   VerifyTextPresent: Sayfanın herhangi bir yerinde beklenen yazının varlığını doğrular.
   VerifyElementPresent: Sayfada olması beklenen arayüzün doğru yerde olup olmadığını kontrol eder.
   Title/AsertTitle: Beklenen sayfa başlağını doğrular.
   DeleteCookie: Belirtilen cookinin silinmesi sağlar.
   MouseOver: Mouse belirtilen elemanın üzerine götürür.

2-Target: Commanda belirttiğimiz olayın hangi nesne üzerinde gerçekleşeceğini belirtiriz. Burada CSS Locator yada Xpath gibi yer bulucular kullanmamız gerekmekte.

3-Value: Targette belirttiğimiz nesnenin bir değeri varsa ve o değeri belirtmemiz gerekiyorsa yada sitede bir yere değer yazmak gerekiyorsa kullanılır.


Şimdi elimizde 1 tane senaryomuz olsun

Scenario 1: cikti.al home page
1- Open page(http://cikti.al)
2- Verify the page header('Çıktı Al ! Bulut Flash Bellek( (beta))

 burada (http://cikti.al) adresine gidip Çıktı Al ! Bulut Flash Bellek( (beta))
yazısının sayfada olup olmadığının kontrolünü yaparız.Seleniumu çalıştırdığımız anda bize tarayıcımızdan yeni bir sekme açarak
http://cikti.al adresine gider.











 Burada istediğimiz adrese gitti. Çıktı Al ! Bulut Flash Bellek yazımızı kontrol etti evet böyle bir metin var ve  her şey yolunda dedi bize. Peki ,bu Bulut Flaş bellek sitemiz ne işe yarıyor? Herhangi bir dökümanımızı yükleyip ,daha sonra istediğimiz bir yerde çıktısını almamızı sağlıyor, harici bellek kullanmadan hallediyoruz çıktı alma olayını ,site kendi hafızasında saklıyor bu dökümanı. Peki o zaman bizde bir dosya yükleyelim Seleniuma komutları verelim o bizim için yüklesin ve baksın sitemizin dosya yükle butonu gerçekten çalışıyor mu bir sorunu var mı ?

Seleniuma gireceğimiz  komutlar bu şekildedir. Seleniuma Run  komutunu verdiğimiz anda yeni sekmede http://cikti.al adresine gitti yazımızı kontrol etti ve commanda kısmına yazdığımız type komutu ile target kısmına yazdığımız CSS Locator yer bulucusu  ile dosya yüklemesi gereken yeri bulmasını söyledik ve value kısmına yüklenecek dosyamızın adını verdik.


Dosyamız yüklendi! Sitemizde hiç bir sorun olmadığını test ederek gördük.


Sizlerde Seleniumu çeşitli siteleri test etmek amaçlı kullanabilirsiniz hatta bunu farklı browserlarda deneyebilir hatta ve hatta farklı işletim sistemleri için bile test edebilir hale getirebilirsiniz.
http://www.browserstack.com bu adres ile testlerinizi farklı web tarayıcılarında deneyebilirsiniz. Örneğin tekrar www.sahibinden.com dan tekrar bahsedersek ve buradaki bir ürünümüzü tam müşterinin biri 1500 dolarlık ürün alırken, İnternet explorer8 de göremediğimiz, ödemeyi onayla butonu , çalışmazsa ne olacak? Ve bizden önce bunu müşteri görmüş olsa, biz 1500 doları ve müşterizi kaybetsek, ne kötü olur değil mi? İşte bu gibi durumlara sebebiyet vermemek için testimizi farklı tarayıcılar ve farklı işletim sistemleri içinde kullanıma hazır hale getirebiliriz.
 Yazıma burada son veriyorum Selenium hakkında bişeyler katabilmişsem ne mutlu :)