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,...