Scaling Mobile Chaos Testing with AI-Driven Test Execution
Questo articolo presenta un sistema di chaos testing per dispositivi mobili guidato dall'IA che integra l'esecuzione di test basata su LLM con l'iniezione di guasti a livello di servizio per convalidare automaticamente la resilienza su larga scala, identificando con successo rischi architettonici critici e riducendo i tempi di debugging nelle applicazioni mobili di Uber.
Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo
Immagina Internet come una gigantesca e frenetica città dove milioni di piccoli messaggeri digitali (le app) corrono avanti e indietro per consegnare messaggi, cibo e corse. Dietro le quinte, questi messaggeri si affidano a una vasta, invisibile rete di servizi — come centrali elettriche, semafori e magazzini — per mantenere tutto in funzione correttamente. A volte, una di queste parti invisibili si rompe o rallenta. Questo è chiamato un "guasto" (failure). Nel mondo dell'ingegneria del software, esiste una pratica chiamata Chaos Engineering, che è fondamentalmente l'arte di rompere intenzionalmente le cose apposta per vedere se il sistema può sopravvivere. È come una prova antincendio per un edificio, ma invece del fuoco, si simula un blackout per vedere se le luci di emergenza funzionano.
Tuttavia, testare le app mobili (le app sul tuo telefono) è complicato. A differenza di un semplice sito web, un'app per smartphone deve gestire migliazioni di diverse città, lingue e abitudini degli utenti. Se provassi a testare ogni possibile modo in cui l'app potrebbe rompersi in ogni singola città, dovresti scrivere milioni di script di test. È come cercare di controllare ogni singola porta in una città grande come New York per vedere se si chiudono correttamente; è impossibile per gli esseri umani farlo manualmente. Questo articolo affronta questo impossibile problema matematico utilizzando l'Intelligenza Artificiale (IA) per eseguire i test al posto delle persone.
I ricercatori di Uber, un'azienda che mette in contatto passeggeri con conducenti e persone con il cibo, hanno costruito un sistema che combina due strumenti potenti. Il primo strumento è un robot IA chiamato DragonCrawl. Pensa a DragonCrawl come a un adolescente super intelligente e curioso che può guardare lo schermo di un telefono, capire ciò che vede (come "Oh, questo è un pulsante per ordinare una pizza") e capire cosa cliccare dopo senza che un essere umano debba scrivere un'istruzione specifica per ogni singolo pulsante. Il secondo strumento è uHavoc, un sistema che agisce come un sabotatore controllato. Rompe intenzionalmente parti del backend (l'invisibile rete di servizi) per vedere come reagisce l'app sul telefono.
Di solito, questi due strumenti lavoravano separatamente. DragonCrawl testava se l'app funzionava quando tutto era perfetto, e uHavoc testava se i server potevano gestire un crash. Ma i ricercatori si sono resi conto che, combinandoli, avrebbero potuto creare una macchina di "chaos testing" che gira automaticamente. Hanno lasciato che DragonCrawl navigasse nell'app mentre uHavoc contemporaneamente rompeva le cose in background. L'obiettivo era vedere se l'app potesse continuare a funzionare (come ordinare una corsa) anche quando i servizi backend stavano avendo una brutta giornata.
L'articolo spiega come hanno costruito questo sistema e cosa è successo quando lo hanno acceso. Non hanno solo tirato a indovinare; hanno fatto girare il sistema oltre 18ore 180.000 volte a partire dal primo trimestre del 2024. Hanno testato 47 flussi critici (come prenotare una corsa o ordinare cibo) attraverso le app Rider, Driver ed Eats di Uber. I risultati sono stati impressionanti. Il sistema guidato dall'IA ha trovato 23 problemi seri che gli umani avevano mancato. La maggior parte di questi riguardava casi in cui il guasto di un servizio piccolo e poco importante causava il crash di una funzione grande e importante (come pagare una corsa). Infatti, due dei problemi trovati avrebbero causato il blocco completo e il crash dell'app, qualcosa che solo un test su un vero telefono poteva rilevare.
Una delle parti più interessanti della loro scoperta è come hanno risolto il "gioco del colpevole". Quando un test falliva, prima ci volevano ore di lavoro di ingegneri senior per capire quale servizio rotto avesse causato il malfunzionamento dell'app. Il loro nuovo sistema usa l'IA per esaminare le prove e indovinare il colpevole. È stato corretto riguardo alla causa principale l'88% delle volte analizzando le prime cinque ipotesi. Questo ha ridotto il tempo necessario per risolvere i problemi da ore a minuti.
L'articolo evidenzia anche che questa non era solo una teoria. Hanno dimostrato che funziona nel mondo reale senza danneggiare i veri clienti. Hanno scoperto che l'IA era incredibilmente affidabile, superando il 99% dei test anche quando le cose si rompevano in background. Ciò significa che il sistema è abbastanza robusto da poter girare ogni notte, controllando costantemente se l'app è pronta per un disastro. Gli autori sostengono che questo approccio risolve il problema dell' "esplosione combinatoria" — l'idea che il numero di test necessari cresca così velocemente da diventare impossibile da gestire. Usando l'IA per adattarsi allo schermo in tempo reale, non hanno avuto bisogno di scrivere milioni di script di test; l'IA ha semplicemente capito come procedere man mano che avanzava.
Tuttove, l'articolo fa attenzione a sottolineare cosa questo sistema non può fare. Non può testare cose come il taglio dei cavi internet o i guasti nei servizi che Uber non controlla (come un fornitore di mappe di terze parti). Inoltre, si basa sul fatto che l'azienda abbia i propri servizi correttamente etichettati e tracciati, il che richiede molto lavoro per essere impostato inizialmente. Ma per i problemi che riesce a risolvere, l'articolo suggerisce che questo sia un enorme passo avanti. Trasforma il chaos testing per dispositivi mobili da un evento raro, costoso e manuale in un controllo di sicurezza di routine, automatizzato, che avviene ogni singola notte, garantendo che quando tocchi "Ordina" sul tuo telefono, l'app sia pronta per qualsiasi cosa l'internet possa lanciargli contro.
Sommerso dagli articoli nel tuo campo?
Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.