IT Selenium testování GUI špička v každém směru Co je Selenium IDE Automatické testování aplikace jako černé skříňky  Minimální konfigurace  Firefox plugin Selenium IDE 

Download Report

Transcript IT Selenium testování GUI špička v každém směru Co je Selenium IDE Automatické testování aplikace jako černé skříňky  Minimální konfigurace  Firefox plugin Selenium IDE 

3
IT
Selenium testování GUI
špička v každém směru
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

IT3
špička v každém směru
Pro koho je Selenium IDE?

Pro testery



Pro vývojáře



IT3
špička v každém směru
Automatizace testování podle testovacích scénářů
Testovací scénáře v jednoduché HTML podobě
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
Nativní formát testu

Jednoduché HTML
 Srozumitelné i
pro nevývojáře
<tr>
<td>type</td>
<td>jusername</td>
<td>vjohn</td>
</tr>
<tr>
<td>type</td>
<td>jpassword</td>
<td>vjohn</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>login</td>
<td></td>
</tr>
IT3
špička v každém směru
Testování více prohlížečů

IT3
špička v každém směru
Jeden test lze spustit proti
 Exploreru
 Firefoxu
Základní commandy

Č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>




3
IT
špička v každém směru


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
Možnosti spouštění testů

Ručně



Automaticky



IT3
špička v každém směru
Okno firefox pluginu – jeden test
Pomocí testrunneru – více testů (testsuite)
Pomocí ANTu
Pomocí jUnit
Ostatní jazyky
 Ruby
 Python
 PHP
 …
Best practices


Toto je asi nejdůležitější část prezentace!
Provádějte reuse částí testů



Raději vytvářejte hodně malých testů, než málo velkých a
složitých testů



V jUnit Java metoda, např. public void login()
V HTML nelze (jak na to viz. další snímek)
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
Dobře: clickAndWait
//table[2]/tr[1]/td[4]
//td[text() = 'Založit Nový SP']
Výsledkem jsou samopopisné, dobře udržovatelné testy
IT3
š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
Jak by šlo docílit re-use login
sekvence v těchto testech?
Možné řešení: Použijte
JSP kontejner pro testy a
jsp:include
<jsp:include
page="include/login.jsp"/>
IT3
špička v každém směru
<tr>
<td>type</td>
<td>jusername</td>
<td>vjohn</td>
</tr>
<tr>
<td>type</td>
<td>jpassword</td>
<td>vjohn</td>
</tr>
<tr>
<td>clickAndWait</td
>
<td>//input[@value="
Prihlasit se"]</td>
<td></td>
</tr>
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>

IT3
š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 <Enter>

IT3
špička v každém směru
Použijte submitForm(formId) command
Úskalí 2 – práce s iframes

Práce s iframes - Recorder nenahrává selectFrame
command

IT3
špička v každém směru
Nutné ručně přidat
 selectFrame(frameId)
 Operace v iframe
 selectFrame(relative=top)
Ú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
<tr>
<td>clickAndWait</td>
<td>save</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name</td>
<td>Pavel</td>
</tr>
IT3
špička v každém směru
Použijte
<tr>
<td>click</td>
<td>save</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>name</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name</td>
<td>Pavel</td>
</tr>
Kvízová otázka XPath


V aplikaci máme zobrazenou tuto tabulku
Jméno
Akce
Tom Řidič
Smazat
Jan Hasič
Smazat
Potřebujeme klepnout na odkaz Smazat u uživatele Jan
Hasič. Při nahrávání v Selenium IDE recorder nahrál
tento command:


špička v každém směru
//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)?

IT3
click
Click //tr[td[text()='Jan Hasič']]/td[2]/a
Úskalí 4 – mizení
testrunneru

Aplikace může následujícím Javascriptem zrušit Selenium
testrunner window
parent.window.location = 'http://www.seznam.cz';

IT3
špička v každém směru
Řešení – použijte multiWindow = true
Další úskalí

Při použití https a neplatném certifikátu se test zastaví na varovném
hlášení prohlížeče


Pokud aplikace javascriptem otevře popup okno s názvem _new,
recorder nenahraje odpovídající selectWindow _new command


špička v každém směru
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á

IT3
Buď registrovat certifikát u CA nebo pro testy spustit aplikaci na http
Při nahrávání testu vždy hodnotu ručně pište (nepoužívejte form
history)
Jak vnořovat testsuite?


Z jedné testsuite nelze zavolat jinou testsuite
Řešení - TestSuiteGenerator


IT3
špička v každém směru
Z adresářové struktury testů automaticky vytvoří testsuite.html
Parametrem volání je root složka s testy
Ukázka z praxe

Testy pro přerušení servisního požadavku (projekt etar)


IT3
špička v každém směru
Bez účasti dodavatele
S účastí dodavatele
Odkazy

Selenium homepage




IT3
špička v každém směru
Selenium IDE
Selenium Remote Control (used by jUnit sel. tests)
Selenium-RC and Continuous Integration
Ajax testing with Selenium using waitForCondition
Otázky nakonec

IT3
špička v každém směru
Nebojte se a ptejte se 