Waarom mislukken mijn tests terwijl de applicatie goed werkt?
Een end-to-end-test wordt rood wanneer het netwerk traag is, DNS niet werkt, de site antwoordt met een 403 of een 429 of een botcontrole toont, of de browser vastloopt, en niets daarvan is een defect in je applicatie. Nexus Studio, van Verdict System LLC, geeft deze mislukkingen een eigen oordeel: TIMEOUT, UNREACHABLE, BLOCKED en CRASHED. Geen daarvan wordt als een bug in de applicatie gemeld.
Door het team van Nexus Studio, Verdict System LLC. 7 oktober 2026.
Waardoor mislukt een test zonder dat er een bug is?
Een test meldt alleen dat iets niet is gebeurd. De oorzaak kan op vier plekken liggen die niets met je code te maken hebben:
- de pagina was traag en de test overschreed de tijdslimiet;
- de host was niet bereikbaar, bijvoorbeeld doordat de naam niet kon worden omgezet naar een IP-adres;
- de site beschermde zichzelf met een 403, een 429, een CAPTCHA of een botcontrole, waardoor het verzoek je product nooit bereikte;
- de browser of het proces viel uit.
Als al deze gevallen alleen als rood worden weergegeven, registreert het team ze als bugs, of leert het rode tests opnieuw uit te voeren in plaats van de resultaten te lezen. In beide gevallen raakt het echte defect verborgen in de ruis.
Hoe onderscheidt Nexus Studio een onterecht mislukte test van een bug?
Wanneer een test mislukt, leest de engine de foutmelding en het netwerklogboek van de uitvoering en vergelijkt deze in een vaste volgorde met groepen patronen. De eerste groep die overeenkomt, bepaalt het oordeel. De volgorde is CONFIG_ERROR, daarna CRASHED, BLOCKED, UNREACHABLE en TIMEOUT, en pas daarna BREACHED_FLAKY of BREACHED. Zo blijft BREACHED, het oordeel dat een bugrapport oplevert, voorbehouden aan een mislukking die niet door een patroon uit de omgeving of de testinfrastructuur wordt verklaard. De patronen dekken de formuleringen van zowel Playwright als Selenium WebDriver.
Wat betekenen TIMEOUT, UNREACHABLE, BLOCKED en CRASHED?
- TIMEOUT: de test kreeg niet op tijd antwoord. Dat bewijst niet dat de applicatie defect is, en ook niet dat die werkt: de uitvoering kan daar geen uitsluitsel over geven. Een navigatie die de tijdslimiet overschrijdt, is een TIMEOUT, omdat die wel begon maar de pagina traag was.
- UNREACHABLE: de host was helemaal niet bereikbaar. DNS of de verbinding werkte niet voordat er een pagina kon worden waargenomen, bijvoorbeeld door een naam die niet naar een IP-adres kon worden omgezet, een geweigerde verbinding of een offline machine. Een certificaatfout valt hier niet onder: dat is een bevinding.
- BLOCKED: de site beschermde zichzelf met een 403, een 429, een blokkeringspagina of een botcontrole. Als er een beveiligingsmaatregel op het scherm stond, vermeldt metadata.json welke dat was. Een echte Android-telefoon die in slaapstand staat of vergrendeld is, krijgt ook BLOCKED, omdat niet aan een vereiste is voldaan.
- CRASHED: de browser of het proces viel uit, bijvoorbeeld door een gesloten pagina, een DevTools-protocolfout of een verbroken WebDriver-sessie. Dit ligt aan de infrastructuur: controleer de machine en het stuurprogramma.
De gids voor oordelen vermeldt de exacte foutpatronen achter elk oordeel.
Wat ziet mijn CI-pijplijn?
Zeven van de 14 oordelen geven afsluitcode 0: SECURE, AUTO_RECOVER, FLAKY, CHAOS_RESILIENT, PERFORMANCE_DEGRADED, A11Y_VIOLATION en SECURITY_VIOLATION. De andere zeven geven afsluitcode 1, waaronder TIMEOUT, UNREACHABLE, BLOCKED en CRASHED. De build wordt dus nog steeds rood, omdat de test niet is geslaagd, maar het rapport en de Geschiedenis vermelden de oorzaak. De pytest- en Selenium-testrunners geven afsluitcode 2 als de uitvoering helemaal niet kon starten.
Welk bewijsmateriaal wordt bij elke onterecht mislukte test bewaard?
Bij alle vier worden report.md, metadata.json, raw-data.json en een schermafbeelding van het laatste beeld bewaard. Voor video verschilt dit:
- TIMEOUT en BLOCKED: video staat standaard uit. Schakel dit in bij Instellingen, onder Video van mislukte tests bewaren voor.
- UNREACHABLE: er wordt geen video aangeboden, omdat er geen pagina is geladen en de opname leeg zou zijn.
- CRASHED: er wordt geen video aangeboden, omdat de opname van een uitgevallen browser onbruikbaar is.
Alleen Playwright-uitvoeringen voor het web en geëmuleerde mobiele apparaten nemen video op. Een echte Android-telefoon, een Selenium-uitvoering en een API-test doen dat niet.
Als Jira is ingeschakeld, wordt bij een TIMEOUT een ticket aangemaakt, maar nooit bij een blokkering, een crash of een onbereikbare site.
Wat zijn de beperkingen?
- De classificatie leest foutteksten. Een zelfgeschreven melding die
403,ForbiddenofAccess Deniedbevat, wordt als BLOCKED geïnterpreteerd. Houd aangepaste assertiemeldingen specifiek, en open metadata.json als een oordeel je verrast. - Een TIMEOUT bewijst niet dat de applicatie werkt. Een test die bij elke uitvoering de tijdslimiet overschrijdt, verdient aandacht.
- Een langere time-out verbergt een defect element niet: de test mislukt alleen later.
- Deze beoordelingen benoemen de oorzaak van een mislukte uitvoering. Ze nemen de oorzaak niet weg: een geblokkeerde site blijft geblokkeerd totdat je die op een andere manier benadert.
Waar kan ik het zien?
De bewijspagina volgt één mislukte test en vermeldt alle bestanden die elke beoordeling op je schijf achterlaat. De gids voor beoordelingen legt uit in welke volgorde de engine alle 14 bepaalt. De proefversie van 30 dagen gebruikt dezelfde engine voor je eigen tests.