Testování je jako skvělá detektivka | Technologický blog

29.03.2021

Jakákoliv aplikace či komplexní informační systém musí projít dlouhou cestou, než se dostane do rukou koncového uživatele. A i zde platí, že nejdůležitější je první dojem. Nic uživatele zřejmě nezklame více než aplikace, která má množství chyb, nebo dokonce padá.

Proto nezastupitelnou úlohu v procesu vývoje informačních systémů hraje testování. Právě o testování budeme dnes mluvit s Máriou Dujsíkovou, znalostní manažerkou pro testování společnosti ANASOFT.

O testování se v souvislosti s vývojem informačních systémů mluví hodně, ale co si pod tím může čtenář představit?

V první řadě je dobré říci, že ačkoli existují různé formy testování, o kterých se dá dlouho mluvit, ta základní informace pro čtenáře podle mě je, že testování vyžaduje jiný pohled na aplikaci jako je pohled analytika. Od toho se následně odvíjí vše další při testování.

Když někdo aplikaci navrhuje a vyvíjí, má obvykle na mysli to, co aplikace má dělat a jak to má dělat.

Naopak při testování je kromě ověření toho zda aplikace dělá to co má, třeba zjistit i to, zda aplikace nedělá to co nemá resp. či přijatelně reaguje na neobvyklé situace. A to je jiný pohled na věc.

To zní zajímavě, můžeš to přiblížit na nějakém příkladu?

Zkusme příklad ze života, který každý zná. Řekněme, že si chceš vybrat peníze z bankomatu. Bankomat není vlastně nic jiného než počítač, aplikace, která je navržena právě na to, aby si člověk z něj uměl peníze vybrat. Když se rozhodneš vybrat si peníze z bankomatu, uvažuješ zhruba takto: přijdu k bankomatu, vložím kartu, zadám PIN, navolíte požadovanou částku, vezmu si peníze a odcházím.

 

Ano vypadá to jednoduše, člověk by si až myslel, že na tom není co testovat.

Přesně. Realita je však složitější a můžeme klidně přeskočit i fakt, že běžně se bankomat v úvodu zeptá na jazyk, kterým chce uživatel komunikovat.

Stačí, když se budeme držet původně popsaného jednoduchého scénáře a už při vložení karty může docházet k různým situacím, na které by aplikace bankomatu, a tedy i testování, měly smysluplně odpovědět.

Například, co se má stát, pokud někdo vloží do bankomatu neplatnou kartu? Má být karta bankomatem zadržena? Má být o tom uživatel informován?

Najednou se nedíváme na vyasfaltované dálnici průjezdovou od začátku až po konec. Náhle vidíme množství odboček, kterými je třeba se zabývat.

A dá se pokračovat dál. Co pokud uživatel špatně zadal PIN? Co když v bankomatu není dostatek bankovek? Co když si uživatel zapomněl vzít kartu nebo peníze? Co když není obrazovka pro uživatele dostatečně srozumitelná, či přehledná? Co když? Co když? Co když? Testování by se mohlo klidně jmenovat i "cokdyžování".

A na toto všechno musí myslet tester?

Samozřejmě musí na to myslet celý tým, který se na přípravě aplikace podílí. Od analytiků, návrhářů, programátorů i testerů, ale je přirozené, že ostatní role v projektu jsou zaměřeny spíše na prošlapání cestičky od začátku do konce, protože aplikace má v první řadě nějaký účel. Bez něj by nebyla vůbec zapotřebí. A proto je také přirozené, že tester je ten, kdo do celého procesu vnáší jakési kritické myšlení a upozorňuje ostatní i na věci, které jsou důležité, ale nepřitahují pozornost řešitelů tak přímo.

Jak takové testování informačního systému probíhá?

Jakož i při jiných činnostech, i při testování platí, že existují doporučené postupy a důležité jsou zkušenosti. Určitě je třeba stanovit si cíle testování, tedy mít jasno v tom, na co chceme testováním odpovědět. Následně mít plán testování, podle kterého se samotné testování provádí a nakonec i vyhodnocuje. Nejde o žádnou "volnočasovou aktivitu" kdy se jeden či dva nadšenci posadí a začnou si proklikávat aplikaci, aby zjistili, zda to funguje. Smysluplné a efektivní testování je komplexní proces a vyžaduje, aby testeři byli do projektu zapojeni co nejdříve.

Co když? Co když? Co když? Testování by se mohlo klidně jmenovat i „cokdyžování“.

Proč je to důležité? Není testování až úplně poslední aktivita během vývoje systému?

Je to důležité proto, že tester v procesu vývoje aplikace zastupuje konečného uživatele. Když stavíte dům, tak průběžně budoucímu uživateli domu ukazujete projekt a konzultujete ho s ním. Snažíte se mu co nejlépe a nejrychleji prezentovat, jak bude jeho dům nakonec vypadat, aby na to mohl reagovat. Pokud ho pustíte do domu, až když bude hotový, riskujete, že se mu nebude líbit a předělávat dům v této fázi bude nákladné.

V testování je to podobné. Tester potřebuje co nejdříve pochopit účel budované aplikace, aby mohl včas upozorňovat na možná úskalí a připravit se na testování. Potřebuje si sepsat jednotlivé testovací případy, jaké vstupy do nich přijdou a jaké výsledky jsou z nich očekávané. Potřebuje porozumět okrajovým situacím, na které se má při testování zaměřit.

Jak již bylo řečeno, to vše potřebuje sepsat a formalizovat, aby bylo možné testování kvantitativně i kvalitativně vyhodnotit. Výsledkem testování nemůže být pouze věta "nefunguje to". V případě, že testování odhalí v aplikaci nějakou chybu, je důležité umět ji zreprodukovat, srozumitelně zaznamenat do dohodnutého nástroje, poslat na řešení a po vyřešení opětovně otestovat a případně domyslet důsledky.

Testování mě baví a naplňuje, a kdyby to tak nebylo, zřejmě bych se mu roky nevěnovala. Pro mě testování není rutina a naopak je pro mě ze všeho něco.

Většina lidí si nyní testování zřejmě představí jako rutinní a dokola se opakující manuální práci. Je to tak?

Testování mě baví a naplňuje, a kdyby to tak nebylo, zřejmě bych se mu roky nevěnovala. Pro mě testování není rutina a naopak je pro mě ze všeho něco.

V úvodu je to o zvědavosti a kreativitě, když se snažím pochopit, co má informační systém dělat a na co je třeba se zaměřit. Pak do toho vstupuje struktura, kdy tester formálně připravuje jednotlivé testovací scénáře a jejich očekávané výsledky.

Později je to mravenčí práce, kdy je třeba jednotlivé testovací případy procházet, znovu a znovu, a zaznamenávat výsledky. A nakonec je to radost a pocit z dobře vykonané práce, když člověk vnímá jak mu aplikace pod rukama "dozrála".

Je třeba také říci, že testování nebývá zdaleka jen manuálně. Na velkých projektech je zcela běžné některé testy automatizovat.

Více o automatizovaném testování si ale řekneme příště...

 

Děkuji za rozhovor

 

Rozhovor zpracoval Boris Rybár / Manažer týmu softwarového vývoje