Ciò che descrivi come un flusso di lavoro non è secondo me lo Spirito di TDD.
La sinossi del libro di Kent Becks su Amazon dice:
Quite simply, test-driven development is meant to eliminate fear in
application development. While some fear is healthy (often viewed as a
conscience that tells programmers to "be careful!"), the author
believes that byproducts of fear include tentative, grumpy, and
uncommunicative programmers who are unable to absorb constructive
criticism. When programming teams buy into TDD, they immediately see
positive results. They eliminate the fear involved in their jobs, and
are better equipped to tackle the difficult challenges that face them.
TDD eliminates tentative traits, it teaches programmers to
communicate, and it encourages team members to seek out criticism
However, even the author admits that grumpiness must be worked out
individually! In short, the premise behind TDD is that code should be
continually tested and refactored.
TDD pratico
I test automatizzati formali, in particolare i test unitari di ogni metodo di ogni classe, sono un cattivo anti-modello e non provano nulla. C'è un equilibrio da avere. Stai scrivendo unit test per ogni metodo setXXX/getXXX
, sono anche metodi!
Anche i test possono aiutare a risparmiare tempo e denaro, ma non dimenticare che costano tempo e denaro per lo sviluppo e sono codice, quindi costano tempo e denaro per la manutenzione. Se si atrofizzano per mancanza di manutenzione, diventano una responsabilità più che un beneficio.
Come in tutto questo, esiste 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 è un codice che è fondamentale per la logica aziendale e soggetto a frequenti modifiche in base ai requisiti in evoluzione. Quelle cose necessitano di test formali automatizzati, sarebbe un grosso ritorno sull'investimento.
Sarai molto difficile trovare anche molti negozi professionali che funzionano così. Semplicemente non ha senso per gli affari spendere soldi per testare cose che per tutti gli scopi pratici non cambieranno mai dopo che un semplice test del fumo è stato eseguito. La scrittura di test di unità automatizzate formali per metodi .getXXX/.setXXX
ne è un primo esempio, completa perdita di tempo.
It is now two decades since it was pointed out that program testing
may convincingly demonstrate the presence of bugs, but can never
demonstrate their absence. After quoting this well-publicized remark
devoutly, the software engineer returns to the order of the day and
continues to refine his testing strategies, just like the alchemist of
yore, who continued to refine his chrysocosmic purifications.
-- Edsger W. Djikstra. (Written in 1988, so it's now closer to
4.5 decades.)
Vedi anche questa risposta .