Selenium, Emma, Checkstyle Jiří Mach
20. 11. 2013
Agenda o Automatické testování – WebTest
– HttpUnit – JMeter – MS VS Test Framework – Selenium
o Úkol 1 – Selenium o Statická analýza kódu – Emma – PMD
– Checkstyle
o Úkol 2 – Checkstyle
2
Automatické testování
Automatické testování o Automatické testování – Aplikace jako černá skříňka
o Nástroje – WebTest – HttpUnit – JMeter
– MS VS Test Framework – Selenium
4
Webtest
5
Webtest
6
Popis funkcí
7
HttpUnit
8
HttpUnit
9
HttpUnit
10
HttpUnit o Napsáno přímo v Javě o Podpora – – – – –
formulářů JavaScript základní HTTP autentizace cookies page redirection
o Ověřování výstupů v různých formátech – kontainery pro formuláře, tabulky, linky – XML DOM – plain text
o Lze snadno integrovat v jUnit o Ale pro testování webu příliš těžkopádné
11
JMeter o Původně pro web aplikace o Dnes už obecná 100% java desktop aplikace pro testování funkcionality a měření výkonu pod zátěží o Podpora – zátěžové testy • • • • •
Web – HTTP/HTTPS SOAP DB via JDBC LDAP JMS
– pluginy
12
MS VS Test Framework o Integrováno přímo do Visual Studia 2005 a dále
o Řada druhů testů: – Unit, Database, Load, Web a Manual
o Jednotná konzole pro spouštění a zobrazování výsledků
13
MS VS Web Test Framework o Možnosti: – Web Test Recorder – nahrání kroků testu
– rozšířená konfigurace – prohlížeč, počet spuštění,… – přidávání pravidel – mapování testovacích dat na data v databázi – bez nutnosti psaní kódu
14
15
Selenium o Selenium IDE – Firefox plugin
o Selenium Remote Control – Různé prohlížeče a programovací jazyky
o Selenium Grid – Paralelní spouštění testů
16
Selenium IDE o Selenium IDE – Firefox plugin
o Selenium Remote Control – Různé prohlížeče a programovací jazyky
o Selenium Grid – Paralelní spouštění testů
17
Selenium Remote Control o Selenium IDE – Firefox plugin
o Selenium Remote Control – Různé prohlížeče – Programovací jazyky
o Selenium Grid – Paralelní spouštění testů
18
Selenium Remote Control o Selenium IDE – Firefox plugin
o Selenium Remote Control – Různé prohlížeče – Programovací jazyky
o Selenium Grid – Paralelní spouštění testů
19
Selenium Remote Control o Selenium IDE – Firefox plugin
o Selenium Remote Control – Různé prohlížeče a programovací jazyky
o Selenium Grid – Paralelní spouštění testů
SLOW
20
Selenium Grid
21
Features IDE o Snadné nahrávání akcí a playback
o Inteligentní výběr entit pomocí ID/jmen/XPath o Autocomplete a nápověda pro příkazy Selenia o Možnost ladění testů
o Ukládání testů pro Selenium RC – standardně se testy ukládají jako HTML tabulky – ale podpora pro spoustu jazyků
o Jen pro Firefox
22
Spuštění Selenium
23
24
Jak Selenium IDE pracuje
http://seleniumhq.org/movies/intro.mov
25
Selenium IDE
26
27
28
29
30
31
32
33
Základní příkazy type
vloží text do zadaného elementu (políčko)
click
klikne na odkaz nebo na tlačítko – používá se typicky v případě, že tlačítko nezpůsobí přechod mezi stránkami (nebo reload)
klikne a počká, než se nahraje celá stránka, pak teprve pokračuje v testu – používá se, když tlačítko způsobí přechod mezi stránkami select vybere hodnotu z rolovací nabídky assertTextPresent ověří existenci textu někde na stránce clickAndWait
verifyTextPresent
totéž, ale nezpůsobí ukončení testu 34
35
Obecné rady o Hodně malých testů – krátké scénáře zaměřené na jednu konkrétní věc
– snadno v nich najdete, co způsobuje problém – daleko lépe se udržují
o Seskupení testů, tzv. suite – pokud chcete mít sadu testů postupně za sebou
36
Click vs. ClickAndWait o Click – pokud nedochází k přechodu mezi stránkami • JavaScript/AJAX akce
– občas se ale čekat musí • použít příkaz waitForXXX
o ClickAndWait – pokud dochází k přechodu mezi stránkami • jinak dojde k timeoutu
– může dojít k timeout i jindy? • ano, pokud je odezva testované aplikace příliš rychlá
37
WaitForXXX
clickAndWait | save | |
type | name | Pavel |
click | save | |
waitForElementPresent | name | |
type | name | Pavel |
38
Nezachycené události o Odeslání formuláře tlačítkem ENTER – ručně vložit příkaz submit(formId)
o Přepnutí do jiného okna nebo iframe – ručně vložit příkaz selectWindow(windowId), resp. selectFrame(frameId)
o Automatické doplňování ve formulářích – které poskytuje přímo prohlížeč
o a další – doporučuje se prostudovat nápovědu, fóra, ...
39
Pevně zachycené události o Seznamy odkazů nahrány pevně
Jméno
Povolání
Akce
Obi-Wan Kenobi
Jedi Master
Smazat
Yoda
Grandmaster
Smazat
Chancellor Palpatine Emperor/Sith Lord
IDE nahraje click
Smazat
//tr[3]/td[3]/a
Daleko vhodnější je click
//tr[td[text()='Chancellor Palpatine']]/td[3]/a
40
2
Bodovaný úkol
Selenium v praxi o Nainstalovat plugin Selenium IDE do prohlížeče Firefox (verze 2.4.0) – http://seleniumhq.org/
o Nainstalovat plugin XPath Checker – https://addons.mozilla.org/en-US/firefox/addon/1095
o Otestovat SWF Booking Faces – http://richweb.springsource.org/swf-bookingfaces/spring/main?execution=c1v1 – Firefox musí mít povolené cookies a JavaScript
42
Úkol 1 o Najít hotel – Prázdné pole zobrazí všechny hotely
– Vybrat jeden konkrétní podle názvu
o Přihlásit se jako uživatel o Zamluvit hotel – Nastavit všechny hodnoty
o Odhlásit uživatele o V průběhu vše ověřovat
43
Reference o http://seleniumhq.org/
o http://blog.novoj.net/2008/09/28/selenium-testovani-gui/
44
3
Statická analýza kódu
Emma o Code coverage tool
o Dá se použít i pro manuální testování o Snadná integrace s projektem – Eclipse plugin – http://www.eclemma.org/index.html
o Podobná funkčnost jako Cobertura
46
PMD o Statická analýza kódu – Pomáhá najít časté chyby
o Největší konkurent FindBugs o Plugin pro Eclipse – snadné použití – Lze integrovat pomocí Antu či volat z přík. řádku.
o http://pmd.sourceforge.net/
47
Checkstyle o Kontrola dodržování stanovených code conventions.
o Plugin pro Eclipse => snadné použití – http://eclipse-cs.sourceforge.net/index.shtml
o V základu – pravidla pro Sun code conventions o Možnost definovat vlastní pravidla – například pomocí regexpů – Buď přes Eclipse nebo v XML.
48
Diskuze
Děkujeme za pozornost Profinit, s.r.o., Tychonova 2, 160 00 Praha 6 Tel: +420 224 316 016, www.profinit.eu