140 likes | 218 Views
Test Driven Development. Nazareno Andrade Baseado no material do prof. Hyggo Almeida. Contextualização. Testar software não é uma atividade divertida!!!. Você sabe que é necessário!!! Diz a todo mundo para fazer!!!! Mas não faz!!!. Contextualização.
E N D
Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo Almeida
Contextualização • Testar software não é uma atividade divertida!!! Você sabe que é necessário!!! Diz a todo mundo para fazer!!!! Mas não faz!!! Test Driven Development (Hyggo Oliveira de Almeida)
Contextualização • Ciclo de desenvolvimento “tradicional” • Testes depois da implementação • Problemas??? Não!!?!! • Tudo que implemento, depois testo!!! • Em ciclos curtos... • Será??? Test Driven Development (Hyggo Oliveira de Almeida)
Motivação • O que acontece em geral... Implementação Testes Início Prazo final Resultado: Manutenção cara Test Driven Development (Hyggo Oliveira de Almeida)
Test Driven Development • Fórmula de Ambler TDD = TFD + Refactoring Test First Development (Confiança no funcionamento) Limpeza (Alta qualidade do código) Test Driven Development (Hyggo Oliveira de Almeida)
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 Test Driven Development (Hyggo Oliveira de Almeida)
Ciclo de desenvolvimento TDD Escreva um teste Refatore o código (e teste) Compile Execute testes, veja o sucesso Corrija erros de compilação Escreva código Execute testes,veja as falhas Test Driven Development (Hyggo Oliveira de Almeida)
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 Test 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!!! Test 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! Test 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 Test 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...
Bibliografia • Kent Beck. Test-DrivenDevelopmentbyExample. 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/) Test Driven Development (Hyggo Oliveira de Almeida)