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 Actions Sınıfını Kullanarak Klavye ve Fare İşlemleri

Karmaşık kullanıcı hareketlerini (sağ tıklama, iki kere tıklama, sürükleme,...) taklit etmek için kullanılan API. Doğrudan Klavye veya Fare kullanmak yerine bu sınıf kullanılır. Build patternini uygular: yöntem çağrıları tarafından belirtilen tüm eylemleri içeren bir CompositeAction oluşturur. Kullanıcı hareketlerini uygulayan fonksiyonları kullanmak için Actions ve Action sınıfını import etmek gerekir: Actions sınıfı ve Action sınıfı, WebDriver API'sinin org.openqa.selenium.Interactions paketinde bulunur. import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.interactions.Action; Yöntemlerini kullanmaya çağırmak için Actions sınıfı nesnesine ihtiyaç vardır.  Actions actions = new Actions(WebDriver nesnesi); Üzerinde işlem yapılacak elementi bulmak gerekiyor. WebElement webElement = driver.findElement(...);  actions.contextClick(webElement).perform(); //contextClick, element üzerinde sağ tıklar. Bu sınıfının bazı fonksiyonl...

Selenium WebDriver - Dinamik Web Tablolarla Kod Örnekleri

Verisi sürekli değişen tablolarda XPath kullanılması gerekir. Bunu da tablonun satır ve sütun sayı bilgileriyle yapmak daha doğru olur. Tablo 1: Şirket Grup Kapanış Şimdiki Ücret % Değişim IL&FS Transportation A 337.4 66.5 + 5.4 GRUH Finance Li A 383.8 998.9 + 2.3 IDFC Bank A 351.4 715.9 + 5.1 YES Bank Ltd. A 697.9 669.3 + 3.2 IRB Infrastructure A 271 724.8 + 3.1 Escorts Ltd. A 113.4 890.3 + 5.1 Cox & Kings L A 867 900.8 + 5.5 Bharat Electroni A 176.5 849 + 7.5 Nestle India A 64.8 187.3 + 7.6 Cox & Kings L A 749.4 729.5 + 9.5 JK Tyre & Industries A 687 601.4 + 6 Navin Fluorine Inter A 416.7 865.3 + 8.9 NIIT Technologies A 966.9 117.2 + 9.4 DCB Bank A 853.2 760.2 + 2.4 UCO Bank A 358 719.6 + 9 Coffee Day Enterpris A 53.8 538.6 + 4.1 Kirloskar Oil Engine A 134.1 102.8 + 7.7 Repco Home Finance L A 96.2 449.9 + 8.9 Ajanta Pharma Lt A 161.3 838 + 4.4 CESC Ltd. A 817 490.5 + 4.7 JaiprakashAssociates A 247.3 961.1 + 7.1 Vakrangee A 888.3 652.9 ...

TestNG - Notasyonlar (Annotations), Doğrulamalar (Assertions)

TestNG, JUnit ve NUnit kütüphanelerinden etkilenen ve onlara göre daha fazla yetkinlik barındıran bir test kütüphanesidir. TestNG ait özellikler ve kolaylıklar için şunları örnek verebiliriz: Notasyonlar (Annotations) Testlerin kendine has Thread’lerde koşabilmesi testng.xml dosyasıyla testlerin önceliklendirilmesi, gruplandırılması vb. kolaylıklar Kendi içerisinde loglama, raporlama desteği Notasyonlar sayesinde kodun ve oluşturulan raporun kolaylıkla anlaşılması @DataProvider notasyonu sayesinde veriye dayalı test desteği (Data Driven Test) Maven, Jenkins vb. ide ler için eklenti desteği Parametre desteği Notasyonlar: @Test Notasyonu Yazılan otomasyon kodunda test olarak çalışmasını istediğimiz kod parçasının önüne bu notasyonu ekleriz. Bu notasyonu birden fazla kez kullanabiliriz. Eğer herhangi bir parametre tanımlanmadıysa testler alfabetik olarak çalışır.  Aşağıdaki parametreler, hangi testin hangi sırayla çalışacağının, koşturulup koşturulmayacağın...