TDD - Pós Graduação em Engenharia de Software Ágil

84
Test Driven Development

description

Apresentação sobre TDD para a disciplna de metodologias ágeis de desenvolvimento de software do curso de pósgraduação em engenharia de software centrada em métodos ágeis.

Transcript of TDD - Pós Graduação em Engenharia de Software Ágil

Page 1: TDD - Pós Graduação em Engenharia de Software Ágil

Test Driven Development

Page 2: TDD - Pós Graduação em Engenharia de Software Ágil

Teste automatizado é umadocumentação executável.

Testes automáticos geram Feed Back rápido e fácil (1 click).

Teste de software é qualidade de software.

Teste de caixa preta (Funcional), é cansativo para o ser humano.

Page 3: TDD - Pós Graduação em Engenharia de Software Ágil
Page 4: TDD - Pós Graduação em Engenharia de Software Ágil

Integração

Regressão

Aceitação

Stress / Carga

Funcional / Caixa Preta

Unitários

Page 5: TDD - Pós Graduação em Engenharia de Software Ágil
Page 6: TDD - Pós Graduação em Engenharia de Software Ágil
Page 7: TDD - Pós Graduação em Engenharia de Software Ágil
Page 8: TDD - Pós Graduação em Engenharia de Software Ágil
Page 9: TDD - Pós Graduação em Engenharia de Software Ágil
Page 10: TDD - Pós Graduação em Engenharia de Software Ágil

Criado por Kent Back

Em 2003

XP (Extreme Programming)

Manifesto Ágil

Page 11: TDD - Pós Graduação em Engenharia de Software Ágil
Page 12: TDD - Pós Graduação em Engenharia de Software Ágil

Keep It Simple, Stupid

Page 13: TDD - Pós Graduação em Engenharia de Software Ágil

You Ain’t Gonna Need It

Page 14: TDD - Pós Graduação em Engenharia de Software Ágil
Page 15: TDD - Pós Graduação em Engenharia de Software Ágil

Don´t repeat yourselfDuplicate is Evil

Page 16: TDD - Pós Graduação em Engenharia de Software Ágil
Page 17: TDD - Pós Graduação em Engenharia de Software Ágil
Page 18: TDD - Pós Graduação em Engenharia de Software Ágil
Page 19: TDD - Pós Graduação em Engenharia de Software Ágil

Desenha Implementa Testa

Page 20: TDD - Pós Graduação em Engenharia de Software Ágil

Desenha Testa Implementa Testa

Page 21: TDD - Pós Graduação em Engenharia de Software Ágil

Desenha

Testa

Implementa

Testa

Page 22: TDD - Pós Graduação em Engenharia de Software Ágil

Desenha

Testa

Implementa

Testa

Page 23: TDD - Pós Graduação em Engenharia de Software Ágil
Page 24: TDD - Pós Graduação em Engenharia de Software Ágil
Page 25: TDD - Pós Graduação em Engenharia de Software Ágil
Page 26: TDD - Pós Graduação em Engenharia de Software Ágil

Entenda o

Bug

Teste

Corrija o

Bug

Teste

Page 27: TDD - Pós Graduação em Engenharia de Software Ágil

Encontre o foco do problema que gera o Bug

Transforme-o em um teste

Teste. Ele deve falhar

Corrija o bug

Teste novamente. Ele deve passar

Page 28: TDD - Pós Graduação em Engenharia de Software Ágil

Tente fazer com que os próprios usuários submetam testes

Examine o código e encontre possíveis Bugssemelhantes

Page 29: TDD - Pós Graduação em Engenharia de Software Ágil
Page 30: TDD - Pós Graduação em Engenharia de Software Ágil
Page 31: TDD - Pós Graduação em Engenharia de Software Ágil
Page 32: TDD - Pós Graduação em Engenharia de Software Ágil

Não importa se foi feito essa manhã.

Page 33: TDD - Pós Graduação em Engenharia de Software Ágil
Page 34: TDD - Pós Graduação em Engenharia de Software Ágil
Page 35: TDD - Pós Graduação em Engenharia de Software Ágil
Page 36: TDD - Pós Graduação em Engenharia de Software Ágil
Page 37: TDD - Pós Graduação em Engenharia de Software Ágil

Anh? =/

Teste

Ahh! =)

Teste

Page 38: TDD - Pós Graduação em Engenharia de Software Ágil

Analise o código

Construa o teste e veja se você entendeu o problema

Teste

Adapte o teste (Iterativamente)

Teste

Siga para a próxima parte

Page 39: TDD - Pós Graduação em Engenharia de Software Ágil

Entenda

Documente

Refatore

Remova excessos

Padronize

Faça-o seguro e robusto

Page 40: TDD - Pós Graduação em Engenharia de Software Ágil

CUIDADO!

Vá devagar

Esteja pronto para desfazer tudo

Page 41: TDD - Pós Graduação em Engenharia de Software Ágil
Page 42: TDD - Pós Graduação em Engenharia de Software Ágil
Page 43: TDD - Pós Graduação em Engenharia de Software Ágil
Page 44: TDD - Pós Graduação em Engenharia de Software Ágil
Page 45: TDD - Pós Graduação em Engenharia de Software Ágil
Page 46: TDD - Pós Graduação em Engenharia de Software Ágil
Page 47: TDD - Pós Graduação em Engenharia de Software Ágil
Page 48: TDD - Pós Graduação em Engenharia de Software Ágil
Page 49: TDD - Pós Graduação em Engenharia de Software Ágil
Page 50: TDD - Pós Graduação em Engenharia de Software Ágil
Page 51: TDD - Pós Graduação em Engenharia de Software Ágil
Page 52: TDD - Pós Graduação em Engenharia de Software Ágil
Page 53: TDD - Pós Graduação em Engenharia de Software Ágil
Page 54: TDD - Pós Graduação em Engenharia de Software Ágil

Elevação do comprometimentodo time

Planejamento mais rápido

Page 55: TDD - Pós Graduação em Engenharia de Software Ágil

São considerados Scrum e TDD na discussão do que é ou não entregável

Page 56: TDD - Pós Graduação em Engenharia de Software Ágil
Page 57: TDD - Pós Graduação em Engenharia de Software Ágil
Page 58: TDD - Pós Graduação em Engenharia de Software Ágil
Page 59: TDD - Pós Graduação em Engenharia de Software Ágil
Page 60: TDD - Pós Graduação em Engenharia de Software Ágil

SCRUM TDDAgilidade e Transparência Qualidade

Page 61: TDD - Pós Graduação em Engenharia de Software Ágil

MITOS REALIDADES

TDD pode gerar um conjunto de

testes 100% aplicáveis paraqualquer aplicação

Componentes de terceiros às

vezes deixam de ter testes e até o

código-fonte.

Você só precisa fazer teste de unidade

É preciso aplicar outras técnicas

de testes, mesmo para sistemassimples.

TDD é suficiente para testar tudoTDD contemplam apenas o teste

entre o desenvolvedor e a

unidade.

TDD não é escalável O TDD encoraja o refactoring, o que torna o código escalável.

Page 62: TDD - Pós Graduação em Engenharia de Software Ágil
Page 63: TDD - Pós Graduação em Engenharia de Software Ágil

Os riscos aumentam

Demora mais na entrega e muito menos na correção

Page 64: TDD - Pós Graduação em Engenharia de Software Ágil

Ou o problema não foi entendido

Ou utiliza um grande inimigo o Ctrl+C, Ctrl+V

Page 65: TDD - Pós Graduação em Engenharia de Software Ágil

É como se não conhecesse uma biblioteca e isso o impedisse de testar

Trata apenas de programação coisa que já estamos acostumados

Page 66: TDD - Pós Graduação em Engenharia de Software Ágil

Sem fundamento

Se o cenário é inédito existe a comunidade que pode ajudar

Page 67: TDD - Pós Graduação em Engenharia de Software Ágil

Testes devem ser escritos antes do código

Não significa abrir mão de uma poderosaferramenta

Page 68: TDD - Pós Graduação em Engenharia de Software Ágil
Page 69: TDD - Pós Graduação em Engenharia de Software Ágil
Page 70: TDD - Pós Graduação em Engenharia de Software Ágil
Page 71: TDD - Pós Graduação em Engenharia de Software Ágil
Page 72: TDD - Pós Graduação em Engenharia de Software Ágil
Page 73: TDD - Pós Graduação em Engenharia de Software Ágil
Page 74: TDD - Pós Graduação em Engenharia de Software Ágil
Page 75: TDD - Pós Graduação em Engenharia de Software Ágil
Page 76: TDD - Pós Graduação em Engenharia de Software Ágil
Page 77: TDD - Pós Graduação em Engenharia de Software Ágil
Page 78: TDD - Pós Graduação em Engenharia de Software Ágil
Page 79: TDD - Pós Graduação em Engenharia de Software Ágil
Page 80: TDD - Pós Graduação em Engenharia de Software Ágil
Page 81: TDD - Pós Graduação em Engenharia de Software Ágil
Page 82: TDD - Pós Graduação em Engenharia de Software Ágil

Escreva um teste que não irá funcionar.

Faça com que esse teste funcione com a implementação mais óbvia e rápida possível.

Repita esse ciclo iterativamente refatorando o código eliminando o desnecessário.

Page 83: TDD - Pós Graduação em Engenharia de Software Ágil
Page 84: TDD - Pós Graduação em Engenharia de Software Ágil

Bruno Eustáquio

Juliana Villas Boas

Marcelo Nascimento

Thiago Funghi

Thiago Ribeiro

PO - Márcio Sete