31. oktober 2006

Selenium - funkcionalni testi

Izvajanje funkcionalnih testov spletnih aplikacij, ki jih venomer nadgrajujemo z novimi storitvami mora biti izvedeno in avtomatizirano. S funkcionalnimi testi moramo pokriti vsaj osnovne dele spletne aplikacije, ki so kritični (core business) za naročnika.

Da ne bo zmede z izrazi - funkcionalni testi se drugače imenujejo tudi "acceptance" ali "black-box" testi in so komplementarni xUnit in integracijskim testom. Unit testi so pisani na nivoju metod in razredov, integracijski testi zajemajo testiranje med posameznimi moduli. Če spletna aplikacija ni napisana v duhu MVC, potem je unit teste za C del prejšnje kratice praktično nemogoče pisati. Če še ne znamo pisati raznih xUnit testov, lahko začnemo s funkcionalnimi.

Tudi če imamo v firmi QA oddelek, ljudi v njem nepotrebno obremenjujemo z izvajanjem testov, predvsem regresijskih, za katere velikokrat sploh zmanjka časa. Rutinske naloge dajmo izvajati stroju, ljudje naj delajo bolj kreativne naloge!

Selenium je eno izmed orodij, ki ga lahko uporabimo v te namene. Od sorodnih (opensource: HtmlUnit, Canoo, jWebUnit, Sahi, MaxQ, SAMIE, Watir, Mechanize; licenčni: WinRunner, Rational Robot, SilkTest, Test Partner, IBM Rational Functional Tester), se loči po - citiram:

"Selenium tests run directly in a browser, just as real users do. And they run in Internet Explorer, Mozilla, and Firefox on Windows, Linux, and Macintosh. No other test tool covers such a wide array of platforms."

Kako pa lahko testi tečejo v brskalniku? Zato, ker jih poganja JavaScript. Res huda ideja, le spomnit in realizirat jo je treba. Selenium deluje v treh načinih:
  • Bot mode (Seleium Core)
    Testi se izvajajo direktno v brskalniku. Navodila (testi) morajo biti na strežniku, kjer teče spletna aplikacija.
  • Driven mode (Selenium Remote Control)
    Teste lahko pišemo v: Java (JUnit, TestNG), C# (NUnit), Perl (Test::More), Python (unittest), Ruby (Test::Unit)
  • Record mode (Selenium IDE)
    Ni samo record tool! Je IDE, ki med drugim omogoča pametno detekcijo elementov na spletni strani (ID, imena, XPath), autocomplete ukazov, breakpoints,...
Ni potrebno poudarjati, da se nam čas (=denar) investiran v pametno avtomatsko funkcionalno testiranje večkrat povrne.

Ni komentarjev: