Si consigliano test post-hoc in TDD?

2

Ho un progetto personale che non ha test robusti. All'inizio avevo un po 'di TDD, ma è diventato rapidamente controproducente poiché i dettagli del progetto sono cambiati drasticamente nel tempo. Quindi molti test scritti in precedenza sono diventati inutili.

Ora che il progetto si è solidificato un po ', non penso che siano probabili grandi cambiamenti. Dovrei tornare indietro e riscrivere quei test per le vecchie funzionalità o semplicemente avviare test freschi e di scrittura solo per nuove funzionalità?

    
posta garbage collection 17.07.2012 - 08:26
fonte

3 risposte

5

Ogni volta che vuoi modificare un'area non testata, riscrivi i test per la piccola area che stai modificando e poi apporta le tue modifiche.

Questo ti permetterà di riscoprire / specificare il vecchio codice.

    
risposta data 17.07.2012 - 10:21
fonte
2

Finché i vecchi test sono andati bene e le regole aziendali che coprono sono ancora valide, allora vale la pena rivisitare. Speriamo che ci voglia solo qualche modifica a quei test. La cosa più importante è che tutte le regole aziendali sono coperte dai test, se le regole aziendali sono considerate "vecchie" o "nuove".

Sfortunatamente, tornare indietro e fare questo in massa ci vorrà un po 'di tempo. Ma alla fine ne varrà la pena. Perché alla fine il numero di bug rilevati dovrebbe essere molto inferiore. Spero che tu non cada di nuovo in questa stessa fossa. Un sacco di persone che fanno TDD tendono a saltare i test di fissazione quando sono in crisi o ci sono grandi cambiamenti. Ma penso che sia più controproducente, perché non si è sicuri di quali saranno gli effetti della modifica di un particolare modulo e si potrebbero finire con ancora più bug. I test dovrebbero essere trattati come un altro consumatore del codice e dovrebbero essere trattati nella stessa categoria, come ad esempio l'interfaccia utente.

    
risposta data 17.07.2012 - 14:12
fonte
1

Personalmente ritengo che dovresti trattare questa situazione come se il vecchio codice fosse "legacy" (come nel libro di Feathers "Working with Legacy Code") e andare avanti da quel punto.

Significa che ridisegna tutte le parti "solidificate" ma non testate, una alla volta, prima i test. Forse alcune parti diventano nuove. più semplice, implementazione, forse non del tutto in quanto quella esistente va bene.

Ma è solo una sensazione, non ero ancora in una situazione simile.

    
risposta data 17.07.2012 - 14:24
fonte

Leggi altre domande sui tag