Websites testen met Selenium
-
Upload
bart-hanssens -
Category
Internet
-
view
73 -
download
1
Transcript of Websites testen met Selenium
Geautomatiseerd websites testen met SeleniumFedict – Brussel – 12 dec 2014
p. 2
Agenda
Websites testen
(Demo)
Componenten
Selenium
Vragen
© Fedict 2013. All rights reserved
Websites testen
p. 4
Verschillende soorten (complementair)
Schaalbaarheid / load testing Vb: JMeter
Beveiliging
Toegankelijkheid Vb: AnySurfer
Valideren HTML Vb: W3C Markup Validator
Via browser / eindgebruiker test Vb: Selenium
© Fedict 2013. All rights reserved
Demo
p. 6
Rapport
p. 7
Screenshots en video
p. 8
Beschikbare (Drupal) testen
Algemeen IP nummer, RSS-feed
Screenshots nemen per taal Homepage, pagina's hoofdmenu
Taalkeuze Controleren woorden op gekozen pagina
Zoekopdrachten per taal Controle aantal resultaten, woorden in resultaten
Inloggen
p. 9
Uitbreiden testen
Momenteel Fast2Web Drupal sites Automatisch gestart via cron job 10 à 30 minuten per site 10 à 50 MB video / screenshots per site
Bijkomende site: < 1 uur configuratie + testen
p. 10
Uitbreiden testen (2)
Bijkomende testen schrijven kan langer duren “Trial and error” en/of opnemen stappen
Niet gebonden aan Drupal
Hangt vooral af van hoe generiek een site is Gegenereerde HTML code / CSS-classes
p. 11
Componenten
Goedkope Linux server (< 10 EUR/maand) Vb: EuroVPS, Hetzner, Webtropia
Selenium (open source) Test software
Nosetest en Splinter (open source) Eenvoudiger maken testscripts
Xvfb, ffmpeg en Beheaded (open source) Recording zonder beeldscherm
Kennis van Python, basiskenis HTML / CSS
Selenium
p. 13
Selenium
Automatiseren browser acties Niet bedoeld voor load testing, HTML validaties...
Open source http://www.seleniumhq.org
Verzameling tools Selenium IDE (Firefox plugin) (Selenium Remote Control) Selenium WebDriver Selenium Grid (testen op meerdere servers tegelijk)
p. 14
Selenium Web Driver
Sturen browser Openen en sluiten browser Openen pagina, klikken op buttons, invullen velden, ... Testen van aanwezigheid elementen, tekst ...
Ondersteuning voor meerdere browsers Firefox 3.6+, HTMLUnit Chrome 12+, IE 7+, Opera 8+ IOS, Android browser
Via verschillende programmeertalen Java, C#, Python, Ruby (3rd party) PHP, Perl, …
p. 15
Voorbeeld (Python)
from selenium import webdriver
browser = webdriver.Firefox()browser.get('http://some.example/user')
elem = browser.find_element_by_id('edit-name')elem.send_keys('UserName')elem = browser.find_element_by_id('edit-pass')elem.send_keys('SecretPassword')
elem = browser.find_element_by_id('button-submit')elem.click()
browser.quit()
p. 16
Enkele mogelijkheden
Navigatie Pagina's laden, page history Navigeren naar frames, windows, alert dialogs
Invullen formulieren Tekstvelden, select, ...
Zoeken specifieke HTML-elementen Via attributen ID, class, name Via naam, CSS selector, XPath Linken: via (zichtbare) tekst van link
Javascript, cookies, ...
p. 17
Beperkingen
Geen toegang tot onzichtbare elementen Vb: <input type=”hidden”> => “Echte” gebruiker heeft dit ook niet
Geen HTTP authentication / .htaccess Verschilt per browser / pop-up schermen invullen
Proxy configureren verschilt per browser
Overige componenten
p. 19
Overzicht
Python
(Iets) eenvoudigere API dan Selenium
Abstractie PhantomJS / Selenium / Zope.testbrowser
Testen of bepaald element wel/niet aanwezig is Via naam, ID, XPath, …
Testen of bepaalde tekst wel/niet aanwezig is
Functies voor pagina titel / url / HTML code
p. 20
Nose
Makkelijker maken unit testing Setup / teardown Timed Assert true / false / equals / …
Plugins HTML rapport
Vragen ?
p. 22
Enkele linken
http://www.seleniumhq.org
http://selenium-python.readthedocs.org
https://splinter.readthedocs.org
https://nose.readthedocs.org
Bedankt !Bart Hanssens / FedictSimon Bolivarlaan 301000 Brussel, [email protected] [at] fedict.be | www.fedict.belgium.be