SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Desenvolvimento Guiado
      por Testes
    Test-Driven Development (TDD)


Igo Coelho
igocoelho@gmail.com
http://www.igocoelho.com.br


                    
O que é TDD?


     
Regras fundamentais do TDD
    Escreva o teste da implementação ANTES de



    escrevê-la
    Escreva somente código suficiente para o



    teste passar e nada além disso
    Escreva testes pequenos: teste a menor



    quantidade possível de código de cada vez
    Escreva testes muito rápidos: não devem



    demorar mais do que alguns segundos para
    serem executados




                     
Etapas da programação com TDD

1. Criar um teste
2. Executar todos os testes da aplicação para
  ver o teste falhar
3. Escrever a implementação testada
4. Executar os testes para ver se todos
  passarão
5. Refactoring
6. Executar os testes novamente para ver se
  eles continuam passando



                     
Testes

Design




         Implementação




                         Teste




            
TDD

Design




             Teste




                     Implementação




          
TDD
Design




         Teste




                 Implementação




                                 Teste

             
TDD

              Design




Teste                   Teste




        Implementação



           
Demonstração


      
     
     
     
     
     
     
     
     
     
Consequências


      
Consequências:
    Suite de regressão



        Testes completos podem ser executados no build:
    


        aplicação não sobe para produção se não passar no
        teste de regressão
    Testes também pode ser feitos na IDE



        Não há necessidade de executar o build da
    


        aplicação para execução dos testes
        Bugs são encontrados com maior facilidade e
    


        corrigidos com maior velocidade
    Bugs comprovados por testes unitários





                         
Consequências:
    Código mais testável



        Estimula um design melhor
    



        Força que os designs antigos que são pouco
    


        testáveis sejam refatorados
    Facilita o refactoring




    Evita o “overdesign”



        Só se escreve código suficiente para o teste passar
    



        Evita que o desenvolvedor tente advinhar o futuo
    



    Colabora com a documentação





                         
Conclusões


     
Conclusões:
    Colabora para o aumento da qualidade dos



    sistemas
    Desenvolvedores ficam mais corajosos e



    confiantes ao programar!
    Software cresce de forma ordenada e com



    qualidade de design
    Software se adapta com mais facilidade a



    mudanças




                     
Conclusões:
    Demora mais?





                    
Conclusões:
    Demora mais?




        No início é necessário escrever muitos testes
    




                        
Conclusões:
    Demora mais?




        No início é necessário escrever muitos testes
    



        Depois da inércia a suite de regressão está
    


        pronta e escrevem-se menos testes




                        
Conclusões:
    Demora mais?




        No início é necessário escrever muitos testes
    



        Depois da inércia a suite de regressão está
    


        pronta e escrevem-se menos testes
        Certeza de que a implementação está
    


        funcionando




                        
Conclusões:
    Demora mais?




        No início é necessário escrever muitos testes
    



        Depois da inércia a suite de regressão está
    


        pronta e escrevem-se menos testes
        Certeza de que a implementação está
    


        funcionando
        Maioria dos bugs encontrados em tempo de
    


        desenvolvimento




                        
Conclusões:
    Demora mais?




        No início é necessário escrever muitos testes
    



        Depois da inércia a suite de regressão está
    


        pronta e escrevem-se menos testes
        Certeza de que a implementação está
    


        funcionando
        Maioria dos bugs encontrados em tempo de
    


        desenvolvimento
        Bugs de produção são encontrados e corrigidos
    


        com muito mais velocidade



                        
Conclusões:
    Demora mais?




        No início é necessário escrever muitos testes
    



        Depois da inércia a suite de regressão está
    


        pronta e escrevem-se menos testes
        Certeza de que a implementação está
    


        funcionando
        Maioria dos bugs encontrados em tempo de
    


        desenvolvimento
        Bugs de produção são encontrados e corrigidos
    


        com muito mais velocidade
    No final das contas com a pratica demora-se



    menos tempo com mais qualidade
                        
Perguntas?


        
Obrigado!


        

Contenu connexe

Tendances

Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareDextra Sistemas / Etec Itu
 
Teste em times ageis
Teste em times ageisTeste em times ageis
Teste em times ageisDover H
 
TDC 2014 SP - Visual Regression Testing com PhantomCSS
TDC 2014 SP - Visual Regression Testing com PhantomCSSTDC 2014 SP - Visual Regression Testing com PhantomCSS
TDC 2014 SP - Visual Regression Testing com PhantomCSSStefan Teixeira
 
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemMinas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemStefan Teixeira
 
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...minastestingconference
 
Automação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas WebAutomação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas WebRodrigo Veiga
 
Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Samanta Cicilia
 
Minas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustMinas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustStefan Teixeira
 
TDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a TestesTDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a TestesNetto Cavalcante
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaRafael Ponte
 
Minas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega ContínuaMinas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega ContínuaSamanta Cicilia
 
Acelerando o feedback e deploy com Automação de Testes!
Acelerando o feedback e deploy com Automação de Testes! Acelerando o feedback e deploy com Automação de Testes!
Acelerando o feedback e deploy com Automação de Testes! Elias Nogueira
 
Desenvolvimento orientado a testes
Desenvolvimento orientado a testesDesenvolvimento orientado a testes
Desenvolvimento orientado a testesCarol Vilas Boas
 
Anti-Padrões de Integração Contínua
Anti-Padrões de Integração ContínuaAnti-Padrões de Integração Contínua
Anti-Padrões de Integração ContínuaThoughtworks
 
Lean e a Engenharia de Software
Lean e a Engenharia de SoftwareLean e a Engenharia de Software
Lean e a Engenharia de SoftwareRafael Glanzner
 
A importância dos Testes no Devops
A importância dos Testes no DevopsA importância dos Testes no Devops
A importância dos Testes no DevopsElias Nogueira
 
Boas práticas para deploy contínuo com drupal
Boas práticas para deploy contínuo com drupalBoas práticas para deploy contínuo com drupal
Boas práticas para deploy contínuo com drupalRenato Vasconcellos Gomes
 
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de ValorSamanta Cicilia
 

Tendances (20)

Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
Teste em times ageis
Teste em times ageisTeste em times ageis
Teste em times ageis
 
TDC 2014 SP - Visual Regression Testing com PhantomCSS
TDC 2014 SP - Visual Regression Testing com PhantomCSSTDC 2014 SP - Visual Regression Testing com PhantomCSS
TDC 2014 SP - Visual Regression Testing com PhantomCSS
 
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemMinas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
 
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
 
Automação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas WebAutomação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas Web
 
Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)
 
Minas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustMinas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com Locust
 
TDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a TestesTDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a Testes
 
Quality assistance
Quality assistanceQuality assistance
Quality assistance
 
DevOps - Automatic Tests
DevOps - Automatic TestsDevOps - Automatic Tests
DevOps - Automatic Tests
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
 
Minas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega ContínuaMinas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega Contínua
 
Acelerando o feedback e deploy com Automação de Testes!
Acelerando o feedback e deploy com Automação de Testes! Acelerando o feedback e deploy com Automação de Testes!
Acelerando o feedback e deploy com Automação de Testes!
 
Desenvolvimento orientado a testes
Desenvolvimento orientado a testesDesenvolvimento orientado a testes
Desenvolvimento orientado a testes
 
Anti-Padrões de Integração Contínua
Anti-Padrões de Integração ContínuaAnti-Padrões de Integração Contínua
Anti-Padrões de Integração Contínua
 
Lean e a Engenharia de Software
Lean e a Engenharia de SoftwareLean e a Engenharia de Software
Lean e a Engenharia de Software
 
A importância dos Testes no Devops
A importância dos Testes no DevopsA importância dos Testes no Devops
A importância dos Testes no Devops
 
Boas práticas para deploy contínuo com drupal
Boas práticas para deploy contínuo com drupalBoas práticas para deploy contínuo com drupal
Boas práticas para deploy contínuo com drupal
 
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
 

Similaire à TDD guia desenvolvimento

Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosVitor Silva
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesPaulo César M Jeveaux
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMAdriano Bertucci
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e SeleniumAndré Thiago
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
 
IC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas DoentesIC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas DoentesJefferson Moreira
 
Test-Driven Development - Introdução
Test-Driven Development - IntroduçãoTest-Driven Development - Introdução
Test-Driven Development - IntroduçãoHélio Costa e Silva
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Igor Abade
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27Hélio Medeiros
 
Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...
Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...
Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...Igor Abade
 

Similaire à TDD guia desenvolvimento (20)

Testes
TestesTestes
Testes
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes Unitários
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
IC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas DoentesIC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas Doentes
 
Test-Driven Development - Introdução
Test-Driven Development - IntroduçãoTest-Driven Development - Introdução
Test-Driven Development - Introdução
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
TesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdfTesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdf
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
Testes - Para que?
Testes - Para que?Testes - Para que?
Testes - Para que?
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...
Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...
Scrum e Team Foundation Server - Qualidade ao longo de todo o ciclo de vida d...
 
Aula 4- Engenharia de Software
Aula 4- Engenharia de SoftwareAula 4- Engenharia de Software
Aula 4- Engenharia de Software
 

Plus de Igo Coelho

Ágil na Prática - Ruby
Ágil na Prática - RubyÁgil na Prática - Ruby
Ágil na Prática - RubyIgo Coelho
 
Ágil na Prática
Ágil na PráticaÁgil na Prática
Ágil na PráticaIgo Coelho
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaIgo Coelho
 
Integração de Sistema com ESB
Integração de Sistema com ESBIntegração de Sistema com ESB
Integração de Sistema com ESBIgo Coelho
 
Web Services com Apache Axis
Web Services com Apache AxisWeb Services com Apache Axis
Web Services com Apache AxisIgo Coelho
 
Conhecendo Spring Framework
Conhecendo Spring FrameworkConhecendo Spring Framework
Conhecendo Spring FrameworkIgo Coelho
 

Plus de Igo Coelho (7)

Ágil na Prática - Ruby
Ágil na Prática - RubyÁgil na Prática - Ruby
Ágil na Prática - Ruby
 
Ágil na Prática
Ágil na PráticaÁgil na Prática
Ágil na Prática
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Integração de Sistema com ESB
Integração de Sistema com ESBIntegração de Sistema com ESB
Integração de Sistema com ESB
 
Web Services com Apache Axis
Web Services com Apache AxisWeb Services com Apache Axis
Web Services com Apache Axis
 
Conhecendo Spring Framework
Conhecendo Spring FrameworkConhecendo Spring Framework
Conhecendo Spring Framework
 

TDD guia desenvolvimento

  • 1. Desenvolvimento Guiado por Testes Test-Driven Development (TDD) Igo Coelho igocoelho@gmail.com http://www.igocoelho.com.br    
  • 2. O que é TDD?    
  • 3. Regras fundamentais do TDD Escreva o teste da implementação ANTES de  escrevê-la Escreva somente código suficiente para o  teste passar e nada além disso Escreva testes pequenos: teste a menor  quantidade possível de código de cada vez Escreva testes muito rápidos: não devem  demorar mais do que alguns segundos para serem executados    
  • 4. Etapas da programação com TDD 1. Criar um teste 2. Executar todos os testes da aplicação para ver o teste falhar 3. Escrever a implementação testada 4. Executar os testes para ver se todos passarão 5. Refactoring 6. Executar os testes novamente para ver se eles continuam passando    
  • 5. Testes Design Implementação Teste    
  • 6. TDD Design Teste Implementação    
  • 7. TDD Design Teste Implementação Teste    
  • 8. TDD Design Teste Teste Implementação    
  • 10.    
  • 11.    
  • 12.    
  • 13.    
  • 14.    
  • 15.    
  • 16.    
  • 17.    
  • 18.    
  • 20. Consequências: Suite de regressão  Testes completos podem ser executados no build:  aplicação não sobe para produção se não passar no teste de regressão Testes também pode ser feitos na IDE  Não há necessidade de executar o build da  aplicação para execução dos testes Bugs são encontrados com maior facilidade e  corrigidos com maior velocidade Bugs comprovados por testes unitários     
  • 21. Consequências: Código mais testável  Estimula um design melhor  Força que os designs antigos que são pouco  testáveis sejam refatorados Facilita o refactoring  Evita o “overdesign”  Só se escreve código suficiente para o teste passar  Evita que o desenvolvedor tente advinhar o futuo  Colabora com a documentação     
  • 23. Conclusões: Colabora para o aumento da qualidade dos  sistemas Desenvolvedores ficam mais corajosos e  confiantes ao programar! Software cresce de forma ordenada e com  qualidade de design Software se adapta com mais facilidade a  mudanças    
  • 24. Conclusões: Demora mais?     
  • 25. Conclusões: Demora mais?  No início é necessário escrever muitos testes     
  • 26. Conclusões: Demora mais?  No início é necessário escrever muitos testes  Depois da inércia a suite de regressão está  pronta e escrevem-se menos testes    
  • 27. Conclusões: Demora mais?  No início é necessário escrever muitos testes  Depois da inércia a suite de regressão está  pronta e escrevem-se menos testes Certeza de que a implementação está  funcionando    
  • 28. Conclusões: Demora mais?  No início é necessário escrever muitos testes  Depois da inércia a suite de regressão está  pronta e escrevem-se menos testes Certeza de que a implementação está  funcionando Maioria dos bugs encontrados em tempo de  desenvolvimento    
  • 29. Conclusões: Demora mais?  No início é necessário escrever muitos testes  Depois da inércia a suite de regressão está  pronta e escrevem-se menos testes Certeza de que a implementação está  funcionando Maioria dos bugs encontrados em tempo de  desenvolvimento Bugs de produção são encontrados e corrigidos  com muito mais velocidade    
  • 30. Conclusões: Demora mais?  No início é necessário escrever muitos testes  Depois da inércia a suite de regressão está  pronta e escrevem-se menos testes Certeza de que a implementação está  funcionando Maioria dos bugs encontrados em tempo de  desenvolvimento Bugs de produção são encontrados e corrigidos  com muito mais velocidade No final das contas com a pratica demora-se  menos tempo com mais qualidade