Websites testen met Selenium
-
Author
bart-hanssens -
Category
Internet
-
view
72 -
download
1
Embed Size (px)
Transcript of Websites testen met Selenium
Geautomatiseerd websites testen met Selenium
Geautomatiseerd websites testen met Selenium
Fedict Brussel 12 dec 2014
Agenda
Websites testen
(Demo)
Componenten
Selenium
Vragen
Websites testen
Verschillende soorten (complementair)
Schaalbaarheid / load testingVb: JMeter
Beveiliging
ToegankelijkheidVb: AnySurfer
Valideren HTMLVb: W3C Markup Validator
Via browser / eindgebruiker testVb: Selenium
Demo
Rapport
Screenshots en video
Beschikbare (Drupal) testen
AlgemeenIP nummer, RSS-feed
Screenshots nemen per taalHomepage, pagina's hoofdmenu
TaalkeuzeControleren woorden op gekozen pagina
Zoekopdrachten per taalControle aantal resultaten, woorden in resultaten
Inloggen
Uitbreiden testen
Momenteel Fast2Web Drupal sitesAutomatisch gestart via cron job
10 30 minuten per site
10 50 MB video / screenshots per site
Bijkomende site: < 1 uur configuratie + testen
Uitbreiden testen (2)
Bijkomende testen schrijven kan langer durenTrial and error en/of opnemen stappen
Niet gebonden aan Drupal
Hangt vooral af van hoe generiek een site isGegenereerde HTML code / CSS-classes
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
Selenium
Automatiseren browser actiesNiet bedoeld voor load testing, HTML validaties...
Open sourcehttp://www.seleniumhq.org
Verzameling toolsSelenium IDE (Firefox plugin)
(Selenium Remote Control)
Selenium WebDriver
Selenium Grid (testen op meerdere servers tegelijk)
Selenium Web Driver
Sturen browserOpenen 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 programmeertalenJava, C#, Python, Ruby
(3rd party) PHP, Perl,
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()
Enkele mogelijkheden
NavigatiePagina's laden, page history
Navigeren naar frames, windows, alert dialogs
Invullen formulierenTekstvelden, select, ...
Zoeken specifieke HTML-elementenVia attributen ID, class, name
Via naam, CSS selector, XPath
Linken: via (zichtbare) tekst van link
Javascript, cookies, ...
Beperkingen
Geen toegang tot onzichtbare elementenVb:
=> Echte gebruiker heeft dit ook niet
Geen HTTP authentication / .htaccessVerschilt per browser / pop-up schermen invullen
Proxy configureren verschilt per browser
Overige componenten
Overzicht
Python
(Iets) eenvoudigere API dan Selenium
AbstractiePhantomJS / Selenium / Zope.testbrowser
Testen of bepaald element wel/niet aanwezig isVia naam, ID, XPath,
Testen of bepaalde tekst wel/niet aanwezig is
Functies voor pagina titel / url / HTML code
Nose
Makkelijker maken unit testingSetup / teardown
Timed
Assert true / false / equals /
PluginsHTML rapport
Vragen ?
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
p.
Fedict 2013. All rights reserved | p.
Fedict 2013. All rights reserved
Fedict 2013. All rights reserved
Fedict 2013. All rights reserved
Fedict 2013. All rights reserved