Websites testen met Selenium

Click here to load reader

  • date post

    11-Jul-2015
  • Category

    Internet

  • view

    72
  • download

    1

Embed Size (px)

Transcript of Websites testen met Selenium

Geautomatiseerd websites testen met Selenium

Geautomatiseerd websites testen met Selenium

Fedict Brussel 12 dec 2014

Agenda

Websites testen

(Demo)

Componenten

Selenium

Vragen

Websites testen

Verschillende soorten (complementair)

Schaalbaarheid / load testingVb: JMeter

Beveiliging

ToegankelijkheidVb: AnySurfer

Valideren HTMLVb: W3C Markup Validator

Via browser / eindgebruiker testVb: Selenium

Demo

Rapport

Screenshots en video

Beschikbare (Drupal) testen

AlgemeenIP nummer, RSS-feed

Screenshots nemen per taalHomepage, pagina's hoofdmenu

TaalkeuzeControleren woorden op gekozen pagina

Zoekopdrachten per taalControle aantal resultaten, woorden in resultaten

Inloggen

Uitbreiden testen

Momenteel Fast2Web Drupal sitesAutomatisch gestart via cron job

10 30 minuten per site

10 50 MB video / screenshots per site

Bijkomende site: < 1 uur configuratie + testen

Uitbreiden testen (2)

Bijkomende testen schrijven kan langer durenTrial and error en/of opnemen stappen

Niet gebonden aan Drupal

Hangt vooral af van hoe generiek een site isGegenereerde HTML code / CSS-classes

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

Selenium

Automatiseren browser actiesNiet bedoeld voor load testing, HTML validaties...

Open sourcehttp://www.seleniumhq.org

Verzameling toolsSelenium IDE (Firefox plugin)

(Selenium Remote Control)

Selenium WebDriver

Selenium Grid (testen op meerdere servers tegelijk)

Selenium Web Driver

Sturen browserOpenen 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 programmeertalenJava, C#, Python, Ruby

(3rd party) PHP, Perl,

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

Enkele mogelijkheden

NavigatiePagina's laden, page history

Navigeren naar frames, windows, alert dialogs

Invullen formulierenTekstvelden, select, ...

Zoeken specifieke HTML-elementenVia attributen ID, class, name

Via naam, CSS selector, XPath

Linken: via (zichtbare) tekst van link

Javascript, cookies, ...

Beperkingen

Geen toegang tot onzichtbare elementenVb:

=> Echte gebruiker heeft dit ook niet

Geen HTTP authentication / .htaccessVerschilt per browser / pop-up schermen invullen

Proxy configureren verschilt per browser

Overige componenten

Overzicht

Python

(Iets) eenvoudigere API dan Selenium

AbstractiePhantomJS / Selenium / Zope.testbrowser

Testen of bepaald element wel/niet aanwezig isVia naam, ID, XPath,

Testen of bepaalde tekst wel/niet aanwezig is

Functies voor pagina titel / url / HTML code

Nose

Makkelijker maken unit testingSetup / teardown

Timed

Assert true / false / equals /

PluginsHTML rapport

Vragen ?

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, [email protected] [at] fedict.be | www.fedict.belgium.be

p.

Fedict 2013. All rights reserved | p.

Fedict 2013. All rights reserved

Fedict 2013. All rights reserved

Fedict 2013. All rights reserved

Fedict 2013. All rights reserved