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

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

Špička v každém směru IT 3 Selenium testování GUI.

Podobné prezentace


Prezentace na téma: "Špička v každém směru IT 3 Selenium testování GUI."— Transkript prezentace:

1 špička v každém směru IT 3 Selenium testování GUI

2 IT 3 špička v každém směru Co je Selenium IDE Automatické testování aplikace jako černé skříňky Automatické testování aplikace jako černé skříňky Minimální konfigurace Minimální konfigurace Firefox plugin Selenium IDE Firefox plugin Selenium IDESelenium IDESelenium IDE Viz. tutorial video Viz. tutorial videotutorial videotutorial video Náš vlastní google search Náš vlastní google search

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

4 IT 3 špička v každém směru Nativní formát testu Jednoduché HTML Jednoduché HTML Srozumitelné i pro nevývojáře Srozumitelné i pro nevývojáře typejusernamevjohntypejpasswordvjohnclickAndWaitlogin

5 IT 3 špička v každém směru Testování více prohlížečů Jeden test lze spustit proti Jeden test lze spustit proti Exploreru Exploreru Firefoxu Firefoxu

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

7 IT 3 špička v každém směru Možnosti spouštění testů Ručně Ručně Okno firefox pluginu – jeden test Okno firefox pluginu – jeden test Pomocí testrunneru – více testů (testsuite) Pomocí testrunneru – více testů (testsuite) Automaticky Automaticky Pomocí ANTu Pomocí ANTu Pomocí jUnit Pomocí jUnit Ostatní jazyky Ostatní jazyky Ruby Ruby Python Python PHP PHP …

8 IT 3 špička v každém směru Best practices Toto je asi nejdůležitější část prezentace! Toto je asi nejdůležitější část prezentace! Provádějte reuse částí testů Provádějte reuse částí testů V jUnit Java metoda, např. public void login() V jUnit Java metoda, např. public void login() V HTML nelze (jak na to viz. další snímek) 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ů 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ář 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. 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 Používejte XPath s uživatelským textem jako selectory Špatně: clickAndWait//table[2]/tr[1]/td[4] Špatně: clickAndWait//table[2]/tr[1]/td[4] Dobře: clickAndWait//td[text() = 'Založit Nový SP'] Dobře: clickAndWait//td[text() = 'Založit Nový SP'] Výsledkem jsou samopopisné, dobře udržovatelné testy

9 IT 3 špička v každém směru 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 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? Jak by šlo docílit re-use login sekvence v těchto testech? typejusernamevjohntypejpasswordvjohn clickAndWait clickAndWait Prihlasit se"] Prihlasit se"] Možné řešení: Použijte JSP kontejner pro testy a jsp:include

10 IT 3 špička v každém směru Seskupování testů testsuite.html - HTML soubor, který linkuje více testů testsuite.html - HTML soubor, který linkuje více testů Testsuite Example Testsuite Example Etar tests Etar tests Login Login Nový SP Nový SP

11 IT 3 špička v každém směru Úskalí 1 – formuláře Formuláře – Recorder nenahrává odeslání formuláře stisknutím klávesy Formuláře – Recorder nenahrává odeslání formuláře stisknutím klávesy Použijte submitForm(formId) command Použijte submitForm(formId) command

12 IT 3 špička v každém směru Úskalí 2 – práce s iframes Práce s iframes - Recorder nenahrává selectFrame command Práce s iframes - Recorder nenahrává selectFrame command Nutné ručně přidat Nutné ručně přidat selectFrame(frameId) selectFrame(frameId) Operace v iframe Operace v iframe selectFrame(relative=top) selectFrame(relative=top)

13 IT 3 špička v každém směru Úskalí 3 – timeout problém ClickAndWait spadne na timeout ClickAndWait spadne na timeout Může se stát, pokud odezva aplikace je velmi rychlá Může se stát, pokud odezva aplikace je velmi rychlá Stejný problém i s ostatním XxxAndWait commandy Stejný problém i s ostatním XxxAndWait commandy Použijte waitForElementPresent Použijte waitForElementPresent NamístoPoužijte clickAndWait clickAndWait save save type type name name Pavel Pavel click click save save waitForElementPresent waitForElementPresent name name type type name name Pavel Pavel

14 IT 3 špička v každém směru Kvízová otázka XPath V aplikaci máme zobrazenou tuto tabulku 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: 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 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)? 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 Click //tr[td[text()='Jan Hasič']]/td[2]/aJménoAkce Tom Řidič Smazat Jan Hasič Smazat

15 IT 3 špička v každém směru Úskalí 4 – mizení testrunneru Aplikace může následujícím Javascriptem zrušit Selenium testrunner window Aplikace může následujícím Javascriptem zrušit Selenium testrunner window parent.window.location = ' '; Řešení – použijte multiWindow = true Řešení – použijte multiWindow = true

16 IT 3 špička v každém směru Další úskalí Při použití https a neplatném certifikátu se test zastaví na varovném hlášení prohlížeče 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 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 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 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á 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) Při nahrávání testu vždy hodnotu ručně pište (nepoužívejte form history)

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

18 IT 3 špička v každém směru Ukázka z praxe Testy pro přerušení servisního požadavku (projekt etar) Testy pro přerušení servisního požadavku (projekt etar) Bez účasti dodavatele Bez účasti dodavatele S účastí dodavatele S účastí dodavatele

19 IT 3 špička v každém směru Odkazy Selenium homepage Selenium homepage Selenium homepage Selenium homepage Selenium IDE Selenium IDE Selenium IDE Selenium IDE Selenium Remote Control (used by jUnit sel. tests) Selenium Remote Control (used by jUnit sel. tests) Selenium Remote Control Selenium Remote Control Selenium-RC and Continuous Integration Selenium-RC and Continuous Integration Selenium-RC and Continuous Integration Selenium-RC and Continuous Integration Ajax testing with Selenium using waitForCondition Ajax testing with Selenium using waitForCondition Ajax testing with Selenium using waitForCondition Ajax testing with Selenium using waitForCondition

20 IT 3 špička v každém směru Otázky nakonec Nebojte se a ptejte se Nebojte se a ptejte se


Stáhnout ppt "Špička v každém směru IT 3 Selenium testování GUI."

Podobné prezentace


Reklamy Google