Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Selenium testování GUI

Podobné prezentace


Prezentace na téma: "Selenium testování GUI"— Transkript prezentace:

1 Selenium testování GUI

2 Co je Selenium IDE Automatické testování aplikace jako černé skříňky
Minimální konfigurace Firefox plugin Selenium IDE Viz. tutorial video Náš vlastní google search

3 Pro koho je Selenium IDE?
Pro testery Automatizace testování podle testovacích scénářů Testovací scénáře v jednoduché HTML podobě Pro vývojáře Smoke testy buildovacího procesu (např. Ant skriptů) Integrační testování jako součást nočních buildů Testování Ajax částí aplikace a GUI

4 Nativní formát testu Jednoduché HTML Srozumitelné i pro nevývojáře
<tr> <td>type</td> <td>jusername</td> <td>vjohn</td> </tr> <td>jpassword</td> <td>clickAndWait</td> <td>login</td> <td></td>

5 Testování více prohlížečů
Jeden test lze spustit proti Exploreru Firefoxu

6 Základní commandy save link=Jdi na seznam label=Hasič
Často používané příkazy type click save link=Jdi na seznam clickAndWait – klepne a počká, než se nahraje stránka select – výběr hodnoty z rolovací nabídky <select> label=Hasič assertTextPresent – test skončí, pokud selže verifyTextPresent – test pokračuje dál, i když selže Další commandy i s nápovědou najdete v Selenium IDE* okně Formát commandů: JMENO SELECTOR [HODNOTA] Tlačítko k nezaplacení - Find

7 Možnosti spouštění testů
Ručně Okno firefox pluginu – jeden test Pomocí testrunneru – více testů (testsuite) Automaticky Pomocí ANTu Pomocí jUnit Ostatní jazyky Ruby Python PHP

8 Best practices Toto je asi nejdůležitější část prezentace!
Provádějte reuse částí testů V jUnit Java metoda, např. public void login() V HTML nelze (jak na to viz. další snímek) Raději vytvářejte hodně malých testů, než málo velkých a složitých testů Testy by měli testovat co nejmenší uživatelský scénář Je snazší vypátrat chybu, pokud mi 4 testy z 50ti existujících selžou, než pokud mi selže 1 test ze 2 existujících. Používejte XPath s uživatelským textem jako selectory Špatně: clickAndWait //table[2]/tr[1]/td[4] Dobře: clickAndWait //td[text() = 'Založit Nový SP'] Výsledkem jsou samopopisné, dobře udržovatelné testy

9 Kvízová otázka Uvažujme, že máme sadu 10ti Seleniových testů v HTML formátu, login sekvence se na začátku každého testu opakuje Jak by šlo docílit re-use login sekvence v těchto testech? <tr> <td>type</td> <td>jusername</td> <td>vjohn</td> </tr> <td>jpassword</td> <td>clickAndWait</td> se"]</td> <td></td> Možné řešení: Použijte JSP kontejner pro testy a jsp:include <jsp:include page="include/login.jsp"/>

10 Seskupování testů testsuite.html - HTML soubor, který linkuje více testů <html> <head> <title>Testsuite Example</title> </head> <body> <table cellpadding="1" cellspacing="1" border="1"> <tbody> <tr> <td>Etar tests</td> </tr> </tbody> <tr><td><a href="Login.html">Login</a></td></tr> <tr><td><a href="NovySP.html">Nový SP</a></td></tr> </table> </body> </html>

11 Úskalí 1 – formuláře Formuláře – Recorder nenahrává odeslání formuláře stisknutím klávesy <Enter> Použijte submitForm(formId) command

12 Úskalí 2 – práce s iframes
Práce s iframes - Recorder nenahrává selectFrame command Nutné ručně přidat selectFrame(frameId) Operace v iframe selectFrame(relative=top)

13 Úskalí 3 – timeout problém
ClickAndWait spadne na timeout Může se stát, pokud odezva aplikace je velmi rychlá Stejný problém i s ostatním XxxAndWait commandy Použijte waitForElementPresent Namísto Použijte <tr> <td>clickAndWait</td> <td>save</td> <td></td> </tr> <td>type</td> <td>name</td> <td>Pavel</td> <td>click</td> <td>waitForElementPresent</td>

14 Kvízová otázka XPath V aplikaci máme zobrazenou tuto tabulku
Potřebujeme klepnout na odkaz Smazat u uživatele Jan Hasič. Při nahrávání v Selenium IDE recorder nahrál tento command: click //tr[3]/td[2]/a Jak nahradit XPath na odkaz Smazat, aby fungoval nezávisle na pořadí řádku s Janem Hasičem v tabulce (a byl srozumitelnější, co se děje)? Click //tr[td[text()='Jan Hasič']]/td[2]/a Jméno Akce Tom Řidič Smazat Jan Hasič

15 Úskalí 4 – mizení testrunneru
Aplikace může následujícím Javascriptem zrušit Selenium testrunner window parent.window.location = 'http://www.seznam.cz'; Řešení – použijte multiWindow = true

16 Další úskalí Při použití https a neplatném certifikátu se test zastaví na varovném hlášení prohlížeče Buď registrovat certifikát u CA nebo pro testy spustit aplikaci na http Pokud aplikace javascriptem otevře popup okno s názvem _new, recorder nenahraje odpovídající selectWindow _new command Buď v aplikaci používejte vlastní jména (např. mywindow) nebo doplňte do testů po nahrání selectWindow _new command Pokud ve firefox použijete zapamatovanou dříve napsanou hodnotu formuláře (form input field history), recorder to nezaznamená Při nahrávání testu vždy hodnotu ručně pište (nepoužívejte form history)

17 Jak vnořovat testsuite?
Z jedné testsuite nelze zavolat jinou testsuite Řešení - TestSuiteGenerator Z adresářové struktury testů automaticky vytvoří testsuite.html Parametrem volání je root složka s testy

18 Ukázka z praxe Testy pro přerušení servisního požadavku (projekt etar)
Bez účasti dodavatele S účastí dodavatele

19 Odkazy Selenium homepage Selenium-RC and Continuous Integration
Selenium IDE Selenium Remote Control (used by jUnit sel. tests) Selenium-RC and Continuous Integration Ajax testing with Selenium using waitForCondition

20 Otázky nakonec Nebojte se a ptejte se 


Stáhnout ppt "Selenium testování GUI"

Podobné prezentace


Reklamy Google