Testovanie je ako skvelá detektívka | Technologický blog

29.03.2021

Akákoľvek aplikácia či komplexný informačný systém musí prejsť dlhou cestou, kým sa dostane do rúk koncového používateľa. A aj tu platí, že najdôležitejší je prvý dojem. Nič používateľa zrejme nesklame viac ako aplikácia, ktorá má množstvo chýb, alebo dokonca padá.

Preto nezastupiteľnú úlohu v procese vývoja informačných systémov zohráva testovanie. Práve o testovaní sa budeme dnes zhovárať s Máriou Dujsíkovou, znalostnou manažérkou pre testovanie spoločnosti ANASOFT.

O testovaní sa v súvislosti s vývojom informačných systémov rozpráva veľa, ale čo si pod tým môže čitateľ predstaviť?

V prvom rade je dobré povedať, že hoci existujú rôzne formy testovania, o ktorých sa dá dlho rozprávať, tá základná informácia pre čitateľov podľa mňa je, že testovanie si vyžaduje iný pohľad na aplikáciu ako je pohľad analytika. Od toho sa následne odvíja všetko ďalšie pri testovaní.

Keď niekto aplikáciu navrhuje a vyvíja, má zvyčajne na mysli to, čo aplikácia má robiť a ako to má robiť. Naopak pri testovaní je okrem overenia toho či aplikácia robí to čo má, potrebné zistiť aj to, či aplikácia nerobí to čo nemá resp. či akceptovateľne reaguje na nezvyčajné situácie. A to je iný pohľad na vec.

To znie zaujímavo, môžeš to priblížiť na nejakom príklade?

Skúsme príklad zo života, ktorý každý pozná. Povedzme, že si chceš vybrať peniaze z bankomatu. Bankomat nie je vlastne nič iné než počítač, aplikácia, ktorá je navrhnutá práve na to, aby si človek z neho vedel peniaze vybrať. Keď sa rozhodneš vybrať si peniaze z bankomatu, uvažuješ zhruba takto: prídem k bankomatu, vložím kartu, zadám PIN, navolím požadovanú sumu, vezmem si peniaze a odchádzam.

Áno vyzerá to jednoducho, človek by si až myslel, že na tom nie je čo testovať.

Presne. Realita je však zložitejšia a môžeme pokojne preskočiť aj fakt, že bežne sa bankomat v úvode opýta na jazyk, ktorým chce používateľ komunikovať.

Stačí, ak sa budeme držať pôvodne popísaného jednoduchého scenára a už pri vložení karty môže dochádzať k rôznym situáciám, na ktoré by aplikácia bankomatu, a teda aj testovanie, mali zmysluplne odpovedať.

Napríklad, čo sa má stať, ak niekto vloží do bankomatu neplatnú kartu? Má byť karta bankomatom zadržaná? Má byť o tom používateľ informovaný?

Zrazu sa nepozeráme na vyasfaltovanú diaľnicu prejazdnú od začiatku až po koniec. Náhle vidíme množstvo odbočiek, ktorými je potrebné sa zaoberať. A dá sa pokračovať ďalej. Čo ak používateľ zle zadal PIN? Čo ak v bankomate nie je dostatok bankoviek? 

Čo ak si používateľ zabudol zobrať kartu alebo peniaze? Čo ak nie je obrazovka pre používateľa dostatočne zrozumiteľná, či prehľadná? Čo ak? Čo ak? Čo ak? Testovanie by sa mohlo pokojne volať aj „čoakovanie“.

A na toto všetko musí myslieť tester?

Samozrejme musí na to myslieť celý tím, ktorý sa na príprave aplikácie podieľa. Od analytikov, návrhárov, programátorov aj testerov, ale je prirodzené, že ostatné role v projekte sú zamerané skôr na prešľapanie cestičky od začiatku po koniec, pretože aplikácia má v prvom rade nejaký účel. Bez neho by nebola vôbec potrebná. A preto je tiež prirodzené, že tester je ten, kto do celého procesu vnáša akési kritické myslenie a upriamuje pozornosť ostatných aj na veci, ktoré sú dôležité, ale nepriťahujú pozornosť riešiteľov tak priamo.

Ako také testovanie informačného systému prebieha?

Ako aj pri iných činnostiach, aj pri testovaní platí, že existujú odporúčané postupy a dôležité sú skúsenosti. Určite je potrebné stanoviť si ciele testovania, teda mať jasno v tom, na čo chceme testovaním odpovedať. Následne mať plán testovania, podľa ktorého sa samotné testovanie vykonáva a napokon aj vyhodnocuje. Nejde o žiadnu „voľnočasovú aktivitu“ kedy sa jeden či dvaja nadšenci posadia a začnú si preklikávať aplikáciu, aby zistili, či to funguje. Zmysluplné a efektívne testovanie je komplexný proces a vyžaduje si, aby testeri boli do projektu zapojení čo najskôr.

Čo ak? Čo ak? Čo ak? Testovanie by sa mohlo pokojne volať aj „čoakovanie“.

Prečo je to dôležité? Nie je testovanie až úplne posledná aktivita počas vývoja systému?

Je to dôležité preto, že tester v procese vývoja aplikácie zastupuje konečného užívateľa. Keď staviate dom, tak priebežne budúcemu používateľovi domu ukazujete projekt a konzultujete ho s ním. Snažíte sa mu čo najlepšie a najskôr prezentovať, ako bude jeho dom nakoniec vyzerať, aby na to mohol reagovať. Ak ho pustíte do domu, až keď bude hotový, riskujete, že sa mu nebude páčiť a prerábať dom v tomto štádiu bude nákladné.

V testovaní je to podobné. Tester potrebuje čo najskôr pochopiť účel budovanej aplikácie, aby mohol včas upozorňovať na možné úskalia a pripraviť sa na testovanie. Potrebuje si spísať jednotlivé testovacie prípady, aké vstupy do nich prídu a aké výsledky sú z nich očakávané. Potrebuje porozumieť okrajovým situáciám, na ktoré sa má pri testovaní zamerať.

Ako už bolo povedané, to všetko potrebuje spísať a formalizovať, aby bolo možné testovanie kvantitatívne aj kvalitatívne vyhodnotiť. Výsledkom testovania nemôže byť iba veta „nefunguje to“. V prípade, že testovanie odhalí v aplikácii nejakú chybu, je dôležité vedieť ju zreprodukovať, zrozumiteľne zaznamenať do dohodnutého nástroja, poslať na riešenie a po vyriešení opätovne otestovať a prípadne domyslieť dôsledky.

Mňa testovanie baví a napĺňa, a keby to tak nebolo, zrejme by som sa mu roky nevenovala. Pre mňa testovanie nie je rutina a naopak je pre mňa zo všetkého niečo.

Väčšina ľudí si teraz testovanie zrejme predstaví ako rutinnú a dookola sa opakujúcu manuálnu prácu. Je to tak?

Mňa testovanie baví a napĺňa, a keby to tak nebolo, zrejme by som sa mu roky nevenovala. Pre mňa testovanie nie je rutina a naopak je pre mňa zo všetkého niečo.

V úvode je to o zvedavosti a kreativite, keď sa snažím pochopiť, čo má informačný systém robiť a na čo sa treba zamerať. Potom do toho vstupuje štruktúra, keď tester formálne pripravuje jednotlivé testovacie scenáre a ich očakávané výsledky.

Neskôr je to mravenčia práca, kedy treba jednotlivé testovacie prípady prechádzať, znova a znova, a zaznamenávať výsledky. A nakoniec je to radosť a pocit z dobre vykonanej práce, keď človek vníma ako mu aplikácia pod rukami „dozrela“.

Treba tiež povedať, že testovanie nebýva zďaleka len manuálne. Na veľkých projektoch je úplne bežné niektoré testy automatizovať.

Viac o automatizovanom testovaní si ale povieme nabudúce...

 

Ďakujem za rozhovor

 

Rozhovor spracoval Boris Rybár / Manažér tímu softvérového vývoja