Proč je téma důležité
Flaky test někdy projde a někdy selže, přestože se testovaný kód nezměnil. Zpočátku působí jako drobná nepříjemnost. Postupně však tým začne selhání opakovat, ignorovat nebo obcházet. Automatizace pak přestává poskytovat důvěryhodný signál.
Největším nákladem flaky testů není samotný čas běhu. Je jím ztráta pozornosti, zpoždění releasů a riziko, že skutečná regrese bude považována za další náhodné selhání.
Jak postupovat správně
Měřte míru nestability
Ukládejte historii běhů a rozlišujte první výsledek od výsledku po opakování. Sledujte testy, které opakovaně mění stav.
Klasifikujte pravděpodobnou příčinu
Rozdělte problémy na synchronizaci, data, prostředí, síť, externí službu, náhodnost nebo chybu testu.
Získejte diagnostické důkazy
Ukládejte trace, screenshot, video, konzolové logy, síťové požadavky a verzi prostředí.
Izolujte test a jeho data
Každý test má vlastní data, předvídatelný začátek a úklid. Pořadí spuštění nesmí měnit výsledek.
Nahraďte pevné čekání stavem
Čekejte na konkrétní událost, odpověď nebo viditelný stav. Dlouhý sleep pouze maskuje závodní podmínky.
Karanténu používejte dočasně
Nestabilní test může být dočasně vyjmut z release brány, ale musí mít ticket, vlastníka a termín opravy.
Čemu se naopak vyhnout
- Opakovanému spuštění jako trvalému řešení problému.
- Zvyšování všech timeoutů bez pochopení, na co test skutečně čeká.
- Ignorování flaky testů, které „většinou projdou“.
- Sdíleným účtům a záznamům mezi paralelními testy.
- Příliš dlouhým scénářům s mnoha možnými body selhání.
Praktický příklad
Test vytvoření kampaně občas selže při hledání nového řádku. Trace ukáže, že backend dokončil operaci, ale seznam se ještě neobnovil. Místo pevného čekání test zachytí odpověď vytvoření, použije vrácené ID a čeká na konkrétní řádek.
Současně každý běh používá vlastní název a účet. Flakiness zmizí a test znovu poskytuje jednoznačný signál.
Ponaučení pro praxi
Flaky test není běžný šum, ale závada testovacího systému. Důvěru obnoví měření, diagnostika, izolace a jasná odpovědnost za opravu.
Správný postup nemusí být složitý. Důležité je, aby byl vědomý, opakovatelný a aby tým dokázal vysvětlit, proč zvolil právě tento způsob kontroly. Kvalita nevzniká jedním nástrojem ani jednou rolí; vzniká kombinací dobrých otázek, důkazů a následné zpětné vazby.
