„Prečo robiť niečo ručne ak to za vás môže urobiť stroj a bohužiaľ aj v lepšej kvalite?“
Jozef Krajčovič
Oblasť automatizácie softvéru je čím ďalej, tým populárnejšou témou súčasnosti. Čo je vlastne automatizácia?
Nie som zástancom odborných poučiek, preto sa pokúsim jednou vetou vysvetliť, o čo v praxi ide. Automatizovanie sa využíva, keď chceme veľké množstvo rutinných testov, ktoré pokrývajú väčšiu časť aplikácie robiť programom, namiesto manuálneho klikania do aplikácie testerom. Hlavným cieľom automatizácie testov je časová úspora, výrazné úspory finančných prostriedkov a zvýšenie kvality finálneho produktu ako aj zefektívnenie práce.
Ale je to naozaj tak?
Bohužiaľ, môžem tvrdiť, že nie je. Pracujem už pár mesiacov ako tester, kde nám chlapík z HP-čka na školení oznámil, že budeme automatizovať Smoke Testy. Nielen, že nestíhame predpísané normy, ale počas svojej práce som sa strestla s toľkými problémami, že by som už mohla napísať celú knihu. Preto chcem zhrnúť základné veci, ktoré by ste mali zvážiť ešte skôr, než s automatizovaným testovaním naozaj začnete.
Prvým a základným krokom je uvedomiť si, či je aplikácia vôbec vhodná na testovanie
Mala by to byť aplikácia, ktorá je objektová, stabilná (z hľadiska programového kódu) a u ktorej nepredpokladáme už žiadne zásadné budúce zmeny.
Výber vhodného nástroja pre automatizované testovanie
Voľba nástroja závisí od firmy, ale je pravda, že často o tom rozhoduje človek, ktorý nemá priamy vzťah k testovaniu, ale skôr vzťah k financiám. Máme k dispozícii veľa komerčných alebo open-source nástrojov. Voľba sa odvíja od technických požiadaviek a nástroj musí byť schopný pracovať so všetkými objektmi. My konkrétne používame nástroj od firmy Hewlett-Packard a nechcem nikoho uraziť, ale tá firma mi už dlhšie robí vrásky na tvári. Už dávno som sa nestretla s tak nedoladeným nástrojom. Preto sa ďalej zameriam na odladenie chýb, pre tých ktorí používajú Mercury softvér na testovanie.
Časová úspora a úspora zdrojov
Pri tomto bode by som sa chcela zastaviť. Aj po zautomatizovaní všetkých testov je potrebné, aby ich niekto spúšťal a poviem vám pravdu, kým prebehne jeden automatický test, manuálne ho spravíte päť krát. Na testera, ktorý dokáže testy zautomatizovať sú kladené vyššie požiadavky, musí poznať všetky test analýzy, znalosť daného nástroja a vedieť automatizovať, z čoho vyplýva, že náklady na neho sú podstatne vyššie. S každou zmenou kódu musí byť prepísaný takmer celý test. Tak kde je potom časová úspornosť?
Problémy pri testovaní
Najväčším problémom pri automatizovaní je práca s objektmi aplikácie. Testovanie prebieha na základe nahrávania objektov do Repository, ale väčšina objektov, ktoré sa testujú majú nastavenú položku Visible na hodnotu false. Čo v praxi znamená, že pri väčšom šťastí test zbehne iba prvý krát, kým je daný objekt viditeľný na obrazovke a druhý krát vás privíta hláška: „Object is not visible“. Čo nie je veľmi potešujúce, že?
Čítala som stovky fór venujúce sa tejto problematike, skúšala som deskriptívne programovanie, zmenu hodnoty na true, definovanie virtuálnych objektov, ale nič nefungovalo správne. Nakoniec som našla veľmi jednoduché riešenie, ktoré si môžete priamo stiahnuť tu.
Pokiaľ testujete webové aplikácie, dá sa tento problém obísť cez XPath.
Záver
Dúfam som vás neodradila mojím pesimistickým postojom na automatizáciu od možnosti vyskúšať ju. Aj napriek popísaným nevýhodám, má aj mnoho výhod a závisí aj od konkrétnej organizácie, vybraného nástroja a druhu testov, ktoré testujete. Zabezpečuje väčšiu presnosť testovania po odladení všetkých chýb. Je ale nutné, aby príprava automatizácie zohľadnila všetky možné aspekty tohto kroku a aby sa tejto prípravnej fázy zúčastnili všetci testeri, lebo oni môžu posúdiť prínos automatizovaného testovania ich aplikácie najlepšie.