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.

15. oktober 2006

IBLOC 2006

V Portorožu se je 2. in 3. oktobra dogajala Mednarodna poslovna linux in odprtokodna konferenca. Otvoril jo je g. Dušan Kričej iz Ministrstva za javno upravo. Žal je sedanja oblast Ministrstvo za informacijsko družbo (MID) novembra 2004 ukinilo in njene naloge razdelilo na druga ministrstva.


Konferenca je bila razdeljena na več sekcij:
  • varnost,
  • spletne tehnologije,
  • tehnična sekcija,
  • dobre prakse,
  • vgrajeni sistemi in
  • poslovna sekcija.
Sekcija "dobre prakse" je bila vpeljana letos in je pokrivala nekatere rešitve bazirane na odprti kodi. Te rešitve so bile komentirane oziroma predstavljene iz ust uporabnikov in ne njihovih avtorjev ali posrednikov, kar doprinese k večji objektivnosti. Resnici na ljubo objektivnost ne pride sama po sebi, jo je pa lahko prepoznati. Ali, še lažje je prepoznati njeno nasprotje.

Eno izmed meni najbolj zanimivih predavanj je bilo "Turbo Gears - o(g)rodje za agile razvoj spletnih aplikacij". Predstavitev je imel Simon Belak iz firme Hruška. Je eden izmed nosilcev razvoja, zato je bilo predavanje avtoritativno. Zelo pozitivno lahko ocenim njegov pristop pri predstavitvi, saj lahko, kot sem že ničkolikokrat videl in bral, protagonist izpade kot borec za najsvetejše ideale - to pa ustvarja negativno klimo med uporabniki različnih tehnologij. Hvala bogu g. Belak ni eden izmed takih, čeprav se je med slušatelji oglašal provokator.

Sicer pa so si bila predavanja po tematiki med seboj sila različna. Nekatera zelo tehnično zahtevna, druga pa bolj filozofska, in žal tudi ne preveč v duhu odprtokodne skupnosti. Vsekakor potrebujemo konference o odprtokodnih rešitvah, ki se ukvarjajo vse od poslovnih modelov za uvedbo in uporabo takih tehnologij v realnem življenju, pa vse do konkretnih rešitev v obliki delavnic in predstavitev konkretnih tehnologij. Sicer pa - vsak odprtokodni projekt je viden toliko, kolikor ima aktivno skupnost. Če se skupnost ne zaveda pomena dokumentacije, prezentacije ali celo marketinga, ostane tehnologija bolj marginalna, čeprav tehnološko dobra.

Skupnost je sestavljena iz posameznikov, vsak zase pa najbolj ve ali je iz pravega testa za odprtokodno miselnost.