Oprava testovací sady

Jak měřit flaky testy a odhalit nestabilní scénáře

Když stejný test jednou selže a jindy projde bez zjevné změny, mluvíme o nestabilním neboli flaky výsledku. Samotné opakování testu však neukáže, zda je problém v jeho kódu, aplikaci, datech nebo prostředí. Stabilizace proto začíná měřením, ne prodlužováním časových limitů.

Proč jeden neúspěšný běh nestačí

Stejná chybová zpráva může mít různé příčiny:

Pokud se test pouze spustí znovu a jeho první výsledek se zahodí, tým ztratí důkaz potřebný k rozlišení těchto možností. Počet opakování časem roste, ale příčina zůstává.

Co se vyplatí zaznamenávat

Základem je historie jednotlivých pokusů, ne pouze konečný zelený nebo červený stav pipeline. U každého testu sledujte:

Dvě praktické metriky jsou podíl neúspěšných prvních pokusů a podíl testů, které projdou až po opakování. Druhá metrika ukáže nestabilitu, kterou může konečný zelený report skrýt. Neexistuje jedno vhodné procento pro každý projekt; prioritu určujte také podle toho, zda test chrání kritický proces.

Jak provést kontrolované měření

1. Zafixujte výchozí podmínky

Vyberte stejnou verzi aplikace, známou konfiguraci a kontrolovaná data. Sadu spusťte několikrát beze změny těchto podmínek. Rozdílný výsledek je signálem nestability, ne automatickým důkazem, že je chyba v samotném testu.

2. Měňte vždy jednu podmínku

Porovnejte běh jednoho testu se souběžným během celé sady. Pokud problém vzniká pouze při souběhu, testy mohou sdílet data nebo zdroje. Porovnání rychlejšího a pomalejšího prostředí může odhalit nevhodné čekání. Rozdíl mezi prohlížeči může být chyba kompatibility, ne flaky test.

3. Seskupte stejná selhání

Deset testů může selhávat kvůli jedné společné příčině, například nedostupnému přihlášení nebo chybě při přípravě dat. Seskupení podle chybové zprávy a místa selhání zabrání tomu, aby tým opravoval každý příznak samostatně.

4. Rozdělte výsledky podle dalšího kroku

Dočasné oddělení nesmí znamenat, že test zmizí bez vlastníka. V reportu má zůstat viditelný včetně důvodu a data dalšího rozhodnutí.

Na co si dát pozor

Zvýšení časového limitu může být oprávněné, pokud aplikace na danou operaci skutečně potřebuje více času. Není však univerzální opravou. Pokud test čeká na nesprávný signál nebo používá sdílená data, delší limit pouze odloží selhání a prodlouží každý běh.

Stejně opatrně přistupujte k mazání. Test může vypadat neaktuálně, ale přitom pokrývat důležitý okrajový případ. Před odstraněním potvrďte jeho účel s člověkem, který rozumí produktu.

Co tím získáte

Další krok

Začněte výsledky prvních pokusů z posledních releasů a označte testy, které prošly až po opakování. Pokud historii nemáte, ozvěte se nám. Navrhneme krátké kontrolované měření a rozdělíme sadu na testy určené k opravě, prověření nebo vyřazení. Pokud je překážkou nepodporovaný nástroj, může být vhodnější portace testů.

Související témata

Mohlo by vás také zajímat

Spolehlivé výsledky jsou důležitější než počet testů

Změříme nestabilitu, prověříme pravděpodobné příčiny náhodných selhání a sadu stabilizujeme v dohodnutém rozsahu.