SlideShare a Scribd company logo
Geautomatiseerd websites
testen met Selenium
Fedict – 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 / Fedict
Simon Bolivarlaan 30
1000 Brussel, Belgium
@BartHanssens
bart.hanssens [at] fedict.be | www.fedict.belgium.be

More Related Content

PPT
Joomla 1.6 the Highlights (in Dutch)
PDF
Appium & Robot Framework
PDF
Appium: Automation for Mobile Apps
PPTX
Automation Testing by Selenium Web Driver
PPTX
OpenFed, a Drupal distribution
PPTX
Open Summer of Code in Belgium
PPTX
Open Belgium 2022: Prepare To Code
PPTX
Werkgroep metadata: INSPIRE - DCAT-AP mapping
Joomla 1.6 the Highlights (in Dutch)
Appium & Robot Framework
Appium: Automation for Mobile Apps
Automation Testing by Selenium Web Driver
OpenFed, a Drupal distribution
Open Summer of Code in Belgium
Open Belgium 2022: Prepare To Code
Werkgroep metadata: INSPIRE - DCAT-AP mapping

More from Bart Hanssens (20)

PPTX
Overzicht DCAT-AP
PPTX
Quarkus, Jib én OpenJ9
PDF
Open Data at the Federal Level 2021
PDF
Open Data workshop Agoria ICT
PDF
Atelier Open Data / Agoria ICT
PPTX
Open Source and Open Data
PDF
Données ouvertes
PDF
Open Data
PPTX
Open Community Projects
PPTX
From webform to API using microframeworks
PPTX
Linked Data: Introductie
PPTX
JavaVMs en GraalVM
PDF
Open data, what's cooking at the federal level 2020
PPTX
BOSA DG DT: opendata et intégrateur de services
PPTX
Local and Regional digital transformation in Belgium
PPTX
Voordeel halen uit zoekmachines en semantic web
PPTX
Presentatie data.gov.be
PDF
Graphs, Stores and API
PDF
Open data, what's cooking at the federal level
PPTX
Data.gov.be (EU Regions Week)
Overzicht DCAT-AP
Quarkus, Jib én OpenJ9
Open Data at the Federal Level 2021
Open Data workshop Agoria ICT
Atelier Open Data / Agoria ICT
Open Source and Open Data
Données ouvertes
Open Data
Open Community Projects
From webform to API using microframeworks
Linked Data: Introductie
JavaVMs en GraalVM
Open data, what's cooking at the federal level 2020
BOSA DG DT: opendata et intégrateur de services
Local and Regional digital transformation in Belgium
Voordeel halen uit zoekmachines en semantic web
Presentatie data.gov.be
Graphs, Stores and API
Open data, what's cooking at the federal level
Data.gov.be (EU Regions Week)
Ad

Websites testen met Selenium

  • 1. Geautomatiseerd websites testen met Selenium Fedict – Brussel – 12 dec 2014
  • 2. p. 2 Agenda  Websites testen  (Demo)  Componenten  Selenium  Vragen
  • 3. © Fedict 2013. All rights reserved Websites testen
  • 4. 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
  • 5. © Fedict 2013. All rights reserved Demo
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 13. 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)
  • 14. 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, …
  • 15. 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()
  • 16. 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, ...
  • 17. 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
  • 19. 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
  • 20. p. 20 Nose  Makkelijker maken unit testing  Setup / teardown  Timed  Assert true / false / equals / …  Plugins  HTML rapport
  • 22. p. 22 Enkele linken  http://www.seleniumhq.org  http://selenium-python.readthedocs.org  https://splinter.readthedocs.org  https://nose.readthedocs.org
  • 23. Bedankt ! Bart Hanssens / Fedict Simon Bolivarlaan 30 1000 Brussel, Belgium @BartHanssens bart.hanssens [at] fedict.be | www.fedict.belgium.be