Test Driven Development
 Teste automatizado é uma
  documentaçã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.
   Integração
   Regressão
   Aceitação
   Stress / Carga
   Funcional / Caixa Preta
   Unitários
   Criado por Kent Back
   Em 2003
   XP (Extreme Programming)
   Manifesto Ágil
Keep It Simple, Stupid
You Ain’t Gonna Need It
Don´t repeat yourself
     Duplicate is Evil
Desenha   Implementa   Testa
Desenha   Testa   Implementa   Testa
Desenha




Testa                Testa




        Implementa
Desenha




Testa                Testa




        Implementa
Entenda o
           Bug




Teste               Teste




        Corrija o
          Bug
   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
   Tente fazer com que os próprios usuários
    submetam testes
   Examine o código e encontre possíveis Bugs
    semelhantes
Não importa se foi feito essa manhã.
Anh? =/




Teste             Teste




        Ahh! =)
   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
   Entenda
   Documente
   Refatore
   Remova excessos
   Padronize
   Faça-o seguro e robusto
   CUIDADO!
   Vá devagar
   Esteja pronto para desfazer tudo
 Elevação   do comprometimento
  do time
 Planejamento mais rápido
 Sãoconsiderados Scrum e
 TDD na discussão do que é
 ou não entregável
SCRUM                       TDD
Agilidade e Transparência   Qualidade
MITOS                           REALIDADES

TDD pode gerar um conjunto de       Componentes de terceiros às
testes 100% aplicáveis para         vezes deixam de ter testes e até o
qualquer aplicação                  código-fonte.



Você só precisa fazer teste de      É preciso aplicar outras técnicas
unidade                             de testes, mesmo para sistemas
                                    simples.

                                    TDD contemplam apenas o teste
TDD é suficiente para testar tudo   entre o desenvolvedor e a
                                    unidade.

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

   Demora mais na entrega e muito menos na
    correção
   Ou o problema não foi entendido

   Ou utiliza um grande inimigo o Ctrl+C,
    Ctrl+V
   É como se não conhecesse uma biblioteca e
    isso o impedisse de testar

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

   Se o cenário é inédito existe a comunidade
    que pode ajudar
   Testes devem ser escritos antes do código

   Não significa abrir mão de uma poderosa
    ferramenta
   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.
   Bruno Eustáquio
   Juliana Villas Boas
   Marcelo Nascimento
   Thiago Funghi
   Thiago Ribeiro

PO - Márcio Sete

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

  • 1.
  • 2.
     Teste automatizadoé uma documentaçã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.
  • 4.
    Integração  Regressão  Aceitação  Stress / Carga  Funcional / Caixa Preta  Unitários
  • 10.
    Criado por Kent Back  Em 2003  XP (Extreme Programming)  Manifesto Ágil
  • 12.
  • 13.
  • 15.
    Don´t repeat yourself Duplicate is Evil
  • 19.
    Desenha Implementa Testa
  • 20.
    Desenha Testa Implementa Testa
  • 21.
    Desenha Testa Testa Implementa
  • 22.
    Desenha Testa Testa Implementa
  • 26.
    Entenda o Bug Teste Teste Corrija o Bug
  • 27.
    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
  • 28.
    Tente fazer com que os próprios usuários submetam testes  Examine o código e encontre possíveis Bugs semelhantes
  • 32.
    Não importa sefoi feito essa manhã.
  • 37.
    Anh? =/ Teste Teste Ahh! =)
  • 38.
    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
  • 39.
    Entenda  Documente  Refatore  Remova excessos  Padronize  Faça-o seguro e robusto
  • 40.
    CUIDADO!  Vá devagar  Esteja pronto para desfazer tudo
  • 54.
     Elevação do comprometimento do time  Planejamento mais rápido
  • 55.
     Sãoconsiderados Scrume TDD na discussão do que é ou não entregável
  • 60.
    SCRUM TDD Agilidade e Transparência Qualidade
  • 61.
    MITOS REALIDADES TDD pode gerar um conjunto de Componentes de terceiros às testes 100% aplicáveis para vezes deixam de ter testes e até o qualquer aplicação código-fonte. Você só precisa fazer teste de É preciso aplicar outras técnicas unidade de testes, mesmo para sistemas simples. TDD contemplam apenas o teste TDD é suficiente para testar tudo entre o desenvolvedor e a unidade. TDD não é escalável O TDD encoraja o refactoring, o que torna o código escalável.
  • 63.
    Os riscos aumentam  Demora mais na entrega e muito menos na correção
  • 64.
    Ou o problema não foi entendido  Ou utiliza um grande inimigo o Ctrl+C, Ctrl+V
  • 65.
    É como se não conhecesse uma biblioteca e isso o impedisse de testar  Trata apenas de programação coisa que já estamos acostumados
  • 66.
    Sem fundamento  Se o cenário é inédito existe a comunidade que pode ajudar
  • 67.
    Testes devem ser escritos antes do código  Não significa abrir mão de uma poderosa ferramenta
  • 82.
    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.
  • 84.
    Bruno Eustáquio  Juliana Villas Boas  Marcelo Nascimento  Thiago Funghi  Thiago Ribeiro PO - Márcio Sete