Post on 18-Apr-2015
Test Driven DevelopmentNazareno Andrade
Baseado no material do prof. Hyggo Almeida
Contextualização
Testar software não é uma atividade divertida!!!
2Test Driven Development (Hyggo Oliveira de Almeida)
Você sabe que é necessário!!!
Diz a todo mundo para fazer!!!!
Mas não faz!!!
Contextualização
Ciclo de desenvolvimento “tradicional” Testes depois da implementação Problemas??? Não!!?!!
Tudo que implemento, depois testo!!! Em ciclos curtos... Será???
3Test Driven Development (Hyggo Oliveira de Almeida)
Motivação
O que acontece em geral...
4Test Driven Development (Hyggo Oliveira de Almeida)
Implementação Testes
Início Prazo finalResultado: Manutenção caraResultado: Manutenção cara
Test Driven Development
Fórmula de Ambler
5Test Driven Development (Hyggo Oliveira de Almeida)
TDD = TFD + Refactoring
Test First Development(Confiança no funcionamento)
Limpeza(Alta qualidade do código)
Test Driven Development
Técnica segundo a qual você deve primeiro escrever testes e depois escrever código!!!
Testes devem guiar o desenvolvimento do código
Primeiro a intenção... Testes provêem uma especificação de “o que” um
pedaço de código faz Servem como documentação
Refactoring garante a alta qualidade do código 6Test Driven Development (Hyggo Oliveira de Almeida)
Ciclo de desenvolvimento TDD
7Test Driven Development (Hyggo Oliveira de Almeida)
Escreva um teste
Compile
Corrija erros de compilação
Execute testes,veja as falhas
Escreva código
Execute testes, veja o sucesso
Refatore o código(e teste)
Requisito básico para TDD Arcabouço para testes de unidade automatizados
xUNIT (Java, C++, Python, Delphi...)
A filosofia de TDD se alinha a XP De fato, possuem o mesmo pai (Kent Beck) É possível utilizar TDD independentemente
8Test Driven Development (Hyggo Oliveira de Almeida)
Objetivo: Barra verde
Ferramenta Java já conhecida JUnit Possui plug-in para o Eclipse
Seu trabalho agora é: Escrever testes primeiro... ... escrever código depois... ... manter a barra verde!!! Limpar o código... ... Manter a barra verde!!!
9Test Driven Development (Hyggo Oliveira de Almeida)
Por que TDD?
Disciplina a escrita de software incrementalmente em pedaços realmente pequenos
Retorno constante do sucesso da implementação (green bar)
Redução no tempo de depuração Tempo de depuração nunca é reutilizado!
10Test Driven Development (Hyggo Oliveira de Almeida)
Sobre refatoramento
O objetivo é remover código mal-cheiroso Código duplicado Métodos/classes muito grandes Subclasses muito semelhantes ...
Extrair método, extrair constantes, usar variável explicativa... http://www.refactoring.com/catalog
Test Driven DevelopmentMito
TDD é para projetos pequenos?!?! Kent Beck reportou em seu livro um projeto de 4
anos, com 40 desenvolvedores, 250 mil linhas de código e 250 mil linhas de teste!
Mais de 4000 teste eram executados em intervalos menores que 20 minutos
Todos os testes eram executados várias vezes ao dia
Resultado: sucesso
12Test Driven Development (Hyggo Oliveira de Almeida)
Conclusão
TDD é comprovadamente uma estratégia promissora para o seu projeto
É muito mais uma questão de disciplina que de mudança filosófica!
O projeto de SI1 deve ser feito com TDD Se você acha que não vai gostar, primeiro
prove...
13
Bibliografia
Kent Beck. Test-Driven Development by Example. Addison Wesley, 2003
David Astels. Test Driven Development: A Practical Guide.Prentice Hall, 2003
Martin Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley. 1999
Scott Ambler’s Web Site (http://www.ambysoft.com/)
14Test Driven Development (Hyggo Oliveira de Almeida)