È mai giustificato scrivere codice di produzione senza scrivere anche test per questo durante lo sviluppo di Test Driven?
È mai giustificato scrivere codice di produzione senza scrivere anche test per questo durante lo sviluppo di Test Driven?
TDD rigoroso? Assolutamente no. Come puoi scrivere un test, fallire, farlo passare, senza scrivere un test?
Nel mondo reale, pochissime persone fanno rigoroso TDD. È un ideale che non dovrebbe essere permesso di intralciare il buon senso. Ogni regola ha uno scenario in cui è giustificato romperlo e va bene. Ma non dovremmo mentire a noi stessi o agli altri e pretendere di fare TDD quando non lo facciamo. Se per nessun altro motivo dà una brutta impressione di TDD, quando non riesce a raggiungere i suoi obiettivi.
(Sostituisci TDD con qualsiasi altro processo e il punto si trova.)
Inoltre, la giustificazione più comune per non fare TDD è il tempo. E questo è molto raramente una buona ragione.
Se una modifica non è complessa, non dovrebbe richiedere molto tempo per scrivere il test. Se è complesso, inviti a risolvere i problemi non scrivendo prima i test, quindi il tempo non viene spesso salvato.
Ma forse c'è una giustificazione anche per quello. Forse è meglio avere qualcosa di imperfetto nel mercato e poi aggiustarlo.
Senza conoscere la giustificazione contestata, è difficile sapere se è valida. Ma ribadisco che molte regole possono essere infrante, con buona giustificazione. Finché siamo onesti con noi stessi a riguardo e riconosciamo quando si rivela essere un errore.
A seconda della definizione di "anche test di scrittura", potrebbe essere accettabile:
Alla fase Refactor. Il refactoring non richiede la scrittura di nuovi test (ma implica già una suite di test)
Quando effettui delle modifiche nel codice UI puramente cosmetico o in altri codici non direttamente testabili.
Inoltre, non scriverò i test quando ho impostato un prototipo di codice 10 preliminare rapido e sporco per dimostrare che alcuni dettagli tecnici funzionano. Qui, il ciclo di feedback di TDD è leggermente troppo lungo per quello che voglio. Ma immagino che ciò non contenga come all'interno di un normale processo TDD. E faccio cancellare questo codice e avviare un ciclo TDD regolare dopo.
Suppongo che per test intendi "unit test", vero?
Il TDD ha i suoi limiti, in particolare non puoi scrivere test unitari per le parti del sistema che dipendono da componenti esterni che non puoi prendere in giro. Ovviamente puoi scrivere dei test ma sarebbe un tipo diverso di test con un diverso livello di granularità.
Leggi altre domande sui tag tdd