Selenium, Emma, Checkstyle Jiří Mach 20. 11. 2013
Agenda Autmatické testvání WebTest HttpUnit JMeter MS VS Test Framewrk Selenium Úkl 1 Selenium Statická analýza kódu Emma PMD Checkstyle Úkl 2 Checkstyle 2
Autmatické testvání
Autmatické testvání Autmatické testvání Aplikace jak černá skříňka Nástrje WebTest HttpUnit JMeter MS VS Test Framewrk Selenium 4
Webtest 5
Webtest 6
Ppis funkcí 7
HttpUnit 8
HttpUnit 9
HttpUnit 10
HttpUnit Napsán přím v Javě Pdpra frmulářů JavaScript základní HTTP autentizace ckies page redirectin Ověřvání výstupů v různých frmátech kntainery pr frmuláře, tabulky, linky XML DOM plain text Lze snadn integrvat v junit Ale pr testvání webu příliš těžkpádné 11
JMeter Půvdně pr web aplikace Dnes už becná 100% java desktp aplikace pr testvání funkcinality a měření výknu pd zátěží Pdpra zátěžvé testy Web HTTP/HTTPS SOAP DB via JDBC LDAP JMS pluginy 12
MS VS Test Framewrk Integrván přím d Visual Studia 2005 a dále Řada druhů testů: Unit, Database, Lad, Web a Manual Jedntná knzle pr spuštění a zbrazvání výsledků 13
MS VS Web Test Framewrk Mžnsti: Web Test Recrder nahrání krků testu rzšířená knfigurace prhlížeč, pčet spuštění, přidávání pravidel mapvání testvacích dat na data v databázi bez nutnsti psaní kódu 14
15
Selenium Selenium IDE Firefx plugin Selenium Remte Cntrl Různé prhlížeče a prgramvací jazyky Selenium Grid Paralelní spuštění testů 16
Selenium IDE Selenium IDE Firefx plugin Selenium Remte Cntrl Různé prhlížeče a prgramvací jazyky Selenium Grid Paralelní spuštění testů 17
Selenium Remte Cntrl Selenium IDE Firefx plugin Selenium Remte Cntrl Různé prhlížeče Prgramvací jazyky Selenium Grid Paralelní spuštění testů 18
Selenium Remte Cntrl Selenium IDE Firefx plugin Selenium Remte Cntrl Různé prhlížeče Prgramvací jazyky Selenium Grid Paralelní spuštění testů 19
Selenium Remte Cntrl Selenium IDE Firefx plugin Selenium Remte Cntrl Různé prhlížeče a prgramvací jazyky Selenium Grid Paralelní spuštění testů SLOW 20
Selenium Grid 21
Features IDE Snadné nahrávání akcí a playback Inteligentní výběr entit pmcí ID/jmen/XPath Autcmplete a nápvěda pr příkazy Selenia Mžnst ladění testů Ukládání testů pr Selenium RC standardně se testy ukládají jak HTML tabulky ale pdpra pr spustu jazyků Jen pr Firefx 22
Spuštění Selenium 23
24
Jak Selenium IDE pracuje http://seleniumhq.rg/mvies/intr.mv 25
Selenium IDE 26
27
28
29
30
31
32
33
Základní příkazy type click clickandwait select asserttextpresent vlží text d zadanéh elementu (plíčk) klikne na dkaz neb na tlačítk pužívá se typicky v případě, že tlačítk nezpůsbí přechd mezi stránkami (neb relad) klikne a pčká, než se nahraje celá stránka, pak teprve pkračuje v testu pužívá se, když tlačítk způsbí přechd mezi stránkami vybere hdntu z rlvací nabídky věří existenci textu někde na stránce verifytextpresent ttéž, ale nezpůsbí uknčení testu 34
35
Obecné rady Hdně malých testů krátké scénáře zaměřené na jednu knkrétní věc snadn v nich najdete, c způsbuje prblém dalek lépe se udržují Seskupení testů, tzv. suite pkud chcete mít sadu testů pstupně za sebu 36
Click vs. ClickAndWait Click pkud nedchází k přechdu mezi stránkami JavaScript/AJAX akce bčas se ale čekat musí pužít příkaz waitfrxxx ClickAndWait pkud dchází k přechdu mezi stránkami jinak djde k timeutu může djít k timeut i jindy? an, pkud je dezva testvané aplikace příliš rychlá 37
WaitFrXXX <tr> <td>clickandwait</td> <td>save</td> <td></td> </tr> <tr> <td>type</td> <td>name</td> <td>pavel</td> </tr> <tr> <td>click</td> <td>save</td> <td></td> </tr> <tr> <td>waitfrelementpresent</td> <td>name</td> <td></td> </tr> <tr> <td>type</td> <td>name</td> <td>pavel</td> </tr> 38
Nezachycené událsti Odeslání frmuláře tlačítkem ENTER ručně vlžit příkaz submit(frmid) Přepnutí d jinéh kna neb iframe ručně vlžit příkaz selectwindw(windwid), resp. selectframe(frameid) Autmatické dplňvání ve frmulářích které pskytuje přím prhlížeč a další dpručuje se prstudvat nápvědu, fóra,... 39
Pevně zachycené událsti Seznamy dkazů nahrány pevně Jmén Pvlání Akce Obi-Wan Kenbi Jedi Master Smazat Yda Grandmaster Smazat Chancellr Palpatine Emperr/Sith Lrd Smazat IDE nahraje click //tr[3]/td[3]/a Dalek vhdnější je click //tr[td[text()='chancellr Palpatine']]/td[3]/a 40
2 Bdvaný úkl
Selenium v praxi Nainstalvat plugin Selenium IDE d prhlížeče Firefx (verze 2.4.0) http://seleniumhq.rg/ Nainstalvat plugin XPath Checker https://addns.mzilla.rg/en-us/firefx/addn/1095 Otestvat SWF Bking Faces http://richweb.springsurce.rg/swf-bkingfaces/spring/main?executin=c1v1 Firefx musí mít pvlené ckies a JavaScript 42
Úkl 1 Najít htel Prázdné ple zbrazí všechny htely Vybrat jeden knkrétní pdle názvu Přihlásit se jak uživatel Zamluvit htel Nastavit všechny hdnty Odhlásit uživatele V průběhu vše věřvat 43
Reference http://seleniumhq.rg/ http://blg.nvj.net/2008/09/28/selenium-testvani-gui/ 44
3 Statická analýza kódu
Emma Cde cverage tl Dá se pužít i pr manuální testvání Snadná integrace s prjektem Eclipse plugin http://www.eclemma.rg/index.html Pdbná funkčnst jak Cbertura 46
PMD Statická analýza kódu Pmáhá najít časté chyby Největší knkurent FindBugs Plugin pr Eclipse snadné pužití Lze integrvat pmcí Antu či vlat z přík. řádku. http://pmd.surcefrge.net/ 47
Checkstyle Kntrla ddržvání stanvených cde cnventins. Plugin pr Eclipse => snadné pužití http://eclipse-cs.surcefrge.net/index.shtml V základu pravidla pr Sun cde cnventins Mžnst definvat vlastní pravidla například pmcí regexpů Buď přes Eclipse neb v XML. 48
Diskuze
Děkujeme za pzrnst Prfinit, s.r.., Tychnva 2, 160 00 Praha 6 Tel: +420 224 316 016, www.prfinit.eu