2. Selenium Nedir?
Selenium web tabanlı uygulamaların testlerini browser/tarayıcı
üzerinden yapmamızı sağlayan ve tüm web testlerinin yapılabileceği
bir test aracıdır.
Selenium’un desteklediği programlama dillerinden bazıları:
Java
C#
Perl
Groovy
PHP
Python
Ruby
.Net
Açık kaynaklı (open source) bir yazılımdır.
http://www.openqa.org/
3. Selenium Nedir ?
Selenium’un çalışabildiği işletim sistemi türleri:
Windows
Linux
Mac OS işletim sistemlerinde çalışabilmektedir.
Selenium Bileşenleri
Selenium’u üç ana başlıkta inceleyeceğiz.
Selenium IDE
Selenium WebDriver
Selenium-Grid
4. 1) 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 başlıca özellikleri;
1. Normal bir kullanıcı gibi davranıp işlemler kullanıcıymış gibi
yapılabilir ve kaydedilebilir.
2. Fonksiyonel testler yazmak için kullanılmaktadır.
3. Bir çok dil desteği mevcut (Java, .NET, Python, Ruby, PHP,Perl).
5. 1) Selenium IDE
Selenium IDE’nin başlıca özellikleri;
1. Normal bir kullanıcı gibi davranıp işlemler kullanıcıymış gibi
yapılabilir ve kaydedilebilir.
2. Fonksiyonel testler yazmak için kullanılmaktadır.
3. Firefox plug-in’i olarak çalışmaktadır.
4. Bir çok dil desteği mevcut (Java, .NET, Python, Ruby, PHP,Perl).
5. Selenium’un open source olması sayesinde bir çok platformda
(Windows, Linux, IOS) herhangi bir sorun yaşamadan
çalışmaktadır.
6. Bir çok dil desteği ve platform desteği sayesinde diğer test
araçlarına göre daha çok tercih edilmektedir. (UFT, QTP)
8. Selenium IDE Özellikleri:
Menüler: Menü kısmında yeni test
oluşturmak, yapılan testleri
kaydetmek ve istediğiniz testi,
istediğimiz dilde export ederek
kullanabiliriz. 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.
9. Selenium IDE Özellikleri:
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ığımı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.
10. Selenium IDE Özellikleri:
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.
Base URL: Testlerin hangi sayfada yapılacağını
gösteren kısımdı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.
11. Selenium Örnek Test Case 1:
• Anasayfa’dan login olma sayfasına git.
• Login olma ekranında kullanıcı adını gir.
• Login olma ekranında şifreyi gir.
• Submit butonuna bas.
• “Bana Özel” sayfasına yönlenip yönlenmediğini kontrol et.
• “Adres Bilgilerim”e tıkla.
• Çıkan sayfada Güncelle’ye tıkla.
• TC Kimlik Noyu 11111111111 olarak değiştir.
• Kaydet butonuna tıkla.
• “Lütfen T.C. Kimlik Numaranızı Doğru Olarak Giriniz.” hata
mesajının sayfada yer alıp almadığını kontrol et.
12. Selenium Örnek Test Case 1:
• Bu işlemleri Selenium Ide ile kayıt ettiğimizde bize
aşağıdaki kodu oluşturacaktır:
13. Selenium Örnek Test Case 1:
• Bu işlemleri Selenium Ide ile kayıt ettiğimizde bize
aşağıdaki kodu oluşturacaktır:
14. Selenium Örnek Test Case 2:
• THY sitesi için SearchFlight test senaryo gerçeklemesini
test edelim.
15. Selenium Örnek Test Case 2:
• Bütün kontrolleri geçerek bizim için örnek test senaryosunu başarıyla
gerçekleştirdi. Beklenen değerlerin kontrolleri hatasız bir şekilde gerçekleştirildi.
16. 2) Selenium WebDriver
Selenium 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 vs..) 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.
17. 2) Selenium WebDriver
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 caselerinin devam ettirilmesine yardımcı olmaktır.
Selenium WebDriver sayesinde yapmış olduğumuz projenin
testi için kullanmamız gereken tek şey WebDriver API’ı
indirmektir. API sayesinde projenizin diline göre Java, .NET,
Python, Ruby, PHP, Perl gibi dillerini kullanarak test scriptlerinizi
yazılabilir. Bu araç daha çok developerlara yöneliktir.
18. 2) Selenium WebDriver
Sistemimizde Java JDK kurulu olmalıdır.
Eclipse kurulu olmalıdır.
Selenium Java Client download edilir.
Jar dosyasi extract edilir.
Eclipse java projesi oluşturulur.
Jar dosyalari proje ye import edilir.
Test class i oluşturulur.
package test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class TestClass {
public static void main(String[] args) {
//Here we initialize the firefox webdriver
WebDriver firefoxDriver=new FirefoxDriver();
//Open the url which we want in firefox
firefoxDriver.get("Http://www.google.com");
}
21. 2) Selenium WebDriver
Daha sonra projeye testlerin yazılacağı bir Class ekleriz. Solution Explorer
eklediğimiz classın içerisine;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox; //Firefox'u kullanmamızı sağlayan namespace
using NUnit.Framework;
[TestFixture()]
public class SeleniumTestSuite
{
[SetUp]
public void RunTest()
{
//Yapılacak testler yazılır.
}
}
22. 2) Selenium WebDriver
Daha sonra projeye testlerin yazılacağı bir Class ekleriz. Solution Explorer
içindeki ilk_test satırının üzerinde;
23. 3) 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.
Geliştirilmeye devam edilmektedir.
24. Sonuçlar:
Büyük çapta web projelerinde milyonlarca sayfa içerdiğinden test maliyeti
kritik önem içermektedir. Test otomasyon araçları bu kapsamda
değerlendirildiğinde çok önemli yer teşkil etmektedir.
Selenium test otomasyon aracı kullanıcılara tarayıcı ve işletim sistemi
farketmeksizin tüm platform/tarayıcılarda test etme imkanı sunduğundan
zaman ve iş gücü maliyetini önemli ölçüde azaltmaktadır.
Kullanıcıların çok sayıda giriş yapmaları gerken durumlarda kullanım
kolaylığı sağlayarak zamandan çok büyük ölçüde tasarruf ve test kolaylığı
sağlamaktadır.
Çeşitli test senaryolarını çok kısa süre içerisinde otomatik bir şekilde test
edebilme imkanı sağlamaktadır.
25. Referanslar
Kaur H., Gagan G., “Comparative Study of Automated Testing Tools:
Selenium, Quick Test Professional and Testcomplete”, 2013,
ISSN:22489622, Volume 3, Issue 5, 1739 - 1743
http://www.seleniumhq.org/
https://en.wikipedia.org/wiki/Selenium_software
https://en.wikipedia.org/wiki/Web_testing
Editor's Notes
#14:5. satırda yer alan “clickAndWait” komutu “dropmenudiv” id’li div’e ulaşmaya çalışıyor fakat “Bana Özel” sayfasında ki bu div JavaScript ile “Üyeliğim” linkinin üzerine geldiğimizde oluşturuluyor. Mouse’un “Üyeliğim” linkinin üzerine gitmesi gerektiğini kodumuza eklemeliyiz.
Bu tip JavaScript kökenli problemleri çözdükten sonra sayfalarda ki kontrolleri yapmamız gerekiyor. Login olduktan sonra gittiğimiz sayfada “Bana Özel” yazıp yazmadığının kontrolü için “assertTextPresent” komutunu kullanmamız gerekir. “TC Kimlik No” girildikten sonra sayfada hata oluşup oluşmadığını görmek için de aynı komutu kullanmalıyız.
#15:5. satırda yer alan “clickAndWait” komutu “dropmenudiv” id’li div’e ulaşmaya çalışıyor fakat “Bana Özel” sayfasında ki bu div JavaScript ile “Üyeliğim” linkinin üzerine geldiğimizde oluşturuluyor. Mouse’un “Üyeliğim” linkinin üzerine gitmesi gerektiğini kodumuza eklemeliyiz.
Bu tip JavaScript kökenli problemleri çözdükten sonra sayfalarda ki kontrolleri yapmamız gerekiyor. Login olduktan sonra gittiğimiz sayfada “Bana Özel” yazıp yazmadığının kontrolü için “assertTextPresent” komutunu kullanmamız gerekir. “TC Kimlik No” girildikten sonra sayfada hata oluşup oluşmadığını görmek için de aynı komutu kullanmalıyız.
#16:5. satırda yer alan “clickAndWait” komutu “dropmenudiv” id’li div’e ulaşmaya çalışıyor fakat “Bana Özel” sayfasında ki bu div JavaScript ile “Üyeliğim” linkinin üzerine geldiğimizde oluşturuluyor. Mouse’un “Üyeliğim” linkinin üzerine gitmesi gerektiğini kodumuza eklemeliyiz.
Bu tip JavaScript kökenli problemleri çözdükten sonra sayfalarda ki kontrolleri yapmamız gerekiyor. Login olduktan sonra gittiğimiz sayfada “Bana Özel” yazıp yazmadığının kontrolü için “assertTextPresent” komutunu kullanmamız gerekir. “TC Kimlik No” girildikten sonra sayfada hata oluşup oluşmadığını görmek için de aynı komutu kullanmalıyız.