Automatizace testů: Cesta ke kvalitě produktu

V tomto článku se podíváme na problematiku automatizace testování softwaru. Ačkoliv se nejedná o žádnou převratnou novinku posledních měsíců, existuje stále mnoho týmů a projektů, které potřebují automatizaci nastartovat. Proto rozhodně není na škodu toto téma shrnout.

Začínáme automatizovat – pohled týmu

Začněme první a klíčovou otázkou, kterou si možná mnoho z vás klade: „Jaké výhody mi (mému týmu) automatizace testů přinese?“ Tyto benefity bych rozdělil do dvou kategorií:

Základní výhody

Zde bych zmínil především ušetření času exekuce, zvyšování procenta pokrytí systému testy, eliminování lidských pochybení a samozřejmě finanční úspory. K těmto důvodům a výhodám zřejmě není třeba dodávat mnoho detailů. Jedná se o zcela jasné a logicky zdůvodnitelné faktory, které podobně definuje i samotná ISTQB. 

Bonusové výhody

Tyto výhody nazývám bonusové, protože ne každou z nich si člověk uvědomí hned „na první dobrou.“ Jako první bych zmínil, že automatizací můžeme pokrýt i testy, které manuálně provést nelze. Jedná se například o složitější performance testy, případně frontendové testy na různých typech zařízení (pokud nechci mít ve skříni desítky až stovky fyzických zařízení různých velikostí, či operačních systémů).

Z vlastní zkušenosti vím, že zavedení automatizace může pozitivně ovlivnit i náladu celého týmu. Členové týmu získávají více zkušeností, mají možnost uplatnit své kreativní myšlení a tým je také efektivnější. Může totiž věnovat část své práce i jiným aspektům vývoje softwaru, např. test analýze, byznys analýze, tvorbě dokumentace a dalším. Celková kvalita produktu tímhle „nenuceným“ způsobem roste. Zpravidla také kreativnější a zábavnější činnost přináší celkové zlepšení spokojenosti jednotlivých členů týmu.

Budeme tedy potřebovat méně lidí? Ne!

 

Existuje jeden mýtus, který se s automatizací testování pojí. Budou manuální testeři zbaveni své práce? Dle mého názoru ne. Jejich náplň práce se pouze posune „o trochu dále.“ Namísto dlouhých hodin strávených exekuováním manuálních scénářů, budou moci nyní tento čas věnovat implementaci skriptů, udržování kódu, analýze výsledků automatizovaných testů a podobně. Navíc by se jim měly také uvolnit ruce pro celkové zlepšování testovacích procesů, jak už jsem zmiňoval v předchozích odstavcích.

Co je tedy klíčové pro úspěšné zavedení automatizace do provozu?

5 klíčů k úspěchu

 

  1. Neváhejte konzultovat s odborníky
    Před začátkem celého procesu je důležité navázat kontakt s lidmi, kteří už podobnou zkušenost mají. Nezapomeňte, že i negativní zkušenost vás může posunout kupředu. Umět se poučit z věcí, které se dříve nepovedly, považuji za jednu z nejdůležitějších vlastností. A proto konzultujte, raďte se, získávejte názory a zkušenosti.
     

  2. Perfektní analýza aktuálního stavu
    Než začnete skriptovat automatizované testy, musíte systém a jeho aktuální fungování dokonale znát. Zaměřte se zejména na spolupráci s vývojáři, zkuste se dohodnout na přidání unikátních lokátorů, které jsou velmi důležitým milníkem na cestě k úspěchu v případě frontendové automatizace.
     
  3. Diskuze s týmem
    Zavedení automatizace by mělo být společným projektem. Nezapomeňte, že členové aktuálního testovacího týmu mají pravděpodobně ten nejdetailnější pohled na věc. Dokážou odhalit kritické části aplikace, analyzují aktuální problémy a vědí, které moduly a funkcionality mají prioritu. Zároveň je potřeba probrat s týmem aktuální skillset členů, z čehož pak můžeme čerpat při výběru automatizačních nástrojů.
     
  4. Společně vyberte vhodné nástroje
    Pamatujte, že neexistuje jeden „ultimátní nástroj na všechno.“ Je potřeba přemýšlet především o kontextu testovaného softwaru – jinak budu testovat bankovní aplikaci a jinak zase software do automobilu. Do hry vstupují samozřejmě i preference členů týmu, v neposlední řadě také budget.
     
  5. Definujte, co automatizovat, a co ne
    Jaké testy jsou vhodnými kandidáty pro automatizaci? A čemu se naopak vyhnout? Přehledně jsem to shrnul v následující tabulce:

Zde si dovolím poznament, že kategorie Nelze může být již v příštím roce 2024 alespoň částečně pokryta AI technologiemi, kde opět očekáváme velký vzestup. 



Finanční náklady na automatizaci

Jak už je zvykem, jedním z nejdůležitějších parametrů při rozhodování o automatizaci jsou samozřejmě finance. Náklady na automatizaci můžeme rozdělit do dvou kategorií.

Jednorázové náklady

S těmito položkami je nutné počítat v úplném začátku. Spadá sem investice do zvolených nástrojů, školení členů týmu, již zmíněné důležité konzultace s odborníky a také to může být třeba server, kde poběží CI/CD nástroj (Jenkins, Gitlab). Je třeba počítat s tím, že jednorázové náklady budou v počátečním období vyšší než náklady na manuální testing. To můžete vidět znázorněné v grafu níže.

Dlouhodobé náklady

Jak již bylo napsáno v předchozích odstavcích, automatizace bude vždy vyžadovat i určitou dávku manuální podpory. Jedná se o aktivity spojené s implementací nových skriptů (neboli pokrývání dalších částí SW testy), dále také údržbou skriptů stávajících a analýzou výsledků. Je třeba počítat s tím, že vždy po doběhnutí sady automatizovaných testů je třeba prozkoumat každý „FAIL“. Z toho typicky vedou 2 cesty – buď reportujeme defekt nebo vylepšujeme automatizovaný skript.

Zde přikládám orientační schéma, které popisuje vývoj finančních nákladů v čase:

Metoda Proof of Concept

Nyní bych chtěl zmínit pár slov o jedné ze základních metod, se kterou jsem se při zavádění automatizovaných testů setkal. Jedná se o tzv. metodu PoC. Spočívá v tom, že investujeme jednotky MDs do průzkumu. Během této doby zjišťujeme, jak dobře je (či není) automatizace aplikovatelná na tento konkrétní projekt. Snažíme se tzv. „prokopnout“ pár základních průchodů aplikací, v ideálním případě zautomatizovat nějaký „happy scénář“. Na základě těchto zjištění pak sestavíme vstupní analýzu, která by měla obsahovat návrh na použití nástrojů, časový/cenový odhad nákladů na automatizaci jednotlivých komponent systému a také doporučení, jak dále pokračovat. Důležité je uvědomit si, které části aplikace jsou pro byznys stěžejní, a kde nám automatizace přinese největší benefit. Zkuste najít určitou win-win situaci a tím začít – důležitá část systému, která lze poměrně rychle zautomatizovat. Na tom všem se dá následně dobře stavět.

Motivace jednotlivce - proč se posunout k automatizaci?

Ze svého pohledu vnímám, že začátek s automatizací je v kariéře testera poměrně velkým milníkem. Přecejen náplň práce v porovnání s manuálním testingem je rozdílná. Myslím si ale, že posouvání vlastních dovedností je to, co nás v pracovní kariéře naplňuje. Práce automatizéra vám nabídne nový rozměr, kdy budete muset zapojit kreativitu, občas přicházet s inovativními řešeními a neustále se učit, učit a učit. Na druhou stranu určitě není třeba se bát, vždy vám určitě bude k dispozici zkušený mentor/konzultant, který vás bude trpělivě na této cestě provázet. Jako člověk se zkušeností v automatizaci budete daleko lépe uplatnitelný na trhu práce. Dnešní testing se výrazně posouvá do technického směru, pokud tedy chcete udržet krok, zkuste svou kariéru nakopnout tímto směrem. Odměnou vám může být i dobrý pocit, že odvedená práce opravdu dává smysl, a že celková kvalita produktu má díky Vám vzestupnou tendenci.

Chcete začít s automatizací ve vašem týmu? 

Kontaktujte nás a společně si domluvíme konzultaci.

O tom, jak začít automatizovat v testingu, jsem mluvil také v našem předešlém, úspěšném webináři, který spolu s mnoha dalšími videi ze světa testingu najdete na našem YouTube kanále:

Autor článku: Michal Jirka

Michal v testingu začal pracovat v roce 2017 a již od počátku se zaměřoval na automatizaci testů. Zkušenosti získával na několika různých projektech, pracoval třeba pro CSAS, ŠKODA nebo ČSOB, kde zaváděl automatizované testování od úplného začátku.