Test Driven Development

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

description

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. - PowerPoint PPT Presentation

Transcript of Test Driven Development

Page 1: Test Driven Development

Test Driven DevelopmentNazareno Andrade

Baseado no material do prof. Hyggo Almeida

Page 2: Test Driven Development

ContextualizaçãoTestar 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

ContextualizaçãoCiclo 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

MotivaçãoO que acontece em geral...

4Test Driven Development (Hyggo Oliveira de Almeida)

Implementação Testes

Início Prazo finalResultado: Manutenção cara

Page 5: Test Driven Development

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

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ódigo6Test Driven Development (Hyggo Oliveira de Almeida)

Page 7: Test Driven Development

Ciclo de desenvolvimento TDD

7Test Driven Development (Hyggo Oliveira de Almeida)

Escreva um teste

Compile

Corrija erros de compilação

Execute testes,veja as falhasEscreva código

Execute testes, veja o sucesso

Refatore o código(e teste)

Page 8: Test Driven Development

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

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

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

Sobre refatoramentoO 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

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

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

BibliografiaKent 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)