Bean Network Tester

Chaos testing di rete su Windows

Il chaos testing significa rompere qualcosa di proposito, mentre guardi, per scoprire cosa fa il tuo software. A livello di rete è esattamente questo strumento: un modo per iniettare un guasto in un’applicazione e vedere se sopravvive.

I guasti che puoi iniettare

GuastoCosa modella
Perdita, corruzione, duplicazioneUn percorso degradato. I pacchetti spariscono, arrivano danneggiati o arrivano due volte.
Latenza, jitter, picchiUn percorso lento o instabile, compreso il blocco di diversi secondi che manda in crisi i timeout.
Reset delle connessioniUn firewall o un bilanciatore di carico che uccide le connessioni a metà trasferimento.
Interruzioni del collegamentoIl percorso che scompare e ritorna, a cicli.
Indirizzo o porta bloccatiUna dipendenza irraggiungibile mentre tutto il resto funziona.
Internet assente, LAN vivaLa forma del captive portal: il locale funziona, il mondo no.

Cosa distingue il caos dal rumore: la ripetibilità

Un guasto casuale che non si può rigiocare produce un racconto, non una segnalazione di bug. Ogni decisione casuale qui nasce da un seed, quindi lo stesso comando riproduce la stessa esecuzione: gli stessi pacchetti persi, lo stesso jitter, nello stesso ordine:

BeanNetworkTester.exe --loss 15 --rst-prob 5 --seed 42 --target myapp.exe --duration 120

È la differenza tra «è caduto una volta martedì scorso» e un test che fallisce e che qualcun altro può eseguire.

In una pipeline

La riga di comando riporta con codici di uscita, quindi una build può distinguere «l’applicazione è fallita» da «lo strumento non è riuscito ad avviarsi», e la sessione termina da sola: non c’è nessun passaggio di pulizia da dimenticare:

BeanNetworkTester.exe --loss 10 --rst-prob 5 --target myapp.exe --duration 90 --format json > chaos.ndjson

Una sequenza di guasti invece di uno solo è un file di scenario, e anche questi sono ripetibili. Vedi scenari nel tempo e test di rete in CI per i codici di uscita e il runner che serve.

Dove si ferma il raggio d’azione

Due limiti, entrambi voluti. Il degrado raggiunge un processo, PID, indirizzo o porta quando lo punti, quindi la macchina su cui lavori continua a funzionare. Ed è una sola macchina: questa è iniezione di guasti per un client e la sua connessione, non per un cluster. Se cerchi caos tra servizi e nodi, è un altro tipo di strumento, e questo è il pezzo che rompe la rete sotto una singola applicazione Windows.

Tutto è reversibile all’istante. STOP ripristina la rete, un limite di tempo fa lo stesso, e un watchdog nello strumento chiude la cattura se lo strumento stesso muore: un guasto che hai iniettato non deve mai sopravvivere all’esecuzione che lo ha iniettato.

Prossimi passi

Pronto a rompere di proposito la tua rete?

Scarica per Windows