Suche senden
Hochladen
Websites testen met Selenium en Behave
•
Als ODP, PDF herunterladen
•
0 gefällt mir
•
758 views
Bart Hanssens
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 30
Jetzt herunterladen
Empfohlen
Websites testen met Selenium
Websites testen met Selenium
Bart Hanssens
PXL opendata portalen
PXL opendata portalen
Bart Hanssens
HTML 5 en CSS 3
HTML 5 en CSS 3
Bart Hanssens
HTML5 Overview
HTML5 Overview
Maurice De Beijer [MVP]
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
Pureplexity
Documentbeheer continue verbetering dirkvan pamel
Documentbeheer continue verbetering dirkvan pamel
Kelly Adegeest
Sijmen Ruwhof - Geautomatiseerd website vulnerability management
Sijmen Ruwhof - Geautomatiseerd website vulnerability management
PFCongres
Starten met geautomatiseerd testen - SDN 2013
Starten met geautomatiseerd testen - SDN 2013
Delta-N
Empfohlen
Websites testen met Selenium
Websites testen met Selenium
Bart Hanssens
PXL opendata portalen
PXL opendata portalen
Bart Hanssens
HTML 5 en CSS 3
HTML 5 en CSS 3
Bart Hanssens
HTML5 Overview
HTML5 Overview
Maurice De Beijer [MVP]
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
Pureplexity
Documentbeheer continue verbetering dirkvan pamel
Documentbeheer continue verbetering dirkvan pamel
Kelly Adegeest
Sijmen Ruwhof - Geautomatiseerd website vulnerability management
Sijmen Ruwhof - Geautomatiseerd website vulnerability management
PFCongres
Starten met geautomatiseerd testen - SDN 2013
Starten met geautomatiseerd testen - SDN 2013
Delta-N
WSO2 Mashup Server
WSO2 Mashup Server
Nils Breunese
Flex In De Praktijk
Flex In De Praktijk
marcel panse
Mijn eerste Joomla! plugin
Mijn eerste Joomla! plugin
StudioDeOorzaak
The Rails way
The Rails way
Luis Doubrava
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele tests
Richard Tuin
Drupal Uitgebreide Starters Training
Drupal Uitgebreide Starters Training
Luciuswebsystems
Html5 App
Html5 App
herman van dompseler
Expert Sessie: Joomla Usability: Plugins
Expert Sessie: Joomla Usability: Plugins
Yireo
XPages Introductie
XPages Introductie
Rob Bontekoe
Demo Juwelier applicatie
Demo Juwelier applicatie
dd354
Ict2 trm- werking internet
Ict2 trm- werking internet
kaatversele
Introductie Drupal development
Introductie Drupal development
Bart Hanssens
Presentatie joomladagen 2017
Presentatie joomladagen 2017
Teeuwis Hillebrand
OpenFed, a Drupal distribution
OpenFed, a Drupal distribution
Bart Hanssens
Open Summer of Code in Belgium
Open Summer of Code in Belgium
Bart Hanssens
Open Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To Code
Bart Hanssens
Werkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mapping
Bart Hanssens
Overzicht DCAT-AP
Overzicht DCAT-AP
Bart Hanssens
Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9
Bart Hanssens
Open Data at the Federal Level 2021
Open Data at the Federal Level 2021
Bart Hanssens
Open Data workshop Agoria ICT
Open Data workshop Agoria ICT
Bart Hanssens
Atelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICT
Bart Hanssens
Weitere ähnliche Inhalte
Ähnlich wie Websites testen met Selenium en Behave
WSO2 Mashup Server
WSO2 Mashup Server
Nils Breunese
Flex In De Praktijk
Flex In De Praktijk
marcel panse
Mijn eerste Joomla! plugin
Mijn eerste Joomla! plugin
StudioDeOorzaak
The Rails way
The Rails way
Luis Doubrava
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele tests
Richard Tuin
Drupal Uitgebreide Starters Training
Drupal Uitgebreide Starters Training
Luciuswebsystems
Html5 App
Html5 App
herman van dompseler
Expert Sessie: Joomla Usability: Plugins
Expert Sessie: Joomla Usability: Plugins
Yireo
XPages Introductie
XPages Introductie
Rob Bontekoe
Demo Juwelier applicatie
Demo Juwelier applicatie
dd354
Ict2 trm- werking internet
Ict2 trm- werking internet
kaatversele
Introductie Drupal development
Introductie Drupal development
Bart Hanssens
Presentatie joomladagen 2017
Presentatie joomladagen 2017
Teeuwis Hillebrand
Ähnlich wie Websites testen met Selenium en Behave
(13)
WSO2 Mashup Server
WSO2 Mashup Server
Flex In De Praktijk
Flex In De Praktijk
Mijn eerste Joomla! plugin
Mijn eerste Joomla! plugin
The Rails way
The Rails way
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele tests
Drupal Uitgebreide Starters Training
Drupal Uitgebreide Starters Training
Html5 App
Html5 App
Expert Sessie: Joomla Usability: Plugins
Expert Sessie: Joomla Usability: Plugins
XPages Introductie
XPages Introductie
Demo Juwelier applicatie
Demo Juwelier applicatie
Ict2 trm- werking internet
Ict2 trm- werking internet
Introductie Drupal development
Introductie Drupal development
Presentatie joomladagen 2017
Presentatie joomladagen 2017
Mehr von Bart Hanssens
OpenFed, a Drupal distribution
OpenFed, a Drupal distribution
Bart Hanssens
Open Summer of Code in Belgium
Open Summer of Code in Belgium
Bart Hanssens
Open Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To Code
Bart Hanssens
Werkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mapping
Bart Hanssens
Overzicht DCAT-AP
Overzicht DCAT-AP
Bart Hanssens
Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9
Bart Hanssens
Open Data at the Federal Level 2021
Open Data at the Federal Level 2021
Bart Hanssens
Open Data workshop Agoria ICT
Open Data workshop Agoria ICT
Bart Hanssens
Atelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICT
Bart Hanssens
Open Source and Open Data
Open Source and Open Data
Bart Hanssens
Données ouvertes
Données ouvertes
Bart Hanssens
Open Data
Open Data
Bart Hanssens
Open Community Projects
Open Community Projects
Bart Hanssens
From webform to API using microframeworks
From webform to API using microframeworks
Bart Hanssens
Linked Data: Introductie
Linked Data: Introductie
Bart Hanssens
JavaVMs en GraalVM
JavaVMs en GraalVM
Bart Hanssens
Open data, what's cooking at the federal level 2020
Open data, what's cooking at the federal level 2020
Bart Hanssens
BOSA DG DT: opendata et intégrateur de services
BOSA DG DT: opendata et intégrateur de services
Bart Hanssens
Local and Regional digital transformation in Belgium
Local and Regional digital transformation in Belgium
Bart Hanssens
Voordeel halen uit zoekmachines en semantic web
Voordeel halen uit zoekmachines en semantic web
Bart Hanssens
Mehr von Bart Hanssens
(20)
OpenFed, a Drupal distribution
OpenFed, a Drupal distribution
Open Summer of Code in Belgium
Open Summer of Code in Belgium
Open Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To Code
Werkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mapping
Overzicht DCAT-AP
Overzicht DCAT-AP
Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9
Open Data at the Federal Level 2021
Open Data at the Federal Level 2021
Open Data workshop Agoria ICT
Open Data workshop Agoria ICT
Atelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICT
Open Source and Open Data
Open Source and Open Data
Données ouvertes
Données ouvertes
Open Data
Open Data
Open Community Projects
Open Community Projects
From webform to API using microframeworks
From webform to API using microframeworks
Linked Data: Introductie
Linked Data: Introductie
JavaVMs en GraalVM
JavaVMs en GraalVM
Open 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 services
Local 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 web
Websites testen met Selenium en Behave
1.
Websites testen met Behave
en Selenium Fedict – Brussel – 11 oktober 2013 © Fedict 2013. All rights reserved
2.
Agenda © Fedict 2013.
All rights reserved
3.
Agenda Websites testen Selenium Splinter Behave (Demo) Vragen © Fedict
2013. All rights reserved | p. 3
4.
Websites testen © Fedict
2013. All rights reserved
5.
Verschillende soorten (complementair) Schaalbaarheid
/ load testing Vb: JMeter Beveiliging Toegankelijkheid Valideren HTML Vb: AnySurfer Vb: W3C Markup Validator Via browser / eindgebruiker test Vb: Selenium © Fedict 2013. All rights reserved | p. 5
6.
Selenium © Fedict 2013.
All rights reserved
7.
Selenium Automatiseren browser acties Open
source Niet bedoeld voor load testing, HTML validaties... http://www.seleniumhq.org Verzameling tools Selenium IDE (Firefox plugin) (Selenium Remote Control) Selenium WebDriver Selenium Grid (testen op meerdere servers tegelijk) © Fedict 2013. All rights reserved | p. 7
8.
Selenium Web Driver Sturen
browser Ondersteuning voor meerdere browsers Openen en sluiten browser Openen pagina, klikken op buttons, invullen velden, ... Testen van aanwezigheid elementen, tekst ... Firefox 3.6+, HTMLUnit Chrome 12+, IE 7+, Opera 8+ IOS, Android browser Via verschillende programmeertalen Java, C#, Python, Ruby (3rd party) PHP, Perl, … © Fedict 2013. All rights reserved | p. 8
9.
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() © Fedict 2013. All rights reserved | p. 9
10.
Enkele mogelijkheden Navigatie Invullen formulieren Tekstvelden,
select, ... Zoeken specifieke HTML-elementen Pagina's laden, page history Navigeren naar frames, windows, alert dialogs Via attributen ID, class, name Via naam, CSS selector, XPath Linken: via (zichtbare) tekst van link Javascript, cookies, ... © Fedict 2013. All rights reserved | p. 10
11.
Beperkingen Geen toegang tot
onzichtbare elementen Geen HTTP authentication / .htaccess Vb: <input type=”hidden”> => “Echte” gebruiker heeft dit ook niet Verschilt per browser / pop-up schermen invullen Proxy configureren verschilt per browser © Fedict 2013. All rights reserved | p. 11
12.
Best practice: “Page
Objects” Extra abstractie Nadeel Scheiden applicatie-logica en HTML-elementen Vb: “LoginPage” object Extra werk vooraf (zelf te programmeren) Voordelen Bevordert hergebruik Minder werk als HTML-code pagina wijzigt © Fedict 2013. All rights reserved | p. 12
13.
Voorbeeld Page Object
gebruiken from selenium import webdriver from myexample import LoginPage browser = webdriver.Firefox() page = LoginPage(browser, 'http://some.example/user') page.login('Username', 'Password') browser.quit() © Fedict 2013. All rights reserved | p. 13
14.
Voorbeeld Page Object
(LoginPage) from selenium import webdriver def login(self, username, password): browser = self.browser elem = browser.find_element_by_id('name') elem.send_keys(username) elem = browser.find_element_by_id('pass') elem.send_keys(password) elem = browser.find_element_by_id('button-submit') elem.click() def __init__(self, browser, url): self.browser = browser browser.get(url) © Fedict 2013. All rights reserved | p. 14
15.
Splinter © Fedict 2013.
All rights reserved
16.
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 © Fedict 2013. All rights reserved | p. 16
17.
Voorbeeld from splinter import
Browser browser = Browser() Browser.visit('http://some.example/user') browser.fill('name', 'MyUserName') browser.fill('pass', 'SecretPassword') elem = browser.find_by_id('button-submit') elem.first.click() browser.quit() © Fedict 2013. All rights reserved | p. 17
18.
Behave © Fedict 2013.
All rights reserved
19.
Behavior Driven Development
(BDD) “Agile” ontwikkeling “Leesbare” test cases Samenwerking business / techies Tools voor verschillende programmeertalen Python: Behave Java: JBehave, Spock, Instinct … Javascript: Jasmine Ruby: Cucumber, RSpec, ... © Fedict 2013. All rights reserved | p. 19
20.
Behave Python Bechrijven testen in
tekst files Automatisch uitvoeren Features, Scenarios, Steps Command line / integratie IDE of andere tools Rapportering Console, JUnit rapport, eigen log file ... © Fedict 2013. All rights reserved | p. 20
21.
Features, Scenarios, Steps Testen
van “Feature”s Via een of meer “Scenario”s Vb: inloggen op een website Met correcte / verkeerde username ... Elk scenario bevat meerdere “Step”s Ga naar website, log in, controleer … Worden door programmeur gekoppeld aan code © Fedict 2013. All rights reserved | p. 21
22.
Voorbeeld Feature met
Scenarios, Steps Feature: testing the login form of The Example website Scenario: log in with invalid users Given the website "some.example" When I log in with user "invalid" and password "wrong" Then an error message must be displayed Scenario: log in with valid user Given the website "some.example" When I log in with user "valid" and password "correct" Then the connection must be secured And a welcome message must be displayed © Fedict 2013. All rights reserved | p. 22
23.
Steps: Given, When,
Then, And Worden gekoppeld aan code / functies Via annotaties Alles na “Given” is eigenlijk een verwijzing Parameters zijn mogelijk Worden uit tekst gehaald via “gewone” match of regexp Ook een (tekst) tabel is mogelijk © Fedict 2013. All rights reserved | p. 23
24.
Voorbeeld implementatie Step from
splinter import Browser from myexample import LoginPage @given('the website “{url}”') def step_impl(self, url): self.homepage = url @when('I log in with user “{user}” and password “{pwd}”') def step_impl(self, user, pwd): page = LoginPage(self.browser, self.homepage) page.login(user, pwd) @then('the connection must be secured') def step_impl(self): assert self.browser.url.startswith('https') © Fedict 2013. All rights reserved | p. 24
25.
Voorbeeld complexere Step Feature:
testing the login form of The Example website Scenario: log in with several invalid users Given the website "some.example" When I log in with an invalid username or password | username | password | | correct | wrong | | wrong | wrong | Then an error message must be displayed “”” Invalid username or password. Please try again. “”” © Fedict 2013. All rights reserved | p. 25
26.
Enkele handige functionaliteiten Selecteren
van uit te voeren Scenarios Environment file Via zelf te definiëren tags Vb: @nl, @https, @mobile Voor en/of na elke Feature en/of Scenario en/of Step Vb: starten / afsluiten browser “Work in Progress” mode Stopt bij eerste fout Geen error log naar console © Fedict 2013. All rights reserved | p. 26
27.
Voorbeeld Environment from splinter
import Browser def before_all(self): profile = { 'network.proxy.type': 1, 'network.proxy.http': 'myproxy.example', 'network.proxy.http_port': 8080 } self.browser = Browser('firefox', profile_preferences=profile) def after_all(self): self.browser.quit() © Fedict 2013. All rights reserved | p. 27
28.
Vragen ? © Fedict
2013. All rights reserved
29.
Enkele linken http://www.w3.org/TR/webdriver http://www.seleniumhq.org http://selenium-python.readthedocs.org http://splinter.cobrateam.info http://pythonhosted.org/behave https://saucelabs.com © Fedict
2013. All rights reserved | p. 29
30.
Bedankt ! Bart Hanssens
/ Fedict Maria-Theresiastraat 1 1000 Brussel, Belgium @BartHanssens bart.hanssens [at] fedict.be | www.fedict.belgium.be © Fedict 2013. All rights reserved
Jetzt herunterladen