Séria článkov o open-source nástroji na automatizované testovanie webových aplikácií - Canoo WebTest. Testujeme e-maily, pdf dokumenty. WebTest v Grails. Záver série.
Testovanie e-mailov je užitočné v prípadoch, keď potrebujeme otestovať, či testovaná aplikácia odosiela automaticky generované e-maily, ich obsah, poprípade ich po ukončení testu vymazať z testovacieho inboxu. Na úspešný beh takýchto testov je však potrebné na e-mailovom serveri vypnúť posielanie hesla cez SSL.
Na ilustráciu testovania e-mailov počas behu testovacieho skriptu je testovací scenár, ktorý po pripojení na mailový server nájde v inboxe správu so subjektom „Registration OK“. Pointer na takýto email sa uloží do property „mid“, ktorá sa následne použije ako parameter testovacieho kroku, ktorý takúto správu vymaže. Ide o hypotetický príklad, keď napríklad predchádzajúce testovacie scenáre zaregistrujú nového zákazníka vo virtuálnom obchode, ktorému je následne zaslaný e-mail. Kontrola odoslania takého e-mailu a jeho vymazanie by mohla vyzerať nasledovne:
<target name="email1Test">
<property name="username" value="testUser" />
<property name="password" value="testPass" />
<property name="mailserver" value=" nas.mailserver.sk:143" />
<property name="servertype" value="imap/POP3" />
<webtest name="email1Test">
<steps>
<emailSetConfig server="${mailserver}"
type="${servertype}"
password="${password}"
username="${username}"
delay="5" />
<emailStoreMessageId property="mid"
subject="/ Registration OK /" />
<emailDeleteMessage messageId="#{mid}" />
</steps>
</webtest>
Na ilustráciu testovania pdf-dokumentov [non-html-response] počas behu testovacieho skriptu je testovací scenár, ktorý otvorí pdf-dokument v okne internetového browsera a skontroluje existenciu textu v dokumente.
<target name="testPDF">
&definition;
<webtestname=" testPDF ">
&config;
<steps>
<doLogin />
<clickLink label="MOJE ZMLUVY V PDF" />
<clickLink label="Open PDF ..." />
<clickLink label="Poistná zmluva" />
<pdfVerifyPageCount count="2" />
<pdfVerifyText description="Document text"
text="Poistná zmluva"
regex="false" />
<echo message="Test OK" />
</steps>
</webtest>
</target>
V predchádzajúcich kapitolách som často spomínal jazyk Groovy ako jazyk, ktorým je možné rozširovanie testovacieho frameworku Canoo WebTest. Ako ideálna možnosť využitia sily a dynamiky vyššieho programovacieho jazyka jeho spojením s testovacím nástrojom je integrácia knižníc WebTestu do prostredia Groovy [Groovy on rails]
Najskôr však niekoľko charakteristík jazyka Groovy:
V zásade sa jedná o nové možnosti písania testovacích skriptov, pričom ak sme písali xml zápis:
<project name= "demo" default= "test" >
<target name= "test" >
<webtest name= " is 'WebTest' Google's top result " >
<invoke url= "http://www.google.com/ncr"
description= "go to Google" />
<verifyTitle text= "Google" />
<setInputField name= "q" value= "WebTest" />
<clickButton label= "I'm Feeling Lucky" />
<verifyTitle text= "Canoo WebTest Homepage" />
</webtest>
</target>
</project>
v groovy by horeuvedený zápis vyzeral nasledovne:
import com.canoo.webtest.WebtestCase
class SimpleTest extends WebtestCase {
void testWebtestOnGoogle() {
webtest("is 'Webtest' Google's top 'WebTest' result") {
invoke "http://www.google.com/ncr",
description: "Go to Google (in English)"
verifyTitle "Google"
setInputField name: "q", value: "WebTest"
clickButton "I'm Feeling Lucky"
verifyTitle "Canoo WebTest Homepage"
}
}
alebo pomocou WebTest pluginu v grails:
class GrailsTogetherTest extends grails.util.WebTest {
// Testovacia sekvencia zacina tu.
void suite() {
testGrails1()
// pridajte dalsie testy
}
def testGrails1() {
webtest('Grails1')
invoke (url: "http://www.google.com/ncr")
verifyTitle (text:"Google")
setInputField (name: "q", value: "WebTest")
clickButton (name: "I'm Feeling Lucky")
verifyTitle (text:"Canoo WebTest Homepage")
}
}
}
Keďže groovy plugin využíva knižnice WebTestu, výsledok obidvoch testov bude rovnaký html-report:

Možno vám napadne otázka načo je v praxi dobrý takýto plugin, nestačí samotný Canoo Webtest framework na pokrytie všetkých našich požiadaviek na testovanie. Odpoveď nie je jednoznačná. V mojej praxi som doteraz skutočne vystačil "len" s WebTestom. Veľa krát som však narazil na problémy, ktoré sa pomocou "čistého" WebTest riešili dosť ťažko, alebo sme práve kvôli testovaniu upravovali aplikáciu do testovateľnej podoby.
Plugin do grails poskytuje nové možnosti, ktoré sú z princípu dané tým, že Groovy je programovací jazyk so všetkým čo k tomu patrí [štruktúry, objekty, debbuger], ktoré môžete, alebo aj nemusíte potrebovať. Preto si myslím, že je minimálne korektné uviesť sem aj túto možnosť využitia tohto excelentného testovacieho nástroja.
Inštalácia grails a pluginu do grails je dobre popísaná na stránkach grails. Z mojich skúseností z inštlácie ešte dodám, že pred vlastným spustením inštalácie WebTest pluiginu:
grails create-webtest
je v mnohých prípadoch potrebné ešte nastavenie proxy:
Welcome to Grails 1.0.2 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: c:grails
Base Directory: c:grails
Note: No plugin scripts found
Running script c:grailsscriptsSetProxy.groovy
Environment set to development
Configured HTTP proxy: 1.20.212.1:8080
Do you wish to use HTTP proxy? ([y], n) y
Enter HTTP proxy host [X.XX.XXX.X]: [X.XX.XXX.X]
Enter HTTP proxy port [80]: [80]
Enter HTTP proxy username []: []
Enter HTTP proxy password []: []
Grails is configured to use HTTP proxy
potom nám už nič nestojí v ceste a môžeme spustiť:
grails run-webtest
Welcome to Grails 1.0.2 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: c:grails
Base Directory: c:grailsWebTest
Running script c:grailsWebTestpluginswebtest-0.4scriptsRunWebtest.groovy Environment set to test
[groovyc] Compiling 1 source file to C:Documents and Settingshesteric.grails1.0.2projectsWebTestclasses
Loading with installed plug-ins: ["webtest"] ...
Running WebTest ...
Running Grails application..
Autor pracuje ako developer vo firme www.together.sk
Spolu hlasov: 438
V Megafoto.sk len za 194 €
Copyright © 2002 - 2012 Inet.sk, s. r. o.Všetky práva vyhradenéNeprešlo jazykovou úpravouISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Webhosting Inet.sk