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?
Eu quero aprender (e dominar) TDD. Quais são os melhores:
para aprender, apreciar e usar TDD?
Respostas:
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:
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.
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
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.
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 #).
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.