Lavoro nel team di gestione delle versioni di una società Internet molto grande. Usiamo essenzialmente il processo che hai descritto sopra e abbiamo scelto quel processo di proposito. Nella nostra metodologia, la stadiazione funge da meccanismo di ramificazione per un livello finale di test in produzione.
Ovviamente vuoi fare tutti i test prima di andare in produzione, ma in un ambiente ampio e complesso con molti utenti, questo è un obiettivo molto difficile da raggiungere. In particolare, è praticamente impossibile caricare adeguatamente il software di prova nel QA. I test funzionali sono molto più facili da automatizzare rispetto ai test di carico. Quando hai migliaia di utenti che colpiscono i tuoi server, le cose falliscono in modi strani e difficili da prevedere.
Quindi, ecco cosa facciamo:
- Sviluppo
- include integrazione continua e test automatizzati
- test di rilascio
- il mio gruppo analizza il rilascio stesso
- revisione dei registri di installazione
- test di rollback
- QA
- test di accettazione dell'utente
Questo è il punto in cui si dirama tra messa in scena e produzione. Usiamo un modello di treno per le versioni, con un nuovo treno che parte ogni poche settimane. Anche i treni numerati vanno ai server di gestione temporanea (che sono in produzione). I treni dispari non lo fanno.
Tra i treni pari, gli sviluppatori hanno la possibilità di inviare singole modifiche ai server di gestione temporanea ( ovviamente dopo che tali modifiche sono state testate dal QA). Ciò consente loro di verificare che il loro software funzioni come previsto in un ambiente di produzione reale. Questo è generalmente riservato ai componenti che sono considerati a maggior rischio, non spingiamo ogni piccolo pezzo in scena.
Quindi, tutti capiscono che quando inizia il prossimo treno pari, spazzerà via ciò che è sui server di gestione temporanea e li riporta alla linea di base del treno. Gli sviluppatori assicurano che le loro modifiche siano entrate nel treno o decidono che non sono ancora pronte per l'uso generale, nel qual caso tali modifiche vengono semplicemente cancellate sui server di gestione temporanea.
Per riassumere, la risposta breve (almeno per noi) è che è impossibile testare completamente sistemi complessi nel QA. La stadiazione offre un modo sicuro per eseguire test di produzione limitati.
Su una nota correlata, ecco le mie diapositive da una presentazione che ho appena dato su come funziona il nostro processo di rilascio.