it-swarm.it

Quali sono le migliori risorse per l'apprendimento del TDD?

Voglio imparare (e padroneggiare) TDD. Quali sono i migliori:

  • libri
  • siti web
  • video
  • elenco di esercizi
  • parole personali di saggezza

per l'apprendimento, l'apprezzamento e l'uso del TDD?

27
Eric

Personalmente ho scoperto che leggere un saggio di JUnit o due sottolineando che "scrivi il test prima del codice" è stato sufficiente per iniziare.

La parte più importante nell'apprendimento di questa tecnologia è scrivere MOLTO codice basato su test, perché devi cambiare alcuni dei modi più elementari che pensi di scrivere il codice. Cose come:

  • Scrivere il test prima del codice, ti fa pensare in anticipo a come invocherai il tuo codice e otterrai il risultato. Ciò significa che devi progettare prima l'API in base a come la utilizzerai. Ciò si traduce spesso in un'API migliore.
  • Il tuo stile di codifica cambierà perché avrai BISOGNO di pensare in modo più modulare, per essere in grado di testare parti del codice invece di tutto.
  • Arriverete anche a un punto in cui sarete in grado di estrarre con sicurezza un grosso pezzo e inserire un nuovo pezzo invece di comportarsi allo stesso modo, perché il test ha superato. L'ho fatto di recente con una libreria di analisi della data, poiché l'originale era troppo indulgente.

Il posto migliore per iniziare in piccolo, è con le tue routine di utilità. La prossima volta che ne hai bisogno, devi solo progettare che con i test prima, scrivi molti test che coprono tutte le tue userecase ufficiali (incluso cosa dovrebbe accadere con valori nulli passati ecc.), E quando tutti i casi d'uso saranno implementati dovresti essere in grado di usare direttamente nel tuo codice e assicurati che funzioni come previsto.

È anche la mia esperienza che buoni test possono fare un lavoro aggiuntivo come documentazione, perché hai un sacco di codice molto conciso che dice esattamente come si comporta il codice in varie situazioni, che può essere facilmente dimostrato di essere corretto (barra verde). Con commenti accurati non è molto meglio di così.

Per Java jUnit versione 4 è davvero bello.

18
user1249

Oltre ad 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, inclusa la storia di un intero progetto TDD realistico, non solo esempi di codice semplificati.

8
Péter Török

A mio avviso, TDD riguarda più il rendere testabile il codice, piuttosto che scrivere test.

Sicuramente puoi scrivere un test prima della codifica, ma la ragione principale per cui il test è scritto è che puoi scrivere codice, 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 indirizzerò verso una presentazione registrata sull'argomento di Google.

UPDATE:

Come scrivere codice pulito e testabile

Miško Hevery Presentazione (di GoogleTechTalks ) At Google a New York e sponsorizzata dal gruppo Engineering Productivity di Google

8
blunders

Ho letto due libri:

Test Driven Development: By Example di Kent Beck e

nit Test Frameworks di Paul Hamil

Il libro di Beck è ben considerato, ma non ho iniziato con i test unitari fino a quando ho letto "Unit Test Frameworks". Faccio un po 'di TDD, ma aggiungo anche test al codice più vecchio che devo mantenere (quando posso).

Modifica: Inoltre, una volta che hai capito bene, ti consiglio di usarlo subito su un progetto corrente. Per me è stato allora che si è verificato il vero apprendimento e penso che il libro "Unit Test Framework" sia stato un libro di riferimento migliore per questo scopo. (Stavo usando nunit con C #).

4
vjones

Sebbene non riguardi principalmente il TDD (sebbene lo tocchi, oltre a progettare per la testabilità), The Art of Unit Testing = è un libro che consiglierei perché ti insegna a scrivere buoni test.

Più specificamente, insegna come creare test affidabili, mantenibili e leggibili. Penso che questa sia la sezione più importante del libro, al di fuori forse delle basi 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, qualsiasi successo o beneficio da essi sarà limitato. Se uno investe il tempo e gli sforzi per creare i test, allora dovrebbe essere in grado di ottenere il massimo profitto da tale investimento.

4
Matt