Ana içeriğe atla

Test Automation Tutorial

Test Automation Amacı:
  • elle ile yapılan işi azaltma
  • tekrarlanan işleri azaltma
  • zamandan kazanma
  • testleri birçok kez tekrar çalıştırabilme
Selenium:
  • Java, Python, C# ... dilleriyle 
  • Windows, Mac, Linux... işletim sistemleriyle (tarayıcı, JVM ya da Javascript desteği varsa)
  • IE, Firefox, Chrome... tarayıcılarıyla uyumlu
Selenium Kötü Yanları:
  • Sadece web app
  • Raporlama özelliği yok -> ekstra uygulama ile TestNG gibi
  • Image based testing için sınırlı destek -> ekstra uygulama Sikuli vb.
Selenium 3-> IDE + Web Driver + Grid 'den oluşuyor.

IDE'nin kötü yanları:
  • Sadece Mozilla (Mozilla için eklenti programı)
  • Sürekli değişen web uygulamalarında performans düşük
  • Programlama mantığı yok, kendin kodla
  • Data driven test yok
  • No centralized maintenance of objects/elements
Selenium' un önceden RC bileşeni de varmış ama artık kullanılmıyor. Önceden web app testlerini farklı pl de yazmak için kullanılırmış. İlk çıkış amacı Same Origin Policy'i aşmak içinmiş. Bu politika çalıştırıldığı yerden farklı bir domain e erişmek isteyen Javascript kodunun o domaine ulaşmasını engelliyor. Bu yüzden Selenium Remote Control u çıkarmışlar. O da Selenium Core ile test edilen web uygulamasının aynı domaindenmiş gibi kandırıyor, HTTP proxy gibi davranarak.

Selenium Webdriver test case oluşturmak ve çalıştırmak için kullanılan programlama arayüzü, RC de tarayıcıya erişmek için RC server a ihtiyaç duyar. Webdriver programlama arayüzüne sahiptir IDE si yoktur o yüzden Eclipse gibi IDE ye ihtiyaç duyulur.

RC varken ki çalışma mantığı: Yerel makinede Web Driver, uzak makinede RC server. Uzak makinede uygulamayı test ederken Web Driver'dan RC server'a komut gidecek, bu da tarayıcıyı otomatize edecek.

Selenium'un çalıştıracağı kodu tarayıcı kendinde bulunan tarayıcı driver'ını çalıştırarak gönderiyor kodu çalıştırmadan önce bu yüzden kullandığın tarayıcının driver'ını seçiyorsun. seleniumhq.org da var
Chromedriver.exe
Firefox için geckodriver.exe
IEdriver.exe

Selenium Webdriver tarayıcıyı direk çağırır.

Selenium Grid, aynı zamanda birçok makinede birçok test scripti çalıştırmak için kullanılır. Parallel çalıştırma, Hub-Node mimarisi yardımıyla gerçekleşir. Hub ve node jar dosyaları kullanılarak başlatılır..

Selenium 3 Kurulumu:
  • Oracle Java SE indir (8.0)
  • Selenium Server + Selenium server standalone indir
  • Eclipse Java EE developers indir
  • Eclipse'e Selenium jar larını ekle -> Project sağ tık - Build Path- Configure Build Path - Libraries'ten Add External Jars
    • Selenium Standalone
    • Selenium server
    • Selenium server'ın lib'dekiler
Selenium Kodlama:
  • Selenium o an sayfada görülmeyen objeler için hata verir. Sayfayı aşağı ya da yukarı indirtmen gerekebilir kodda.
  • Selenium'da elementleri bulmaya yarayan kodlar "by class" ın içine yazılmış o yüzden findelement fonksiyonunun argümanı by
  • Selenium'daki element locator teknikleri:
    • id
    • name
    • classname
    • tagname
    • cssSelector
    • linkText
    • partialLinkText
    • xpath
  • Sayfada hangi elemente ulaşmak istediğini Firebug gibi program yardımıyla ya da F12'ye basarak bulup koda öyle ekleyebilirsin.

*Bu yazı 11 Ocak 2019 tarihinde yazılmıştır. Sonraki Selenium güncellemelerini içermez.

Yorumlar

Bu blogdaki popüler yayınlar

Selenium - XPath Kodları

XPath, XML Path Absolute XPath: root node u verir ve / ile başlar Elementin path inde herhangi bir değişiklik yapılırsa, test kodu hata verir. Örn:  html/body/div[1]/section/div[1]/div/div/div/div[1]/div/div/div/div/div[3]/div[1]/div/h4[1]/b Relative XPath: xml dokümanındaki elementi verir ve // ile başlar Örn : //*[@class='featured-box']//*[text()='Testing'] XPath Kombinasyonları: Belli bir tagin belli bir attribute değeri ile kullanımı Herhangi bir tag in belli bir attribute değeri ile kullanımı "and" operatörü "or" operatörü Belirli bir değer ile başlayan attribute Metnin bir kısmını içeren attribute Sadece text() Herhangi bir attribute un değeri Belli Bir Tag'ın Belli Bir Attribute Değeri ile Kullanımı (Specific tag with specific attribute value) Html Kodu < input   id = "Lid"  .....   > input:tag adı (etiket adı) id : attribute Lid : attribute değeri Selenium Kodu driver.findElement(By.x...

Selenium - Timeout Interface

WebDriver'ın timeout interface idir. Aşağıdaki gibi fonksiyonları mevcuttur: implicitlyWait() pageLoadTimeout() setScriptTimeout() implicitlyWait() Bir elementin bulunması için program boyunca ne kadar bekleneceğini belirtir. Elementi ararken driver bu süre içinde bütün sayfayı çeker, bulamazsa NoSuchElementException hatası verilmeden önce timeout a düşer. Birden fazla element aranırken en az biri bulunana kadar driver sayfayı çeker ya da timeouta düşer. Bu bekleme süresini kullanırken dikkatli olmak lazım çünkü test koşma süresini uzatabilir özellikle XPath kullanıldığında. Ne kadar bekleneceğini ve zaman birimini parametre olarak alır. Self referans döndürür. Örnek kullanım: driver.manage().timeouts().implictlyWait(10, TimeUnit.SECONDS) pageLoadTimeout() Bir hata döndürmeden önce sayfanın yüklenmesi için ne kadar süre beklenmesi gerektiğini belirtir. Zaman değeri ve zaman birimi alır parametre olarak. Timeout interface i döndürür. Örnek kullanim: d...