Flaky test

Een flaky test is een analyse van webapplicatiecode die er niet in slaagt elke keer hetzelfde resultaat op te leveren als dezelfde analyse wordt uitgevoerd. Telkens wanneer nieuwe code wordt geschreven om computersoftware, een webpagina of een app te ontwikkelen of bij te werken, moet deze tijdens het ontwikkelingsproces worden getest om ervoor te zorgen dat de toepassing doet wat ze moet doen wanneer ze wordt vrijgegeven voor gebruik. Logischerwijs zal de code, wanneer deze steeds opnieuw aan dezelfde test wordt onderworpen, hetzelfde resultaat opleveren - de applicatie zal ofwel iedere keer goed werken en dus slagen voor de test, ofwel iedere keer niet goed werken en dus niet slagen voor de test.

Hoewel, schijnbaar willekeurig, zal dezelfde test van dezelfde code af en toe verschillende resultaten opleveren. Soms zal blijken dat de code de test heeft doorstaan en de applicatie werkt zoals gepland, en soms zal blijken dat de code de test niet heeft doorstaan en niet werkt zoals gepland. Wanneer de test er niet in slaagt een consistent resultaat te produceren, wordt de test als flaky beschouwd.

Flakke tests kunnen door verschillende factoren worden veroorzaakt:

  • een probleem met de nieuw geschreven code
  • een probleem met de test zelf
  • een externe factor die de testresultaten in gevaar brengt

Als een test eenmaal als flaky wordt beschouwd, zijn er verschillende benaderingen om met de verwarde resultaten om te gaan. Sommige ontwikkelaars negeren de fout volledig, in de veronderstelling dat het probleem bij de test ligt en niet bij de nieuw geschreven code. Anderen zullen hun test meerdere malen herhalen en pas verder onderzoeken als de test een bepaald aantal keren achter elkaar faalt, wat voor hen een echte fout aangeeft.

Hoewel, de veiligste aanpak - de enige manier om echt uit te vinden of er een bug in de code zit - is om de ontwikkeling van de applicatie te stoppen, de oorzaak van de flaky test volledig te onderzoeken en deze op te lossen.

Bij het onderzoeken van de oorzaak van een flaky test zal de ontwikkelaar gegevens moeten verzamelen om te proberen verschillen te ontdekken in de schijnbaar willekeurige resultaten om zo de oorzaak van de mislukte tests te isoleren. De code moet opnieuw worden onderzocht, net als de test zelf, en als er geen problemen worden gevonden, moet er naar externe factoren worden gekeken om te zien of die de kern van het probleem zouden kunnen zijn. De ontwikkelaar kan bijvoorbeeld kijken of de tests die wel goed waren op een bepaald tijdstip van de dag zijn uitgevoerd, terwijl de tests die niet goed waren op een ander tijdstip van de dag zijn uitgevoerd, of bepaalde programma's op de computer van de ontwikkelaar draaiden op hetzelfde tijdstip als de tests die wel goed waren, of dat de tests die niet goed waren dat op hetzelfde tijdstip van de test deden of op andere tijdstippen tijdens de test.

Soms is de oorzaak van de flaky test eenvoudig vast te stellen en snel te verhelpen. Dat is het beste scenario. In andere gevallen is er geen eenvoudige oplossing en moet de ontwikkelaar, hoewel dit kostbaar en tijdrovend kan zijn, de test verwijderen en deze helemaal opnieuw schrijven om de nauwkeurigheid van de testresultaten te waarborgen.

Treurig genoeg zijn flaky tests niet ongewoon -- Google meldt bijvoorbeeld dat 16 procent van zijn tests een zekere mate van flakiness vertonen. Ze kunnen de productie tijdelijk tot stilstand brengen, maar er kan iets aan worden gedaan en ze kunnen worden opgelost.