Storicamente, quando il numero di test automatici nei progetti cresceva, iniziarono a sorgere problemi: i test si confondevano, superavano i limiti di tempo di esecuzione, diventava difficile capire a cosa rispondeva ciascuno. Inoltre, aumentava il rischio di dipendenze tra diverse parti del sistema di test e si rallentava il lavoro complessivo dei pipeline.
Il problema si presenta quando il numero di test cresce più velocemente del supporto architettonico per l'infrastruttura di test. Senza soluzioni scalabili, i test diventano lenti, complessi da mantenere, complicando la ricerca e la localizzazione dei difetti, e cresce rapidamente il debito tecnico.
La soluzione sta nell'implementare strategie speciali:
Caratteristiche chiave:
È possibile rendere tutti i test solo di integrazione per coprire più codice contemporaneamente?
No, questo approccio riduce la localizzazione dei difetti e porta a costi di mantenimento elevati, oltre a rallentare l'esecuzione del regressione.
La scalabilità dei test automatici significa solo accelerarli?
La scalabilità è architettura, manutenibilità, accelerazione e infrastruttura flessibile. L'accelerazione è solo una conseguenza di un sistema grande ben progettato.
Come scalare correttamente i test per team che lavorano in diversi fusi orari?
È importante prevedere la possibilità di esecuzioni localizzate e la dipendenza degli ambienti di test, altrimenti ci saranno "conflitti" tra i compiti dei team.
In azienda sono subito arrivate diverse squadre, che aggiungevano nuovi test automatici in una sola cartella, senza coordinare le proprie modifiche. Dopo alcune settimane, i test automatici hanno iniziato a cadere a causa di disallineamenti nei dati e dipendenze, e il tempo di avvio ha superato le 2 ore.
Vantaggi:
Svantaggi:
In uno dei team è stata realizzata una struttura modulare, è stato introdotto un CI separato per aree di codice, aumentando la stabilità, e sono stati implementati avvisi automatici sui test inefficaci.
Vantaggi:
Svantaggi: