De stabiliteit van autotests is een belangrijk aspect van betrouwbare CI/CD en vertrouwen in automatisering.
Geschiedenis van de kwestie
Oorspronkelijk werden autotests handmatig uitgevoerd, en instabiliteit was niet zo'n groot probleem. Met de groei van het aantal tests en de integratie in pipelines werd het verschijnen van flaky tests (tests die soms zonder duidelijke reden falen) een groot probleem.
Probleem
Flaky tests leiden tot:
Oplossing
Wat helpt:
Voorbeeld van het gebruik van verwachtingen:
WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "result")) )
Belangrijke kenmerken:
Zal massale retry het probleem van flaky tests oplossen?
Nee, dit is slechts een tijdelijke "stopgap". Het lost de oorzaak niet op — het verbergt alleen bestaande problemen.
Kun je autotests alleen 's nachts uitvoeren om storingen door belasting te voorkomen?
'S nachts uitvoeren lost de instabiliteit niet op, het vermindert alleen de kans; het probleem blijft bestaan, de oorzaken moeten worden opgelost.
Moeten alle flaky tests meteen worden verwijderd?
Nee. Het is beter om te proberen de oorzaak te lokaliseren, deze te verhelpen — alleen als het niet mogelijk is om het stabiel te maken of het een verouderde, niet-relevante test is — verwijderen.
Het team maakte gebruik van massale retries voor tests die voortdurend flapperde. Als gevolg daarvan nam de lijst met "groene" tests toe, maar de kwaliteit van de autotests nam niet toe — bugs werden gemist.
Voordelen:
Nadelen:
Het team vond en beschreef systematische flaky oorzaken: niet-opgeruimde gegevens, UI-vertragingen, netwerkstoringen. Ze herstructureren de architectuur, voegden goede verwachtingen toe, configureerden de omgeving — het aantal instabiele tests daalde aanzienlijk.
Voordelen:
Nadelen: