Voglio imparare (e padroneggiare) TDD. Quali sono i migliori:
- Libri
- siti web
- video
- elenco di esercizi
- parole personali di saggezza
per imparare, apprezzare e usare TDD?
Personalmente ho scoperto che leggere un saggio di JUnit o due sottolineando che "scrivi il test prima del codice" era sufficiente per farmi iniziare.
La parte più importante nell'apprendimento di questa tecnologia è scrivere molto del codice basato su test , perché devi modificare alcuni dei modi più basilari in cui pensi di scrivere codice. Cose come:
Il posto migliore per iniziare in piccolo, è con le tue routine di utilità. La prossima volta che ne hai bisogno, quindi prima pianifichi con i test, scrivi un sacco di test che coprono tutti i tuoi casi ufficiali (compreso ciò che dovrebbe accadere con valori nulli passati, ecc.) E quando tutti i casi d'uso sono implementati dovresti essere in grado di usarli direttamente nel tuo codice e sii sicuro che funzioni come previsto.
È anche mia esperienza che i buoni test possono svolgere un lavoro aggiuntivo come documentazione, perché hai un codice molto conciso che dice esattamente come si comporta il codice in varie situazioni, che può essere facilmente dimostrato corretto (barra verde). Con i commenti attenti non si ottiene molto meglio di così.
Per Java jUnit versione 4 è davvero bello.
Oltre a alcuni dei libri già citati, posso consigliare Software orientato agli oggetti in crescita guidato da test . Non ho ancora finito di leggerlo, ma è una lettura degna, che include la storia di un intero progetto TDD realistico, non solo esempi di codice semplificato.
Secondo me, TDD significa più rendere il codice testabile, piuttosto che scrivere test.
Certo, puoi scrivere un test prima della codifica, ma l'intero motivo per cui il test è scritto è che puoi codificarti, il che non ti impedirà di scrivere codice difficile da testare.
Dai un'occhiata a questo per capire meglio cosa intendo: My Unified Theory of Bugs
Se sei interessato al concetto e vuoi saperne di più, commenta e ti indicherò la direzione di una presentazione registrata sull'argomento da parte di Google.
UPDATE:
Come scrivere codice pulito e verificabile
Miško Hevery Presentazione (per GoogleTechTalks ) In Google in NYC e sponsorizzato da Procità produttiva gruppo
Ho letto due libri:
Sviluppo basato su test: per esempio di Kent Beck e
Quadri di test unitari di Paul Hamil
Il libro di Beck è ben considerato, ma non ho iniziato con i test unitari fino a quando non ho letto "Unit Test Frameworks". Faccio alcuni TDD, ma aggiungo anche test al vecchio codice che devo mantenere (quando posso).
Modifica: Inoltre, una volta ottenuto un handle su di esso, ti consiglio di usarlo su un progetto corrente subito. Per me è stato allora che è avvenuto il vero apprendimento, e penso che il libro "Unit Test Framework" fosse un libro di reference migliore per questo scopo. (Stavo usando nunit con C #).
Sebbene non riguardi principalmente TDD (sebbene tocchi su di esso, oltre a progettare per testabilità), The Art of Unit Testing è un libro che consiglierei perché ti insegna come scrivere buoni test.
Più in particolare, insegna come creare test affidabili, manutenibili e leggibili. Penso che questa sia la sezione più importante del libro, al di fuori forse delle nozioni di base sui test unitari e sui framework di isolamento. È ovvio che se i test unitari diventano un punto dolente o aggiungono attrito al lavoro di uno sviluppatore, allora qualsiasi successo o beneficio da essi sarà limitato. Se si investe il tempo e gli sforzi per creare i test, allora (s) dovrebbe essere in grado di ottenere il massimo rendimento da tale investimento.