Che cos'è il chaos testing?

Il Chaos testing è una tecnica utilizzata per testare la resilienza dei sistemi software introducendo guasti o interruzioni impreviste. Il test del caos è noto anche come ingegneria del caos. L'obiettivo dei test di chaos è identificare i punti deboli e migliorare la resilienza dell'app.

Il test del caos si basa sull'idea che i sistemi falliscono in modi inaspettati. I metodi di test tradizionali spesso non sono in grado di scoprire queste modalità di errore impreviste. Quando si utilizza il chaos testing, si simulano scenari reali, ad esempio arresti anomali del server, latenza di rete o esaurimento delle risorse. La simulazione di questi comportamenti consente di esporre problemi nascosti e punti deboli che potrebbero non essere evidenti in normali condizioni di test.

Ecco alcuni punti chiave da tenere presenti sui test del caos:

  • Sii proattivo. Invece di attendere che si verifichino errori, i test del caos introducono in modo proattivo gli errori per vedere come risponde il sistema. Il test chaos consente di identificare e risolvere i problemi prima che diventino problemi principali.
  • Ottieni approfondimenti. L'obiettivo dei test di chaos è imparare dai guasti. Introducendoli, è possibile ottenere preziose informazioni dettagliate sul comportamento del sistema sotto stress e usare tali informazioni per migliorarlo.
  • Promuovere un lavoro di squadra. Il test del caos è più efficace quando lo si fa in modo collaborativo. Si desidera un input da sviluppatori, tester, operazioni e altre parti interessate. Lavorando insieme, è possibile identificare le aree più importanti da testare e garantire che tutti siano informati.
  • Parti in piccolo e sviluppa gradualmente. Quando si inizia con i test del caos, è una buona idea iniziare in piccolo e aumentare gradualmente la complessità dei test. L'avvio di piccole dimensioni consente di creare fiducia e sviluppare una migliore comprensione del comportamento del sistema in condizioni diverse.

In sintesi, il test chaos è una tecnica potente che consente di migliorare la resilienza delle app. Introducendo in modo proattivo gli errori e imparando da essi, è possibile identificare e risolvere i problemi prima che diventino problemi principali.

Chaos testing per le API chiamate dalla tua app

Il test chaos è spesso incentrato sull'infrastruttura: server, reti e contenitori. Se l'app dipende dalle API, alcuni dei malfunzionamenti che gli utenti notano provengono da tali API: un 500 da un provider di pagamento, un 429 da GitHub o da OpenAI, o da una risposta che impiega 8 secondi invece di 80 millisecondi. È possibile applicare le stesse idee di chaos testing a tali dipendenze, a livello di singole risposte API:

  • Errori. Restituisci 5xx errori in modo casuale e verifica che l'app esegua automaticamente un nuovo tentativo per ciò che è sicuro riprovare e mostri un messaggio utile per il resto.
  • Strozzatura. Restituisci 429 con un'intestazione Retry-After e verifica che l'app attenda prima di chiamare di nuovo.
  • Latenza. Ritarda le risposte e controlla i timeout, gli spinner e cosa accade quando le risposte arrivano fuori ordine.
Avvicinarsi Cosa trovi Quello che ti manca
Attendere il completamento della produzione Guasti reali Tutto, fino a quando un utente non ci fa clic
Simula l'API nei test o consenti all'agente di codifica di scrivere il mock Se i rami di errore vengono eseguiti I formati di errore reali dell'API, la politica di retry dell'SDK e il comportamento dell'app in esecuzione. L'app richiede anche un'opzione di sola prova per raggiungere il mock.
Compromettere l'infrastruttura reale (ad esempio, terminare un servizio o bloccare il traffico di rete) Come il tuo sistema gestisce le interruzioni Errori a livello di API, ad esempio un codice di errore specifico o un'intestazione Retry-After
Intercettare il traffico reale dell'app e simulare guasti API Errori, limitazione della larghezza di banda e latenza sugli URL reali, alla frequenza che scegli Guasti dell'infrastruttura. Usa strumenti di chaos engineering per l'infrastruttura per tali casi.

Provalo nella tua app

Dev Proxy introduce errori delle API nella tua app mentre continua a chiamare gli URL reali. Funziona con qualsiasi tipo di app, su qualsiasi stack tecnologico, senza dover modificare il codice. Ad esempio, per far fallire metà delle richieste a un'API con errori casuali, seguire Testare l'app con errori casuali e per renderle lente, vedere Simulare risposte API lente. Per eseguire gli stessi test nella pipeline di CI, consulta Usare Dev Proxy in CI/CD.

Passo successivo