Websites testen met Selenium

Post on 11-Jul-2015

72 views 1 download

Transcript of Websites testen met Selenium

Geautomatiseerd websites testen met SeleniumFedict – 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 / FedictSimon Bolivarlaan 301000 Brussel, Belgium@BartHanssensbart.hanssens [at] fedict.be | www.fedict.belgium.be