Wat is chaos testen?

Chaostesten is een techniek die wordt gebruikt om de veerkracht van softwaresystemen te testen door onverwachte storingen of verstoringen te introduceren. Chaostesten wordt ook wel chaos-engineering genoemd. Het doel van chaostests is het identificeren van zwakke punten en het verbeteren van de tolerantie van uw app.

Chaostesten zijn gebaseerd op het idee dat systemen op onverwachte manieren falen. Traditionele testmethoden schieten vaak tekort in het blootleggen van deze onverwachte storingsmodi. Wanneer u chaostests gebruikt, simuleert u scenario's uit de echte wereld, zoals servercrashes, netwerklatentie of uitputting van bronnen. Het simuleren van dit gedrag helpt om verborgen problemen en zwakke punten bloot te leggen die onder normale testomstandigheden misschien niet duidelijk zijn.

Hier volgen enkele belangrijke punten om rekening te houden met chaostests:

  • Wees proactief. In plaats van te wachten tot er fouten optreden, introduceert chaostesten proactief fouten om te zien hoe het systeem reageert. Met chaostests kunt u problemen identificeren en oplossen voordat ze grote problemen worden.
  • Krijg inzicht. Het doel van chaostests is om te leren van fouten. Door ze in te voeren, kunt u waardevolle inzichten krijgen in hoe het systeem zich gedraagt onder stress en deze informatie gebruiken om het te verbeteren.
  • Bevorder een teaminspanning. Chaostests zijn het meest effectief als u het samen doet. Je wilt input van ontwikkelaars, testers, operations en andere belanghebbenden. Door samen te werken, kunt u de belangrijkste gebieden identificeren om te testen en ervoor zorgen dat iedereen op de hoogte is.
  • Begin klein en bouw op. Wanneer u voor het eerst begint met chaostests, is het een goed idee om klein te beginnen en geleidelijk de complexiteit van uw tests te vergroten. Als u klein begint, kunt u vertrouwen opbouwen en een beter inzicht krijgen in hoe het systeem zich gedraagt onder verschillende omstandigheden.

Kortom, chaos testen is een krachtige techniek waarmee u de tolerantie van uw apps kunt verbeteren. Door proactief fouten te introduceren en ermee te leren, kunt u problemen identificeren en oplossen voordat ze belangrijke problemen worden.

Chaos testen voor de API's die uw app aanroept

Chaostests zijn vaak gericht op infrastructuur: servers, netwerken en containers. Als uw app afhankelijk is van API's, zijn sommige van de fouten die uw gebruikers merken afkomstig van deze API's: een 500 van een betalingsprovider, een 429 van GitHub of OpenAI, of een reactie die 8 seconden duurt in plaats van 80 milliseconden. U kunt dezelfde chaostestideeën toepassen op deze afhankelijkheden, op het niveau van afzonderlijke API-antwoorden:

  • Fouten. Geef willekeurig 5xxfouten terug en controleer of uw app opnieuw probeert wat veilig opnieuw kan worden geprobeerd en voor de rest een nuttig bericht weergeeft.
  • Snelheidsbeperking. Retourneer 429 met een Retry-After koptekst en controleer of uw app wacht voordat deze opnieuw wordt aangeroepen.
  • Latency. Vertraag reacties en controleer uw time-outs, spinners en wat er gebeurt wanneer antwoorden buiten de volgorde aankomen.
Approach Wat u vindt Wat u mist
Wacht op productie Echte storingen Alles, totdat een gebruiker erop klikt
Mock de API in je tests, of laat je codeeragent de mock schrijven Of uw foutvertakkingen worden uitgevoerd De werkelijke foutformaten van de API, het beleid voor opnieuw proberen van uw SDK en hoe de actieve app zich gedraagt. Uw app heeft ook een testswitch nodig om de mock te bereiken.
Echte infrastructuur verstoren (bijvoorbeeld een service beëindigen of netwerkverkeer blokkeren) Hoe uw systeem omgaat met storingen Fouten op API-niveau, zoals een specifieke foutcode of een Retry-After header
Het echte verkeer van uw app onderscheppen en API-fouten injecteren Fouten, snelheidsbeperking en latentie voor de werkelijke URL's, met een snelheid die u kiest Infrastructuurstoringen. Gebruik infrastructuur-chaostools daarvoor.

Probeer het in je app

Dev Proxy introduceert API-fouten in uw app terwijl uw app de echte URL's blijft aanroepen. Het werkt met elk type app, op elke technologiestack, zonder uw code te wijzigen. Als u bijvoorbeeld de helft van de aanvragen naar een API wilt laten mislukken met willekeurige fouten, volgt u Mijn app testen met willekeurige fouten en om ze te vertragen, raadpleegt u Trage API-antwoorden simuleren. Zie Dev Proxy gebruiken in CI/CD om dezelfde tests uit te voeren in uw CI-pijplijn.

Volgende stap