SlideShare a Scribd company logo
1 of 23
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

Similar to Websites testen met Selenium

Introductie Drupal development
Introductie Drupal developmentIntroductie Drupal development
Introductie Drupal developmentBart Hanssens
 
Drupal Uitgebreide Starters Training
Drupal Uitgebreide Starters TrainingDrupal Uitgebreide Starters Training
Drupal Uitgebreide Starters TrainingLuciuswebsystems
 
Documentbeheer continue verbetering dirkvan pamel
Documentbeheer continue verbetering   dirkvan pamelDocumentbeheer continue verbetering   dirkvan pamel
Documentbeheer continue verbetering dirkvan pamelKelly Adegeest
 
Sijmen Ruwhof - Geautomatiseerd website vulnerability management
Sijmen Ruwhof - Geautomatiseerd website vulnerability managementSijmen Ruwhof - Geautomatiseerd website vulnerability management
Sijmen Ruwhof - Geautomatiseerd website vulnerability managementPFCongres
 
Toegankelijkheid
ToegankelijkheidToegankelijkheid
ToegankelijkheidAtticus
 
Devnology Community Day
Devnology Community DayDevnology Community Day
Devnology Community Dayboonzaai
 
XPages Introductie
XPages IntroductieXPages Introductie
XPages IntroductieRob Bontekoe
 
Lucius Drupal Development Cursus
Lucius Drupal Development CursusLucius Drupal Development Cursus
Lucius Drupal Development CursusLuciuswebsystems
 
Copernica programmeurstraining DMSummit 2010
Copernica programmeurstraining DMSummit 2010Copernica programmeurstraining DMSummit 2010
Copernica programmeurstraining DMSummit 2010Copernica BV
 
General Drupal presentation in Dutch
General Drupal  presentation in DutchGeneral Drupal  presentation in Dutch
General Drupal presentation in DutchRoel Meester
 
Lucius Websystems Drupal Startersdag
Lucius Websystems Drupal StartersdagLucius Websystems Drupal Startersdag
Lucius Websystems Drupal StartersdagLuciuswebsystems
 
Plone add-on packages uit Nederland - Fred van Dijk
Plone add-on packages uit Nederland - Fred van DijkPlone add-on packages uit Nederland - Fred van Dijk
Plone add-on packages uit Nederland - Fred van DijkZest Software
 
Ict2 trm- werking internet
Ict2 trm- werking internetIct2 trm- werking internet
Ict2 trm- werking internet250491
 

Similar to Websites testen met Selenium (20)

Introductie Drupal development
Introductie Drupal developmentIntroductie Drupal development
Introductie Drupal development
 
Fronteers Modern Testing
Fronteers Modern TestingFronteers Modern Testing
Fronteers Modern Testing
 
Drupal Uitgebreide Starters Training
Drupal Uitgebreide Starters TrainingDrupal Uitgebreide Starters Training
Drupal Uitgebreide Starters Training
 
Documentbeheer continue verbetering dirkvan pamel
Documentbeheer continue verbetering   dirkvan pamelDocumentbeheer continue verbetering   dirkvan pamel
Documentbeheer continue verbetering dirkvan pamel
 
Sijmen Ruwhof - Geautomatiseerd website vulnerability management
Sijmen Ruwhof - Geautomatiseerd website vulnerability managementSijmen Ruwhof - Geautomatiseerd website vulnerability management
Sijmen Ruwhof - Geautomatiseerd website vulnerability management
 
Toegankelijkheid
ToegankelijkheidToegankelijkheid
Toegankelijkheid
 
WSO2 Mashup Server
WSO2 Mashup ServerWSO2 Mashup Server
WSO2 Mashup Server
 
Html5 App
Html5 AppHtml5 App
Html5 App
 
Devnology Community Day
Devnology Community DayDevnology Community Day
Devnology Community Day
 
ICT
ICTICT
ICT
 
XPages Introductie
XPages IntroductieXPages Introductie
XPages Introductie
 
Lucius Drupal Development Cursus
Lucius Drupal Development CursusLucius Drupal Development Cursus
Lucius Drupal Development Cursus
 
HTML 5 in een vogelvlucht (Dutch)
HTML 5 in een vogelvlucht (Dutch)HTML 5 in een vogelvlucht (Dutch)
HTML 5 in een vogelvlucht (Dutch)
 
Android
AndroidAndroid
Android
 
Copernica programmeurstraining DMSummit 2010
Copernica programmeurstraining DMSummit 2010Copernica programmeurstraining DMSummit 2010
Copernica programmeurstraining DMSummit 2010
 
General Drupal presentation in Dutch
General Drupal  presentation in DutchGeneral Drupal  presentation in Dutch
General Drupal presentation in Dutch
 
Lucius Websystems Drupal Startersdag
Lucius Websystems Drupal StartersdagLucius Websystems Drupal Startersdag
Lucius Websystems Drupal Startersdag
 
2010 byte joomladagen
2010 byte joomladagen2010 byte joomladagen
2010 byte joomladagen
 
Plone add-on packages uit Nederland - Fred van Dijk
Plone add-on packages uit Nederland - Fred van DijkPlone add-on packages uit Nederland - Fred van Dijk
Plone add-on packages uit Nederland - Fred van Dijk
 
Ict2 trm- werking internet
Ict2 trm- werking internetIct2 trm- werking internet
Ict2 trm- werking internet
 

More from Bart Hanssens

OpenFed, a Drupal distribution
OpenFed, a Drupal distributionOpenFed, a Drupal distribution
OpenFed, a Drupal distributionBart Hanssens
 
Open Summer of Code in Belgium
Open Summer of Code in BelgiumOpen Summer of Code in Belgium
Open Summer of Code in BelgiumBart Hanssens
 
Open Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To CodeOpen Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To CodeBart Hanssens
 
Werkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mappingWerkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mappingBart Hanssens
 
Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9Bart Hanssens
 
Open Data at the Federal Level 2021
Open Data at the Federal Level 2021Open Data at the Federal Level 2021
Open Data at the Federal Level 2021Bart Hanssens
 
Open Data workshop Agoria ICT
Open Data workshop Agoria ICTOpen Data workshop Agoria ICT
Open Data workshop Agoria ICTBart Hanssens
 
Atelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICTAtelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICTBart Hanssens
 
Open Source and Open Data
Open Source and Open DataOpen Source and Open Data
Open Source and Open DataBart Hanssens
 
Open Community Projects
Open Community ProjectsOpen Community Projects
Open Community ProjectsBart Hanssens
 
From webform to API using microframeworks
From webform to API using microframeworksFrom webform to API using microframeworks
From webform to API using microframeworksBart Hanssens
 
Linked Data: Introductie
Linked Data: IntroductieLinked Data: Introductie
Linked Data: IntroductieBart Hanssens
 
Open data, what's cooking at the federal level 2020
Open data, what's cooking at the federal level 2020Open data, what's cooking at the federal level 2020
Open data, what's cooking at the federal level 2020Bart Hanssens
 
BOSA DG DT: opendata et intégrateur de services
BOSA DG DT: opendata et intégrateur de servicesBOSA DG DT: opendata et intégrateur de services
BOSA DG DT: opendata et intégrateur de servicesBart Hanssens
 
Local and Regional digital transformation in Belgium
Local and Regional digital transformation in BelgiumLocal and Regional digital transformation in Belgium
Local and Regional digital transformation in BelgiumBart Hanssens
 
Voordeel halen uit zoekmachines en semantic web
Voordeel halen uit zoekmachines en semantic webVoordeel halen uit zoekmachines en semantic web
Voordeel halen uit zoekmachines en semantic webBart Hanssens
 

More from Bart Hanssens (20)

OpenFed, a Drupal distribution
OpenFed, a Drupal distributionOpenFed, a Drupal distribution
OpenFed, a Drupal distribution
 
Open Summer of Code in Belgium
Open Summer of Code in BelgiumOpen Summer of Code in Belgium
Open Summer of Code in Belgium
 
Open Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To CodeOpen Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To Code
 
Werkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mappingWerkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mapping
 
Overzicht DCAT-AP
Overzicht DCAT-APOverzicht DCAT-AP
Overzicht DCAT-AP
 
Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9
 
Open Data at the Federal Level 2021
Open Data at the Federal Level 2021Open Data at the Federal Level 2021
Open Data at the Federal Level 2021
 
Open Data workshop Agoria ICT
Open Data workshop Agoria ICTOpen Data workshop Agoria ICT
Open Data workshop Agoria ICT
 
Atelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICTAtelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICT
 
Open Source and Open Data
Open Source and Open DataOpen Source and Open Data
Open Source and Open Data
 
Données ouvertes
Données ouvertesDonnées ouvertes
Données ouvertes
 
Open Data
Open DataOpen Data
Open Data
 
Open Community Projects
Open Community ProjectsOpen Community Projects
Open Community Projects
 
From webform to API using microframeworks
From webform to API using microframeworksFrom webform to API using microframeworks
From webform to API using microframeworks
 
Linked Data: Introductie
Linked Data: IntroductieLinked Data: Introductie
Linked Data: Introductie
 
JavaVMs en GraalVM
JavaVMs en GraalVMJavaVMs en GraalVM
JavaVMs en GraalVM
 
Open data, what's cooking at the federal level 2020
Open data, what's cooking at the federal level 2020Open data, what's cooking at the federal level 2020
Open data, what's cooking at the federal level 2020
 
BOSA DG DT: opendata et intégrateur de services
BOSA DG DT: opendata et intégrateur de servicesBOSA DG DT: opendata et intégrateur de services
BOSA DG DT: opendata et intégrateur de services
 
Local and Regional digital transformation in Belgium
Local and Regional digital transformation in BelgiumLocal and Regional digital transformation in Belgium
Local and Regional digital transformation in Belgium
 
Voordeel halen uit zoekmachines en semantic web
Voordeel halen uit zoekmachines en semantic webVoordeel halen uit zoekmachines en semantic web
Voordeel halen uit zoekmachines en semantic web
 

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