25. října 2007

Testovací frameworky pro webové GUI

Rozhodli jsme se, že posuneme naše interní testování aplikací zase o kousek dále, a že vybereme nějaký testovací framework pro GUI webových aplikací.

Zatím jedinou zkušenost, co se týká testování web GUI, jsem měl s jWebUnit. Již jsem tuto knihovnu delší dobu nepoužíval, ale myslím si, že by se v dnešní době dalo najít lepší řešení. Ono je to tedy těžké napsat "lepší řešení", protože každý má jiné požadavky a cíle testování - někdo upřednostní GUI klienta na vytváření testů, někdo má rád programové vytváření testů přes API, někdo chce zaměřit na testování kompatibility mezi prohlížeči atd. Přesněji řečeno se tedy snažím "zmapovat trh" s testovacími frameworky a jeden vybrat a ten zkusit.

Já jsem věnoval zhruba půl dne tomu, abych si udělal hrubý obrázek o současných možnostech testovacích frameworků pro web GUI. V rychlosti jsem prostudoval Canoo WebTest, Selenium a Jameleon - ty jsem nominoval do užšího výběru na základě referencí od známých nebo podle toho, co jsem se dočetl na webu.
Znovu chci zdůraznit, že jsem vše procházel velice hrubě - pročetl jsem si základní dokumentaci, vyzkoušel dostupné nástroje a napsal 1-2 zkušební testíky. Nic víc. Pokud se mnou v nějakém bodě hodnocení nebudete souhlasit nebo naopak by jste něco doplnili, tak budu jedině rád.

Pro úplnost ještě uvádím odkaz na přehled všech možných testovacích knihoven a frameworků pro Javu.

Canoo WebTest

Plusy:
  • testovaní bez nutnosti použití webového prohlížeče

  • ovládání pomocí ANTu - Canoo definuje ANT tasky, kterými je možné vše ovládat (hlavně spouštět testy)

  • možnosti kontroly PDF a Excel dokumentů

  • dokumentace je rozsáhlá a přehledná

  • velice intuitivní, testy může vytvářet i neprogramátor

Mínusy:
  • vše je nutné definovat ručně přímo v XML, žádné podpůrné grafické rozhraní

  • Canoo nesimuluje reálného uživatele přes prohlížeč, pouze se víceméně zajímá o čisté HTML (to může být i výhoda pro určité typy testů)

  • může být rozdílné chování z pohledu Canoo a reálného uživatele (např. různá implementace Javascriptu v prohlížeči a v této knihovně)



Selenium

Plusy:
  • simuluje reálného uživatele

  • možnost testování kompatibility webové aplikace s prohlížeči

  • Selenium IDE (plugin do Firefox) - přes toto IDE je možné vytvářet testy (manuálně nebo nahráváním); velice intuitivní nástroj, vhodný i pro neprogramátory. Tento plugin z mého pohledu nemá chybu, parádní integrace s Firefoxem.

  • testy je možné vytvářet nahráváním pomocí Selenium IDE

  • možnost rozšiřování základní funkcionality pomocí extensions

  • ANT tásky a možnost spouštění testů z příkazové řádky

  • dokumentace, podpora

  • možnost vytváření testů přímo z jazyka Java případně z jiných jazyků (.NET, PHP, Perl, ...)

Mínusy:
  • měl jsem malé problémy se spouštěním testů z příkazové řádky, které jsem nejdříve vytvořit přes IDE nahráním

  • testovaná aplikace musí být spuštěna před vlastním testováním



Jameleon

Plusy:
  • asi nejvíce rozsáhlé a robustní řešení na testování. Je možné využívat formou pluginů jiné webové testovací frameworky - Selenium, jWebUnit, ...

  • není jen pro testovaní web GUI, ale obecně pro testování čehokoliv

Mínusy:
  • asi nejstrmější "learning-curve" z uvedených frameworků. U předchozích jsem měl hned pocit, že vím, jak s tím pracovat, tady to tak rychlé nebylo.

  • poslední release byl v prosinci 2006, od té doby nic nového (navíc poslední uvolněná verze není stabilní). Odkazy na archiv mailing listu hlásí chybu.

  • mam pocit, ze Jameleon je základní framework pro testování, který je potřeba si ještě rozšířit pro své konkrétní potřeby, aby se jeho potenciál maximálně využil (toto ale může být i výhoda)


Vítězem prvního kola se u mě stal framework Selenium. Rozhodla jednoduchost vytváření testů (která ale není vyvážena tím, že by to bylo slabé na funkcionalitu) a možnost vytváření testů neprogramátory.

4 komentáře:

Anonymní řekl(a)...

Marc Guillemot ma iny nazor:
http://mguillem.wordpress.com/2007/10/29/webtest-vs-selenium-webtest-wins-13-5/

Petr Jůza řekl(a)...

Děkuji za moc pěkný příspěvek. Já s názory uvedenými v daném blogu jen souhlasím, ale právě je nutné se na to podívat z více pohledů.

My si neděláme prezentační vrstvu sami, spolupracujeme na ni s grafickým studiem. Ty neberu jako programátory, ale jako spíše grafiky - umějí navrhnout stránku, nalámat ji do HTML, aplikovat CSS. Hledáme teď způsob, jak tu spolupráci posunout o kousek dále a to právě směrem k testování web GUI. Proto se mi tak (nyní) libí Selenium - je uživatelsky hodně přívětivé, uživatelé se do toho rychle dostanou a vlastně nemusejí vůbec programovat.

Pokud bych ale ty testy měl psát sám, tak beru všechny ty uvedené argumenty z blogu a použil bych webtest.

Anonymní řekl(a)...

My pouzivama htmlunit. Je to sice jen pro programatory, ale muzeme delat slozitejsi veci, pro ktere bych se v Seleniu uklikal

Petr Jůza řekl(a)...

Přidávám odkaz na pěkný článek o Selenium (Vlastův blog).