Quanto tempo dovremmo dedicare in genere alla scrittura di unit test per una nuova funzione o correzione di errori?

8

Quando devo implementare una nuova funzione o correggere un bug, di solito provo a ricreare la situazione con un test. A volte spendo circa 3 ore a venire con infissi e scrivere il test. L'effettiva implementazione della funzione o la risoluzione dei bug richiede meno di 1 ora.

Qualcun altro là fuori spende almeno 3 volte di più per scrivere un test rispetto all'effettiva implementazione di una funzionalità o alla correzione di un bug? Qual è il rapporto accettabile tra il tempo trascorso a scrivere un test per scrivere il codice?

    
posta Thierry Lam 16.06.2011 - 16:25
fonte

5 risposte

12

Varia in base alla complessità del bug o della funzionalità. Ricordo un progetto che una volta aveva una stima di sviluppo di 1,5 settimane ... e una stima di test di 3 mesi. Il cambio di codice era piccolo, una manciata di linee qua e là ma incideva su un certo numero di componenti di un sistema assicurativo in un certo numero di modi, quindi doveva essere testato molto accuratamente. Un'altra volta c'era un bug che coinvolgeva una parentesi nel posto sbagliato. Ci sono voluti 2 ore per trovarlo, 2 secondi per risolverlo, ma circa una settimana per testare dozzine di scenari che potrebbero essere stati influenzati dal cambio di logica.

In generale, non mi preoccupo del rapporto tra il tempo speso per la codifica e il tempo trascorso test perché non c'è modo di essere precisi. Trovo che in alcuni progetti appaia un rapporto relativo al progetto che di solito è standard (rispetto al progetto), ma anche in quel caso può cambiare in seguito.

Spendi quanto tempo è necessario per dire con sicurezza che il codice funzioni correttamente.

    
risposta data 16.06.2011 - 16:29
fonte
6

Che ne dici di passare abbastanza tempo a scrivere i test fino a quando non avrai dimostrato che la funzionalità funziona come previsto, o se il bug è stato corretto correttamente.

Ogni situazione sarà diversa; non può esserci un qualche tipo di rapporto. Alcuni test impiegheranno un decimo di tempo per l'implementazione, altri impiegheranno centinaia di volte tanto tempo.

    
risposta data 16.06.2011 - 16:36
fonte
4

Una volta ho fatto un survery dopo aver introdotto i test unitari in un progetto. Il risultato: il tempo impiegato per scrivere i test era di nuovo del 40% circa tanto quanto il tempo impiegato per l'implementazione. Ma non stavamo mirando a una copertura completa lì, ed era un progetto ben collaudato con strong struttura e convenzioni.

    
risposta data 16.06.2011 - 16:34
fonte
2

Direi che la codifica del tempo rispetto ai test dell'unità di scrittura del tempo dovrebbe essere approssimativamente uguale. Forse un po 'di più a volte. Dai un'occhiata a questo articolo su SO Rapporto tra tempo dedicato alla codifica contro test di unità

    
risposta data 16.06.2011 - 16:30
fonte
0

Stai contando giusto? Per fare una contabilità accurata di quanto tempo spendi per i test, devi scrivere il codice senza il test.

Se ti ci sono voluti veramente tre ore per scrivere il test e uno per scrivere il codice per farlo passare, potresti scoprire che ci vogliono più di 5 ore per correggere lo stesso bug senza scrivere test.

Sì, molto spesso spendo molto più tempo del test rispetto al codice di correzione effettivo.

    
risposta data 16.06.2011 - 18:22
fonte

Leggi altre domande sui tag