Transcript
Page 1: Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo Almeida

Test Driven DevelopmentNazareno Andrade

Baseado no material do prof. Hyggo Almeida

Page 2: Test Driven Development Nazareno 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!!!

Page 3: Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo Almeida

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)

Page 4: Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo 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

Page 5: Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo Almeida

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)

Page 6: Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo 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 6Test Driven Development (Hyggo Oliveira de Almeida)

Page 7: Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo 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)

Page 8: Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo 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

8Test Driven Development (Hyggo Oliveira de Almeida)

Page 9: Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo 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)

Page 10: Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo 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)

Page 11: Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo 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

Page 12: Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo Almeida

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)

Page 13: Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo 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

Page 14: Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo Almeida

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)