Download - Websites testen met Selenium

Transcript
Page 1: Websites testen met Selenium

Geautomatiseerd websites testen met SeleniumFedict – Brussel – 12 dec 2014

Page 2: Websites testen met Selenium

p. 2

Agenda

Websites testen

(Demo)

Componenten

Selenium

Vragen

Page 3: Websites testen met Selenium

© Fedict 2013. All rights reserved

Websites testen

Page 4: Websites testen met Selenium

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

Page 5: Websites testen met Selenium

© Fedict 2013. All rights reserved

Demo

Page 6: Websites testen met Selenium

p. 6

Rapport

Page 7: Websites testen met Selenium

p. 7

Screenshots en video

Page 8: Websites testen met Selenium

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

Page 9: Websites testen met Selenium

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

Page 10: Websites testen met Selenium

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

Page 11: Websites testen met Selenium

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

Page 12: Websites testen met Selenium

Selenium

Page 13: Websites testen met 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)

Page 14: Websites testen met Selenium

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, …

Page 15: Websites testen met Selenium

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()

Page 16: Websites testen met Selenium

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, ...

Page 17: Websites testen met Selenium

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

Page 18: Websites testen met Selenium

Overige componenten

Page 19: Websites testen met Selenium

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

Page 20: Websites testen met Selenium

p. 20

Nose

Makkelijker maken unit testing Setup / teardown Timed Assert true / false / equals / …

Plugins HTML rapport

Page 21: Websites testen met Selenium

Vragen ?

Page 22: Websites testen met Selenium

p. 22

Enkele linken

http://www.seleniumhq.org

http://selenium-python.readthedocs.org

https://splinter.readthedocs.org

https://nose.readthedocs.org

Page 23: Websites testen met Selenium

Bedankt !Bart Hanssens / FedictSimon Bolivarlaan 301000 Brussel, [email protected] [at] fedict.be | www.fedict.belgium.be