Roman Hesteric / 03. 06. 2008, 00:00
Séria článkov o open-source nástroji na automatizované testovanie webových aplikácií - Canoo WebTest. Písanie ľahko udržiavateľných testov.
Využívanie property a property-súborov zabezpečí vysokú flexibilitu testov. Uvedený testovací skript používa ANT-premenné na špecifikáciu rôznych url a názvov buttonov pre rôzne jazykové mutácie vyhľadávača Google.
google.xml:
<project name= "example" default= "test" >
<target name= "test" >de.properties
startUrl =http://www.google.de/de
luckyButton =Auf gut Glück!
fr.properties
startUrl =http://www.google.fr/fr
luckyButton =J'ai de la chance
sk.properties
startUrl = http://www.google.sk/
luckyButton = Skúsim šťastiebuild.xml - štart testu
<ant antfile= "google.xml" >
<property file= "sk.properties" >
</ant>
Využitie XML-entity, alebo ANT-makrá pre spoločné bloky testov:
MyTest.xml
<!ENTITY goToLoginPage SYSTEM "../../includes/gotologin.xml" >
<project>
gotologin.xml
<group description= "go to login" >
<invoke url= "http://mysite.com" />Využitie makra, jeho definícia ...
<macrodef name= "doLogin " />
<attribute name= "login" />... a použitie
<steps>
Ako príklad prispôsobenia testovacích krokov uvediem možnosť znovupoužiteľnosti testovacieho kódu. Prvý príklad ukazuje síce plne funkčný test navigačných liniek na stránke, je však na príliš nízkej úrovni zovšeobecnenia a jeho znovupoužiteľnosť preto nie je možná.
Navigácia na stránke:
Home > StresTest > SmokeTest
Test navigácie:
Použitie doplneného kódu s makrom umožní jeho všeobecné použitia aj na iných miestach testovacích skriptov
<macrodef name= "verifyNavPath" />
...
<verifyNavPath level1= "Home” level2= "StresTest” level3= "SmokeTest”/>
Použitie jazyka Groovy na prispôsobenie a tvorbu vlastných testovacích krokov si predvedieme na nasledovných ukážkach. Groovy [http://groovy.codehaus.org/ ] je skriptovací jazyk, ktorý sa vykonáva ako Java Byte Code. Nakoľko je WebTest obvyklý ANT-task a Groovy implementuje AntBuilder, pomocou tejto technológie je možné vykonávanie Groovy skriptov vrámci WebTestu.
Navigácia na stránke:
Povinné ručení > Povinné ručení 2008
Groovy skript, ktorý definuje nový testovací krok [verifyNavPath]
<groovyScript>
<![CDATA[
String level1, level2, level3, level4
void doExecute() {
def ant = new AntBuilder(project)
def levels = [0, level1, level2, level3, level4]
for (i in 1..<levels.size()) {
if (levels[i])
ant.verifyXPath(xpath: "//a[${i}]/text()", text: levels[i],
description: "Verify level ${i}")
} } }
project.addTaskDefinition('verifyNavPath' , VerifyNavigationPath)
]]>
</groovyScript>
Použitie Groovy [verifyNavPath] vrámci WebTestu
<target name= "test_uses_groovy" >
Ďalším dobrým príkladom využitia jazyka Groovy vrámci WebTest-u je jeho využitie na špecifické testy, nedosiahnuteľné štandardnými prostriedkami Canoo WebTest-u. Nasledujúci skript testuje správnosť triedenia výsledkov kalkulácie. Predpokladá sa vzostupné triedenie. V princípe sa načítajú čísla zo zobrazenej tabuľky, ktoré sa presortujú pomocou Groovy a oba vektory sa následne porovnajú.
...
<clickButton label= "Pokračovat >>" />
<echo message= "groovy nested sort test ..." />
Smoke-test je špeciálny druh testu, ktorý sa spúšťa spravidla hneď po úspešnom builde aplikácie a jeho hlavným účelom je otestovanie aplikácie po zmenách, ktoré nastali. Typickým príkladom nasadením smoke-testov je ich nasadenie pred vydaním novej verzie, keď si chceme byť istí zachovaním pôvodnej funkčnosti aplikácie aj po implementovaní nových zmien.
Smoke-test: Webtest Monitor vs. Webtest konzola konzola:
Stres-test [load test] je súbor testov bežiacich paralelne, ktoré sa aplikujú na smoke testom prejdenú aplikáciu. Ich účelom je testovanie správania sa a stability aplikácie. Stres-testy by mali v čo najväčšej miere kopírovať produkčné prostredie a to ako hardvérovým prostredím, tak aj obsahom jednotlivých paralelne bežiacich testov.
Paralelný beh viacerých testovacích skriptov [stres-test]:
Výsledky už ukončených testov, posledný test stále beží [stres-test]:
Z uvedeného vyplýva, že smoke test-om môžeme nazvať testy, o ktorých sme hovorili doteraz. Sú to sekvencie testovacích scenárov, ktoré sa vykonávajú postupne a pri testovaní beží na testovacom počítači vždy iba jeden testovací klient. Smoke test je OK, ak všetky testy dopadli dobre a funkčnosť aplikácie je teda zachovaná. Ako však spustiť viac testovacích klientov paralelne tak, aby po ukončení každého z nich vznikol report, ktorý by zobrazil výsledky každého ukončeného testu bežiaceho paralelne? Spustenie viac testovacích klientov nie je žiaden problém. Problém nastane, keď sa tí paralelní klienti pokúšajú zapisovať výsledky testov a vytvárať reporty. Pri spustením každého sa totiž vymaže obsah /target adresára a neskôr spustení testovací klienti premazávajú výsledky testov. Ako tomu predísť?
<property name ="wt.delete.reports.skip" value = "skip"/>
Týmto spôsobom sa vypne vymazávanie obsahu /target adresára a všetci testovací klienti budú aditívnym spôsobom zapisovať výsledky testov do reportov. Nevýhodou je, že vymazanie predchádzajúcich výsledkov je potrebné urobiť ručne.
<tstamp>
<format property = "savepath" pattern = "yyyyMMdd_HHmm" />
</tstamp>
<property name = "wt.config.resultpath" location = "${savepath}"/>
čím zabezpečíme, aby každý testovací klient vytváral reporty do vlastného adresára - ktorého meno bude zhodné s časom jeho spustenia.
Nabudúce:
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk