Quello che stai descrivendo come flusso di lavoro non è secondo me lo Spirito del TDD.
La sinossi del libro di Kent Becks su Amazon dice:
Molto semplicemente, lo sviluppo guidato dai test ha lo scopo di eliminare la paura nello sviluppo delle applicazioni.Mentre un po 'di paura è salutare (spesso vista come una coscienza che dice ai programmatori di "stare attenti!"), L'autore crede che i sottoprodotti della paura includano programmatori incerti, scontrosi e non comunicativi che non sono in grado di assorbire le critiche costruttive. Quando i team di programmazione acquistano in TDD, vedono immediatamente risultati positivi. Eliminano la paura implicita nel loro lavoro e sono meglio attrezzati per affrontare le difficili sfide che devono affrontare. TDD elimina le caratteristiche provvisorie, insegna ai programmatori a comunicare e incoraggia i membri del team a cercare critiche Tuttavia, anche l'autore ammette che la scontrosità deve essere elaborata individualmente! In breve, la premessa alla base di TDD è che il codice dovrebbe essere continuamente testato e refactored.
TDD pratico
Test automatizzati formali, in particolare Unit Testing, ogni metodo di ogni classe è altrettanto un anti-pattern e non verifica nulla. C'è un equilibrio da avere. Stai scrivendo unit test per ogni setXXX/getXXX
metodo, sono anche metodi!
Inoltre i test possono aiutare a risparmiare tempo e denaro, ma non dimenticare che costano tempo e denaro per lo sviluppo e sono codici, quindi costano tempo e denaro per la manutenzione. Se si atrofizzano per mancanza di manutenzione, diventano una responsabilità più che un vantaggio.
Come tutto questo, c'è un equilibrio che non può essere definito da nessuno tranne te stesso. Qualsiasi dogma in entrambi i casi è probabilmente più sbagliato che corretto.
Una buona metrica è il codice che è fondamentale per la logica aziendale e soggetto a frequenti modifiche basate su requisiti mutevoli. Queste cose necessitano di test formali che sono automatizzati, il che sarebbe un grande ritorno sugli investimenti.
Sarà molto difficile trovare molti negozi professionali che funzionano in questo modo. Non ha semplicemente senso spendere soldi per testare cose che a tutti gli effetti pratici non cambieranno mai dopo che è stato preformato un semplice test del fumo. Scrivere test unitari automatizzati formali per i .getXXX/.setXXX
metodi è un ottimo esempio di questo, completa perdita di tempo.
Sono ormai passati due decenni da quando è stato sottolineato che i test del programma possono dimostrare in modo convincente la presenza di bug, ma non possono mai dimostrare la loro assenza. Dopo aver citato devotamente questa osservazione ben pubblicizzata, l'ingegnere del software ritorna all'ordine del giorno e continua a perfezionare le sue strategie di test, proprio come l'alchimista di un tempo, che ha continuato a perfezionare le sue purificazioni crisocosmiche.
- Edsger W. Djikstra . (Scritto nel 1988, quindi ora è più vicino ai 4,5 decenni.)
Vedi anche questa risposta .