Test di regressione
Si tratta di test di regressione .
Immagina che il prossimo sviluppatore guarderà il tuo metodo e noterà che stai usando numeri magici. Gli fu detto che i numeri magici sono malvagi, quindi crea due costanti, una per il numero due, l'altra per il numero tre: non c'è nulla di sbagliato nel fare questo cambiamento; non è come se stesse modificando la tua implementazione già corretta.
Distratto, inverte due costanti.
Commette il codice e tutto sembra funzionare bene, perché non ci sono test di regressione in esecuzione dopo ogni commit.
Un giorno (potrebbero essere settimane dopo), qualcosa si rompe altrove. E altrove, intendo nella posizione completamente opposta della base di codice, che sembra non avere nulla a che fare con la polynominal
funzione. Ore di doloroso debug portano al colpevole. Durante questo periodo, l'applicazione continua a fallire nella produzione, causando molti problemi ai clienti.
Mantenere i test originali che hai scritto potrebbe prevenire tale dolore. Lo sviluppatore distratto impegnava il codice e quasi immediatamente vedeva che aveva rotto qualcosa; tale codice non raggiungerà nemmeno la produzione. I test unitari saranno inoltre molto precisi sulla posizione dell'errore . Risolvere non sarebbe difficile.
Un effetto collaterale ...
In realtà, la maggior parte dei refactoring è fortemente basata sui test di regressione. Apporta una piccola modifica. Test. Se passa, va tutto bene.
L'effetto collaterale è che se non si hanno test, praticamente qualsiasi refactoring diventa un enorme rischio di infrangere il codice. Dato che in molti casi, è già difficile spiegare alla direzione che il refactoring dovrebbe essere fatto, sarebbe ancora più difficile farlo dopo che i tuoi precedenti tentativi di refactoring introducevano più bug.
Avendo una serie completa di test, stai incoraggiando il refactoring e, quindi, un codice più pulito. Senza rischi, diventa molto allettante rifattorizzare di più, su base regolare.
Cambiamenti nei requisiti
Un altro aspetto essenziale è che i requisiti cambiano. È possibile che ti venga chiesto di gestire numeri complessi e improvvisamente, devi cercare nel registro di controllo della versione per trovare i test precedenti, ripristinarli e iniziare ad aggiungere nuovi test.
Perché tutta questa seccatura? Perché rimuovere i test per aggiungerli in un secondo momento? Avresti potuto tenerli in primo luogo.