Quais são os melhores recursos para aprender TDD? [fechadas]

27

Eu quero aprender (e dominar) TDD. Quais são os melhores:

  • livros
  • sites
  • vídeos
  • lista de exercícios
  • palavras pessoais de sabedoria

para aprender, apreciar e usar TDD?

Eric
fonte
1
Você pode estar interessado na minha página de recursos para aprender TDD .
Xpmatteo
9
Eu gosto dessa pergunta. Se você não deve fazer isso aqui, onde você pode fazer perguntas sobre as recomendações de programação de livros?
guettli

Respostas:

18

Pessoalmente, achei que ler um ensaio ou dois da JUnit enfatizando que "você escreve o teste antes do código" foi suficiente para me iniciar.

A parte mais importante no aprendizado dessa tecnologia é escrever MUITO código baseado em teste , porque você precisa alterar algumas das maneiras mais básicas que pensa em escrever código. Coisas como:

  • Escrever o teste antes do código, faz você pensar desde o início como invocará seu código e obterá o resultado de volta. Isso significa que você projeta a API primeiro com base em como a usará. Isso frequentemente resulta em uma API melhor.
  • Seu estilo de codificação mudará porque você precisará pensar de forma mais modular, para poder testar partes do código em vez de apenas a coisa toda.
  • Você também chegará a um ponto em que conseguirá puxar com confiança um pedaço maior e inserir um novo pedaço, comportando-se da mesma maneira, porque o teste foi aprovado. Fiz isso recentemente com uma biblioteca de análise de datas, pois o original era muito brando.

O melhor lugar para começar pequeno, é com suas rotinas de utilidade. Da próxima vez que você precisar, basta projetar que, primeiro com os testes, escreva muitos testes cobrindo todos os seus casos de uso oficiais (incluindo o que deve acontecer com valores nulos passados, etc.) e, quando todos os casos de uso forem implementados, você poderá usar diretamente no seu código e tenha certeza de que funciona conforme o esperado.

Também é minha experiência que bons testes podem fazer um trabalho adicional como documentação, porque você tem muito código conciso dizendo exatamente como o código se comporta em várias situações, o que pode ser facilmente provado como correto (barra verde). Com comentários cuidadosos, você não fica muito melhor que isso.

Para o Java jUnit versão 4 é muito bom.


fonte
8

Na minha opinião, o TDD tem mais a ver com tornar o código testável do que escrever testes.

Claro que você pode escrever um teste antes da codificação, mas a razão pela qual o teste foi escrito é para que você possa codificar - o que não impedirá que você escreva códigos difíceis de testar.

Dê uma olhada nisto para entender melhor o que quero dizer: Minha teoria unificada dos insetos

Se você estiver interessado no conceito e quiser saber mais, basta comentar - e eu o indicarei na direção de uma apresentação gravada sobre o tópico no Google.

ATUALIZAR:

Como escrever um código limpo e testável

Miško Hevery Presenting (Por GoogleTechTalks ) No Google em Nova York e patrocinado pelo grupo de produtividade de engenharia do Google

erros
fonte
Vá em frente e adicione o link de apresentação do Google. Acho que o representante de Eric não permite comentar ainda.
ocodo 12/03
+1 @Slomojo: É verdade, então vote na pergunta ... para empurrá-lo mais de 15 repetições, se eu estiver lembrando corretamente. Vou procurar o vídeo em volta.
erro
1
@ erros ... eu o peguei com 11 anos!
ocodo 12/03
+1 @Slomojo: para votar, encontrei e adicionei o link ao Google Tech Talk na minha resposta. Felicidades!
erros
8

Além de alguns dos livros já mencionados, posso recomendar o software orientado a objetos em crescimento, guiado por testes . Ainda não terminei de lê-lo, mas é uma leitura válida, incluindo a história de um projeto TDD completo e realista, não apenas exemplos de código simplificados.

Péter Török
fonte
Acho que esse é o meu livro favorito e o que mais afetou minha maneira de trabalhar, não apenas sobre TDD, mas também sobre o Software Dev em geral. Eu também tenho que admitir que não li muitos livros de TDD, então talvez não confie tanto em mim.
antonio.fornie
4

Eu li dois livros:

Desenvolvimento orientado a testes: por exemplo, por Kent Beck e

Frameworks de Teste de Unidade por Paul Hamil

O livro de Beck é bem visto, mas não comecei o teste de unidade até ler "Framework de teste de unidade". Eu faço algum TDD, mas também adiciono testes ao código mais antigo que tenho que manter (quando posso).

Edit: Além disso, depois de entender, recomendo usá-lo em um projeto atual imediatamente. Para mim, foi quando o aprendizado real ocorreu e acho que o livro "Unit Test Framework" foi um livro de referência melhor para esse propósito. (Eu estava usando nunit com C #).

vjones
fonte
4

Embora não seja principalmente sobre TDD (embora ele toque nele, além de projetar para testabilidade), The Art of Unit Testing é um livro que eu recomendaria porque ensina a escrever bons testes.

Mais especificamente, ensina como criar testes confiáveis, de manutenção e legíveis. Penso que esta é a seção mais importante do livro, fora talvez o básico sobre estruturas de teste de unidade e isolamento. É óbvio que, se os testes de unidade se tornarem um ponto problemático ou adicionarem atrito ao trabalho de um desenvolvedor, qualquer sucesso ou benefício deles será limitado. Se alguém investe tempo e esforço para criar os testes, deve poder obter o máximo retorno desse investimento.

Matt
fonte