O Desenvolvimento dirigido por testes ou Test driven development (TDD) é uma técnica de desenvolvimento de software criada
por Kent Beck que e baseia em um ciclo curto de repetições.
O TDD tem uma idéia bem simples e um roteiro bem definido:
- Escreve um teste
- Roda o teste e ve ele falhar
- Escreve o código que deve passar no teste
- Roda o teste novamente esperando que ele passe (Se falhar, significa que há um problema com o código funcional)
- Refatora o código
- Roda o teste eo teste passa
- Começa com um teste diferente
Exemplo: Calculadora
- Criar classe TesteCalculadora e cria o método TestaAdicao
public class TesteCalculadora { public void TestaAdicao(){ assertEquals("Resultado da soma de 3 e 4 é 7",7,Calculadora.soma(3,4)); } }
- Executar o teste e ter certeza de que ele irá falhar, afinal nem existe a classe Calculadora ou o método soma() ainda!
- Criar a classe Calculadora e o método soma
public int soma (int a, int b){ return a+b; }
- Executar o teste novamente e ver que ele nao irá falhar dessa vez.
- Analisar o código escrito por completo e verificar se há necessecidade de refatoração
- Executar todo o código para fins de teste novamente para nao ter dúvidas de não haver falhas
- Repitir o processo com um teste diferente!
Desenvolvimento dirigido por testes tem uma grande utilidade ajudando
a manter baixa a contagem de defeitos e mantendo a simplicidade do código.
Outra vantagem é que o TDD quando usado apropriadamente, garante que todo o código desenvolvido seja inteiramente testado. Isto fornece
a equipe de desenvolvimento, e ao usuários um grande nível de confiança ao código.
No TDD, os testes são de extrema importância e por isso devem ser bem escritos.
Um exemplo de um código ruim de teste, utilizando o exemplo anterior da calculadora:
public void TestaAdicao(){ assertEquals(3+4,Calculadora.soma(3,4)); }
Se estamos testando o resultado do metodo soma, então precisamos saber o retorno. Nesse caso, melhor
escrever o código da seguinte forma:
public void TestaAdicao(){ assertEquals(7,Calculadora.soma(3,4)); }
alguns pontos que devemos lembrar:
- Conseguir executar cada teste isoladamente
- Eliminar qualquer duplicação lógica dos testes
- Cada teste deve testar apenas um negócio
- Testar todas as pré-condições, pós-condições e exceções
- É também importante sempre escolher bons nomes para os métodos de teste,mesmo que fiquem longos
Não há nenhuma comprovação científica de que TDD melhore a qualidade do código ou a produtividade dos desenvolvedores mas existem
algumas evidências, eos relatos de inúmeras pessoas não nos deixam pensar de outra forma!
Referências:
Refatorações para Padrões do Joshua Kerievsky
Wikipedia Test Driven Developmen : http://pt.wikipedia.org/wiki/Test_Driven_Development
Nenhum comentário:
Postar um comentário