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)
2
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)
3
Motivação
O que acontece em geral...
Implementação
Início
Testes
Resultado: Manutenção cara
Test Driven Development (Hyggo Oliveira de Almeida)
Prazo final
4
Test Driven Development
Fórmula de Ambler
TDD = TFD + Refactoring
Test First Development
(Confiança no funcionamento)
Test Driven Development (Hyggo Oliveira de Almeida)
Limpeza
(Alta qualidade do código)
5
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)
6
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)
7
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)
8
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)
9
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)
10
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 Development
Mito
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)
12
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. AddisonWesley. 1999
Scott Ambler’s Web Site (http://www.ambysoft.com/)
Test Driven Development (Hyggo Oliveira de Almeida)
14
Download

01.TDD