Automatizace testů: ušetří čas i finance!
Automatické testy jsou důležitou součástí vývojového cyklu softwaru. Pomáhají minimalizovat chyby, zrychlit proces vývoje a zlepšit kvalitu produktu. Co si pod pojmem automatické testování představit? Co přináší za výhody? A kde dochází k největší úspoře času a financí?
Efektivní využívání času je jeden z předpokladů k tomu, aby se dalo za vývoj ušetřit něco i na straně financí. Jedním z nástrojů, který výrazně pomůže k vyšší efektivitě je automatizování testů a testovacích scénářů. Automatizace testů umožní programátorům rychle a opakovaně ověřit, zda jejich kód pracuje správně a to bez nutnosti manuálního (lidského) ověřování každého kusu kódu. To vede ke zvýšení kvality vývoje softwaru, zkrácení doby na vývoj a snížení nákladů a to ať už na vývoj nebo následnou údržbu a opravu chyb.
Co je to automatické testování?
Automatické testování softwaru je proces, při kterém se vytvoří skript nebo skupina skriptů (programů), které reprezentují testovací scénaře. Testovací scénář je konkrétní interakce s aplikací s konkrétním výsledkem:
- při zadání kombinace emailu A a hesle B se provede akce C a uživatel uvidí hlášku D
Tato automatizace umožní snadnou a rychlou kontrolu softwarových funkcí a zajišťuje, že se software chová tak, jak bylo definováno v dokumentaci. Automatické testování jde použít na různých úrovních vývoje softwaru jako jsou například unit testy, integrační testy, systémé testy nebo výkonnostní testy.
Kde je největší úspora času a financi?
Představme si scénář, kde máme vývojový tým, který je složený ze 3 programátorů a jednoho manuálního testera. Tento tým nepíše testy, protože si to přece poklikají a to stačí. Případně si to přece pokliká klient.
Programátoři každý den udělají nějakou změnu ve zdrojovém kódu a funkčnosti aplikace. Manuální tester by měl tedy při každé změně ověřit správnou funkčnost přidávané změny a současně ověřit, že přidávaná změna nerozbila to, co funguje ve zbytku aplikace.
Jakmile se aplikace rozroste a bude mít více funkcí k ověřování jako například, správné nahrání a uložení fotky, uživatelské role, odesílání e-mailů, notifikace, více obrazovek s obsahem. Začnou manuální testy trvat dlouho. Tím, že se prodlouží čas lidské práce, tak se začne zvedat i cena projektu. Tím, že tester začne být zavalený testováním jak starých, tak přibývajících nových věcí, tak se začne zvyšovat chybovost a klesat kvalita projektu.
Řešením je automatizace testů a křížové testování
Prvním krokem k řešením problému popsané výše je ověření, zda si vývojáři pišou alespoň unit testy. Jsou to úplně základní testy, které ověřují funkčnost jednotlivých části kódu.
Následovat by měla automatizace testovacích scénářů. Například se může jednat o scénář, kdy uživatel otevře přihlašovací obrazovku, vyplní správnou kombinaci e-mailu a hesla. Následně mu aplikace umožní přistoupit k jeho uloženým datům. Zatím co manuální tester by k tomuto scénaři potřeboval při každé změně funkčnosti projektu 2 minuty, správně napsaný automatizovaný test ověří správnou funkcionalitu v řádu vteřin. Navíc se dá pustit kdykoliv - v týdnu, o víkendu, ve dne, v noci. Zkušenější automatizovaný tester zvládne takový test v základním rámci napsat v řádech minut.
Poté automatické testy řeší, že existující části systému fungují jak mají. Manuální tester je k ruce pro vývojáře pro první kolo testování převážně nových věcí, případně může ověřovat reprodukční scénaře k chybám od klienta. Automatický tester postupně pokrývá nové funkcionality a udržuje existující testy ve stavu, aby měli vypovídající hodnotu.
Best practices v oblasti testování
Následující 3 best practices, kromě automatického testování, se nám osvědčili v průběhu vývoje našich projektu.
- Jediné testy co by si vývojář měl psát sám, jsou unit testy. Všechny ostatní by měl psát někdo jiný, kdo nepsal testovaný zdrojový kód pro testovanou funkcionalitu. Zabrání se tím podvědomé slepotě a snaze nerozbít si vlastní praci.
- Testování za běhu vývoje. Testování není oddělený proces od vývoje. Testovat až bude hotový celý projekt je pozdě a může vést ke zvyšení nákladu a času potřebného na vývoj.Testování by mělo být zapojeno do vývojového cyklu a provádět se pravidelně. Tím se zajistí včasná detekce problému a jeho řešení.
- Vyhodnocování testů a zpětná vazba. Testy musí ze svého běhu poskytnout nějaký report, kde se vyhodnotí jejich úspěšnost. Na našich projektech ještě navíc pro klienty udržujeme testovací prostředí, kde sami mohou kdykoliv ověřit správnou funcionalitu a poskytnout nám zpětnou vazbu k již hotové práci.
Jak je vidět, automatické testy funkcionality jsou důležitou součástí vývojového procesu a neměli by se opomíjet a zanedbávat. Automatizace může pracovat a testovat software 24 hodin denně, 7 dní v týdnu, nepotřebuje dovolenou a odpočinek. Při správně napsaných testech ověří několikanásobně více scénářů než manuální tester při stejné časové dotaci. Na druhou stranu existují specifické snénaře, kdy se nasazení manuálního testera nevyhneme a je lepší testovat manuálně - příkladem může být ověření reprodukčních scénářů k nahlášeným chybám.
Pokud byste měli zájem o spolupráci v oblasti vývoje nebo testování, tak se na nás neváhejte obrátit.