23
Selenium İle Web Uygulama Testlerini Otomatikleştirmek

Selenium

Embed Size (px)

DESCRIPTION

Özgür Web Teknolojileri Günleri 2012'de yaptığım "Selenium ile Web Uygulaması Testlerini Otomatikleştirmek" sunumu

Citation preview

Page 1: Selenium

Selenium İle Web Uygulama Testlerini Otomatikleştirmek

Page 2: Selenium

“Web Test/QA Engineer“ nedir, ne iş yapar?

?

Page 3: Selenium

“Web Test/QA Engineer“ nedir, ne iş yapar?

Her deployment sonrasında, tüm siteyi, daha önce test etmiş olmasına rağmen bir kez daha elle gezen, test eden, bu işlemi desteklenen tüm tarayıcılar, işletim sistemleri ve cihazlar için tekrarlayan, oluşan hataları bıkmadan usanmadan raporlayan sabırlı canlılar.

Page 4: Selenium

“Web Test/QA Engineer“ nedir, ne iş yapar?

Her deployment sonrasında, tüm siteyi, daha önce test etmiş olmasına rağmen bir kez daha elle gezen, test eden, bu işlemi desteklenen tüm tarayıcılar, işletim sistemleri ve cihazlar için tekrarlayan, oluşan hataları bıkmadan usanmadan raporlayan sabırlı canlılar.

Quality “Assurance“?

Page 5: Selenium

“Web Test/QA Engineer“ nedir, ne iş yapar?

Her deployment sonrasında, tüm siteyi, daha önce test etmiş olmasına rağmen bir kez daha elle gezen, test eden, bu işlemi desteklenen tüm tarayıcılar, işletim sistemleri ve cihazlar için tekrarlayan, oluşan hataları bıkmadan usanmadan raporlayan sabırlı canlılar.

Quality “Assurance“ = Kalite “Güvencesi“ / “Teminatı“

Page 6: Selenium

“Web Test/QA Engineer“ nedir, ne iş yapar?

Her deployment sonrasında, tüm siteyi, daha önce test etmiş olmasına rağmen bir kez daha elle gezen, test eden, bu işlemi desteklenen tüm tarayıcılar, işletim sistemleri ve cihazlar için tekrarlayan, oluşan hataları bıkmadan usanmadan raporlayan sabırlı canlılar.

Quality “Assurance“ = Kalite “Güvencesi“ / “Teminatı“

Proje yönetimi tarafından belirlenen spec'leri doğrulayan "otomatize" testleri development ekibiyle birlikte hareket ederek yazan, ve daha sonra o bölüm değişmediği sürece o bölümü bir daha test etme gereği duymayan, kalan boş zamanlarında kahvesini alıp komikli kedi videoları izleyen, videolardan sıkılınca kendini geliştiren, sistemi daha sağlam olmasını "temenni eden" testler hazırlayan, bilge canlılar.

Page 7: Selenium

Bu sunumda ne yapmak istiyoruz?

İnsan katmanını aradan çıkarıp,onların ekmeğini elinden almak

Zaaa XD

Page 8: Selenium

Bu sunumda ne yapmak istiyoruz?

Aynı şeyleri tekrar tekrar test eden insanları, “kararlı sistemleri temenni eden mühendislere“

dönüştürmek <3

İnsan katmanını aradan çıkarıp,onların ekmeğini elinden almak

Zaaa XD

Page 9: Selenium

“Agile Testing“

Testi olmayan süreç, agile süreç midir?

Page 10: Selenium

“Agile Testing“

Testi olmayan süreç, agile süreç midir?

● Test, yazılım geliştirme yaşam döngüsünün(SDLC) bir parçası olmalıdır.

● Regression testler hayat kurtarır

● Continous Integration araçları

● Jenkins

● Hudson

● Cruise Control

Page 11: Selenium

Selenium nedir?

● Jason Huggins tarafından ThoughtWorks'de doğmuştur

● Tarayıcıda çalışır

● Bu sayede son kullanıcı davranışlarını birebir simüle etme imkanı tanır.

● Tüm güncel tarayıcılarda + iphone ve android'de de çalışır

● Fonksiyonel, regression ve yük testleri(*) yapılabilir

● Açık kaynak kodlu, özgür bir yazılımdır (Apache 2.0)

● Ücretsizdir

Page 12: Selenium

Selenium 2.x

● Selenium önceki sürümlerde, Selenium RC ile beraber kullanılıp, tarayıcıya

BrowserBot enjekte ediyordu.

● BrowserBot bir JavaScript, dolayısıyla JavaScript'in sınırları dışına çıkılamıyordu

● Modal pencereler

● Same Origin Policy

● Daha sonra Webdriver doğdu

● BrowserBot'un yaptığı işleri tarayıcıların sağladığı API'lar ile yapabilmek için

● Şimdilerde bir W3 Draft

● Daha temiz bir API

Page 13: Selenium

Flash/Flex testleri

Selenium, bazı eklentilerle, Flash/Flex uygulamalarının testlerine de imkan tanır

● http://code.google.com/p/flash-selenium/

● http://code.google.com/p/flex-ui-selenium

Page 14: Selenium

Selenium alternatifleri?

●HP QTP

●Borland SilkTest

●Watir → WatiX

●Canoo

Page 15: Selenium

Bölümleri

● Selenium Core

● Selenium RC / Selenium Webdriver

● Selenium Grid (Cloud? SouceLabs?)

● Selenium IDE

● Selenium Domain Specific Language (Selenese)

Page 16: Selenium

Komutlar

● Sayfa komutları → “Sayfa aç“ gibi komutlar

● Element komutları → Sayfadaki öğeyi bulma ilgili komutlar

● Verification komutları → verifyTitle(“fooBar“)

● Assertion komutları → assertTitle( “fooBar“)

Page 17: Selenium

Element bulma yöntemleri (Locator)

● id=foo → ID seçici

● name=foo → Form öğeleri için isme göre seçici

● link=Devam → <a href=“foobar“>Devam</a> için seçici

● //div/a → XPath seçici (IE'de sorunlu, Dinamik DOM)

● dom=document.getElementById('foo') → DOM seçici

● css=foo[name*=foo] → CSS Seçici

Page 18: Selenium

Selenium IDE (Firefox Eklentisi)

● Basitçe kullanıcı davranışlarını kayıt ediyor/oynatıyor

● Hızlıca fonskiyonel testler yazmak için kullanılabilir

● Birçok farklı dil için çıktı verebiliyor

● Selenese üretiyor

● Bir çok fonksiyon yok

● Sadece Firefox için var :(

Page 19: Selenium

Selenium IDE (Firefox Eklentisi)

● Basitçe kullanıcı davranışlarını kayıt ediyor/oynatıyor

● Hızlıca fonskiyonel testler yazmak için kullanılabilir

● Birçok farklı dil için çıktı verebiliyor

● Selenese üretiyor

● Bir çok fonksiyon yok

● Sadece Firefox için var :(

Page 20: Selenium

“Selenium in action!“

Bir e-posta kayıt formu düşünün

● Bir e-posta girilmemişse "Lütfen bir e-posta adresi girin" uyarısı çıkarılır

● Geçersiz bir e-posta girilmişse "Lütfen geçerli bir e-posta adresi girin" uyarısı çıkarılır

● E-posta alanına sadece @sonsuzdongu.com e-posta adresleri kabul edilir, başka

●uzantılı bir adres varsa "İzin verilmiyor" diye hata mesajı gösterilir

● E-posta kaydı başarılı ise "E-posta adresiniz başarıyla kaydedilmiştir" mesajı gösterilir

http://sonsuzdongu.github.com/owtg-2012-selenium/

Page 21: Selenium

http://sonsuzdongu.github.com/owtg-2012-selenium/

Page 22: Selenium

Sorular?

?

Page 23: Selenium

http://sonsuzdongu.com

http://github.com/sonsuzdongu

http://twitter.com/sonsuzdongucom

http://facebook.com/sonsuzdongucom

http://yuxel.net

http://github.com/yuxel

http://twitter.com/yuxel

http://facebook.com/osman.yuksel

Teşekkürler