WebTest a Webdriver- „most priateľstva“- prostredníctvom Groovy, časť I.

Roman Hesteric  /  02. 04. 2009, 09:50

Spojenie dvoch nezávislých open-source projektov na automatické testovanie webových aplikácií do jedného celku.

Tento krkolomný názov ďalších článkov o automatizovanom testovaní webových aplikácií sa môže zdať spočiatku dosť nepochopiteľný, ale dúfam, že po dočítaní to bude všetko jasné. V nasledujúcom texte pôjde o možnosť spojenia dvoch nezávislých open-source projektov na automatické testovanie webových aplikácií do jedného celku. Spojovacím „lepidlom“ bude, ako je z názvu jasné, jazyk plne podporovaný v prostredí Canoo WebTest – Groovy.
 

V mojich predošlých článkoch o testovaní webových aplikácií som toho už celkom dosť popísal o nástrojoch ako Canoo WebTest a Google Webdriver, preto teraz nebudem opisovať ich výhody a nevýhody, respektíve ich rozdielne a spoločné znaky. Jeden rozdiel je však potrebné spomenúť hneď na začiatku. Zatiaľ čo Canoo WebTest používa na testovanie „browser pre javu“ – HTMLUnit, Google Webdriver umožňuje testovanie aj pomocou reálnych prehliadačov ako sú Internet Explorer, FireFox, Chrome, Safari. Táto možnosť Google Webdriver-a ma podnietila k tomu, aby som sa pokúsil všade tam, kde Cannoo Webtest nedokáže testovať z rôznych objektívnych príčin HTMLUnit-u nasadiť Google Webdriver. Nasadenie úplne iného testovacieho nástroja je však potrebné „zladiť“ alebo lepšie povedané „zasadiť“ medzi už doteraz existujúce testovacie scenáre Canoo WebTest a pridať možnosť spustenia testu ako jedného celku. Spustenie a výsledky takéhoto testu musia byť štandardné bez ohľadu na to, že na testovanie sú použité dva celkom odlišné open source projekty.


V poslednej vete som použil spojenie „dva celkom odlišné open source projekty“ – to však nie je tak celkom pravda. Sú totiž odlišné len firmami a autormi, stojacimi za ich vývojom. Oba totiž spája technológia, ktorú využívajú a tou technológiou je Java. Práve spoločná technológia  nám umožnila toto spojenie, spojenie prostredníctvom ďalšej Java technológie – jazyka Groovy.


Na čo to všetko vlastne človek potrebuje? Uvediem celkom reálny príklad z praxe. Kolega Martin písal testy, ktoré testovali on-line transakcie na našich portáloch – niečo ako nakupovanie prostredníctvom internetu. Transakcia sa končí zaplatením objednanej služby. Naši zákazníci môžu zaplatiť prostredníctvom platobných kariet. Na otestovanie platenia nám organizácia zabezpečujúca prevod poskytla rozhranie, kde my vývojári testujeme zaplatenie, akoby to robil náš reálny zákazník. Tu však nastal problém – platobný web rozoznal, že k nemu nepristupuje reálny internetový prehliadač, ale akýsi robot a transakciu nezrealizoval napriek tomu, že sme pristupovali na testovací server. Keďže platobné rozhranie nie je pod našim vývojom a vplyvom, nemáme žiadne možnosti ovplyvniť jeho správanie. Čo teraz? Canoo WebTest to nezvláda a my nemôžeme dokončiť testovací scenár. Budeme teda musieť použiť niečo, čo nebude považované testovacím serverom partnera za robota. Musíme teda použiť reálny internetový prehliadač –použijeme teda Google Webdriver. Ako však spojiť Webdriver a Canoo – skúsili sme využiť Canoo podporu jazyka Groovy a vyšlo to.

 

 

Najskôr však niekoľko charakteristík jazyka Groovy:

  • je nový, dynamický jazyk pre JVM - Java Virtual Machine
  • je postavený na sile a výhodách Javy, pričom pridáva dodatočnú silu a výhody inšpirované jazykmi ako Python, Ruby a Smalltalk
  • poskytuje moderné programovacie nástroje a metódy, ktoré sú pre vývojárov v jazyku Java dostupné s minimálnym úsilím učenia sa nového jazyka
  • kompaktná syntax - váš kód sa stane ľahšie čitateľný a udržiavateľný
  • poskytuje neustálu integráciu so všetkými existujúcimi Java objektmi a knižnicami
  • kompilácia priamo do Java bytecode, takže sa dá znovu použiť všade, kde sa doteraz používala Java

Predposledná veta „poskytuje neustálu integráciu so všetkými existujúcimi Java objektmi a knižnicami“ – bola pre nás určujúca a práve túto vlasnosť jazyka Groovy sme využili. Napadlo nám, že ak javovský kód, ktorým voláme metódy Google webdriver-a, a ktorý sme spustili ako javovskú aplikáciu, zavoláme priamo ako kód Groovy – získame tak možnosť integrovať metódy Webtest-u priamo do Canoo XML skriptov pomocou tagu <groovy></groovy>.

 

Ako to celé funguje popíšem v nasledujúcej schéme:

  • pomocou Canoo WebTest vytvoríme všetky testovacie kroky, ktoré nevyžadujú reálny prehliadač – kód vo formáte Canoo Webtest XML.
  • Google Webdriver [volania metód Google Webdriver-a ] použijeme na otestovanie aplikácie prostredníctvom reálneho prehliadača – kód napísaný v jazyku Java. Java kód odladíme ešte v prostredí Eclipse.

WebDriver-Java

 

  • Java kód, ktorý volá metódy Google Webdriver-a skopírujeme ako Groovy kód [Groovy plug-in do Eclipse], pričom ku Groovy projektu prilinkujeme externé jar súbory ["Add external JARs" do "Java build path"] Google Webdriver-a. Groovy kód odladíme ešte v prostredí Eclipse.

Webdriver-groovy
 

  • Takto odladený Groovy kód použijeme ako kód vrámci tagu <groovy></groovy> v Canoo WebTest XML zápise

canoo-groovy

 

Jar súbory Google Webdriver-a skopírujeme do Lib-adresára Canoo WebTest, aby sa počas behu Canoo WebTestov Groovy kód „Just-In-Time“ správne skompiloval a vykonal. Výsledok testu budem potom zobrazený štandardným spôsobom.

report-s

 

V ďalšej časti sa pozrieme podrobnejšie na kód v Jave, kód v Groovy a podrobnejšie popíšem celý spôsob integrácie vrátane linkov na všetky použité open source projekty.

 

Neprehliadnite: