Ho letto alcune nozioni di base sui test unitari e TDD, ma trovo difficile convincermi del motivo per cui TDD può avere un vantaggio rispetto alle sole selezioni selezionate.
Ho letto argomenti comuni per TDD, ma non vedo l'improvvisazione rispetto alle semplici unittests. Forse puoi aiutare a chiarire:
- TDD consente un design testabile liberamente accoppiato - > Credo di poter benissimo immaginare se una classe sia teoricamente testabile, senza dover scrivere test; L'accoppiamento lento è un requisito fondamentale che si può giudicare senza fare riferimento a TDD?!
- TDD dà fiducia nel refactoring - > Non è più efficiente aggiungere selezioni selezionate non appena inizi il refactoring? Mentre devi pensare a cosa coprire per test, risparmi ancora scrivendo molti test.
- TDD ti consente di definire prima l'interfaccia - > A me sembra che alcuni punti minori siano più facili da decidere durante la codifica (che concorda anche con l'agilità?). È persino difficile prevedere una struttura di dati di ritorno annidata, ma dopo la codifica posso spesso convalidare che ottengo ciò che mi aspettavo. Ho creato i dati nidificati durante la codifica (una piccola unità) e ho visto il comportamento. Avrei risparmiato un sacco di tempo a scrivere prima il metodo e usare a posteriori il risultato convalidato per collegarlo a un unittest.
- da quello che ho letto molte (ovviamente non tutte) fonti affermano che TDD richiede più tempo di sviluppo anche considerando il vantaggio per il debug; semplicemente migliora la qualità del codice - > Può essere che alcuni programmatori commettano diversi tipi di errori e per alcuni TDD non copre il tipo di errori che fanno comunque? Quindi, se i miei tipici bug non sono accessibili da test prevedibili, non fa per me?
- TDD aiuta a cambiare team e team di interazione più grandi - > È un grosso problema? Posso immaginare che lo sia, ma per il momento in cui programma da solo non posso giudicare. In che modo TDD aiuta i team in modi che ... ed ecco il punto importante: altri modi no? Può imporre un po 'di disciplina ai membri meno esperti del team, ma a parte questo qualche vantaggio?