Ecco lo scenario.
- Esiste una grande applicazione sviluppata in modo organico e sviluppata in una lingua e in un modo che rende difficile la verifica. Funziona ma è difficile da mantenere.
- Le specifiche sono lanose, quindi anche se il codice fosse accettabile, è difficile sapere cosa dovrebbero fare le cose senza farle.
- Vuoi metterlo in un'imbracatura di prova in modo da poter iniziare a refactoring e creare test di unità adeguati.
In questi casi ha senso costruire un imbragatura 'test tutto' esterno o superficiale in modo da poter avviare un refactoring più aggressivo per consentire di scrivere test di unità adeguati. Questa sembra una pratica abbastanza consolidata di introdurre in modo incrementale test.
"La cosa principale che distingue il codice legacy dal codice non legacy è una mancanza test completi. "- Michael C. Feathers (Funzionante in modo efficace con il codice legacy)
La mia domanda è questa:
Ha senso creare una serie di test Behavior Driven a questo punto ed eseguirli tramite una sorta di clicker automatico dei pulsanti? Sto pensando a qualcosa (ma non limitato a) cetriolo o simile in cui i test leggibili dall'uomo corrispondono a codice / script eseguibili che dimostrano che il comportamento definito è stato rispettato.
Un chiaro vantaggio di questo è che una specifica di umano leggibile potrebbe essere sviluppata insieme ai test e che queste specifiche sono molto più facili da confermare come corrette e corrette con gli utenti / sviluppatori del sistema. Sono essenzialmente test di integrazione ma svolgono la funzione raccomandata da Feathers.
eta: Non sto chiedendo un suggerimento specifico per uno strumento, lo strumento attuale è irrilevante (anche se sarebbe utile sapere se effettivamente esiste). Sto cercando un controllo di integrità e raccomandazioni sui test di integrazione BDD esterni.