210 likes | 420 Views
Začínáme testovat web pomocí Selenium Školení pro začátečníky. Co je Selenium IDE. Automatické testování webové aplikace jako černé skříňky Minimální konfigurace Firefox plugin Selenium IDE Viz. HelloWorld – stripes-shop http://selenium-ide.openqa.org/download.jsp.
E N D
Začínáme testovat web pomocí Selenium Školení pro začátečníky
Co je Selenium IDE • Automatické testování webové aplikace jako černé skříňky • Minimální konfigurace • Firefox plugin Selenium IDE • Viz. HelloWorld – stripes-shop http://selenium-ide.openqa.org/download.jsp
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
Nativní formát testu • Jednoduché HTML • Srozumitelné i pro nevývojáře
Testování více prohlížečů • Jeden test lze spustit proti • Exploreru • Firefoxu
Selenium command • Jeden řádek v testu • Instrukce pro selenium, co má s aplikací dělat • 1. buňka CommandNázev příkazu (např. type) • 2. buňka Element selectorUrčení elementu na stránce pro provedení příkazu • 3. buňka Další argument pro příkaz
Jak testovat commandy • V selenium IDE napište příkaz • Spusťte příkaz • A) Poklepáním • B) Pomocí klávesové zkratky X • Nápověda k příkazům v Selenium IDE • V Selenium IDE obsahuje jednoduchou Code completion • Karta Reference obsahuje nápovědu
Commands - typy • Actions provádějí uživatelské akce v aplikaci • type • click • select • submit Pozn.: Varianta andWait způsobí počkání na nahrání další stránky (např. clickAndWait) • Assertions ověřují stav aplikace očekávání • assertText • assertTitle • Accessors ukládají stav aplikace do proměnné • storeValue • storeEval • storeAttribute
Práce s formulářem • typenapíše hodnotu do formulářového poleSyntaxe: type <locator> <value>Např.: type name Pavel Jetenský • submit odešle formulářSyntaxe: submit <locator> Např.: submit document.forms[0] • select vybere hodnoty z rolovací nabídkySyntaxe: select <locator> <option label>Např.: select osobySelect Franta • check/uncheck zaškrtne/odškrtne checkboxSyntaxe: check <locator>Např.: check faktura.odberatel.sendNewsletter
Element locator Určuje objekt v HTML stránce pro provedení příkazu Více možností pro locatorType – identifier, id, name, dom, xpath, link, css • identifier=<hodnota>Najdi element podle @id, nenajdeš-li pak podle @name • id=<hodnota> najdi element podle @id • name=<hodnota> najdi element podle @name • dom=<hodnota> najdi element podle dom výrazudom=document.forms['myForm'].myDropdown • xpath=<xpath> najdi element podle XPATH výrazuxpath=//table[@id='table1']//tr[4]/td[2] • link=<text odkazu> najdi odkaz (<a>) podle textulink=Odhlásit se
Jak testovat locatory • V selenium IDE napište příkaz • Do druhého políčka příkazu napište element selector • Klepněte na tlačítko u selectoru Find
Locator – zjednodušená syntaxe • Bez locatorType locatorType = Identifiertype identifier=email test@deltax.cz type email test@deltax.cz • Locator začínající na // locatorType = XPath type xpath=//input[@id='e1'] test@deltax.cztype //input[@id='e1'] test@deltax.cz • Locator začínající na document. locatorType = dom click dom=document.images[56]click document.images[56]
Kvízová otázka XPath Studenti mají přednost • 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
Assertions commands • assertText Test na přítomnost textu ve stránce • assertValue Test na hodnotu ve formuláři • assertTitle Test na titulek stránky (podpora pro nahrání v recorderu) • assertVisible, assertEditable Test na často používané DHTML vlastnosti elementů
Assertions varianty • assertXXX Při nesplnění kontroly test selže a nepokračuje • verifyXXX Při nesplnění kontroly se chyba zaloguje, ale test pokračuje • assertNotXXX,verifyNotXXX Negovaná kontrola • Stejné jako assertXXX, ale kontrola se vyhodnocuje negativně. • Např. assertNotValue email test@deltax.cz – test selže, pokud @value elementu email obsahuje test@deltax.cz • assertVisible Kontrola viditelnosti prvku na stránce • assertEditable Kontrola editovatelnosti prvku na stránce
Možnosti spouštění testů • Ručně • Okno firefox pluginu – jeden test • Pomocí testrunneru – více testů (testsuite)
Kvízová otázka Studenti mají přednost • 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?
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>
Praktický příklad (stripes-shop) • Vytvoření testů • Test “Přihlášení” • Test přidání zboži do košíku • Test validace formuláře • Další ukázky – co by vás zajímalo? • Vytvoření testsuiteSpuštění testsuite z test runneru • Spuštění testu z junit • Re-use login sekvence pomocí jsp:include • Spuštění testu proti Internet Explorer • Best practices pro psaní snadno udržovatelných testů
Odkazy • Selenium homepage • Selenium IDE • Selenium Remote Control (used by jUnit sel. tests) • Selenium-RC and Continuous Integration • Selenium testování GUI –přednáška o Seleniu, obsahující některá pokročilejší témata (např. best practices, spouštění testů přes ANT nebo jUnit atp.)
Otázky nakonec • Nebojte se a ptejte se