SlideShare une entreprise Scribd logo
1  sur  64
Télécharger pour lire hors ligne
Desenvolvedor no controle
      utilizando TDD

                  Victor Villela Serta
                    victorserta@gmail.com
                    twitter.com/victorserta
                       victorserta.com.br




                                              1

#soudevcon #tdd
Quem sou eu?
Victor Serta
●
  Desenvolvedor Java
●
  Fundador da Agivis, uma startup de
  desenvolvimento ágil de aplicações web
  e mobile
●
  Graduado em Engenharia de
  Computação pela PUC-PR
●
  Entusiasta de metodologias ágeis
  (Scrum, XP e Kanban)
twitter.com/victorserta
victorserta.com.br
Test Driven
          Development
#soudevcon #tdd
Mas antes... uma história




#soudevcon #tdd
●
  Desenvolvedor bem intensionado
●
  Sem testes automatizados
●
  XGH
#soudevcon #tdd
Após 3 semanas estava
pronto...



#soudevcon #tdd
...só faltava testar.



#soudevcon #tdd
3 dias antes
 da entrega
 um bug foi
 encontrado

#soudevcon #tdd
Depois de muita pizza e
 noites viradas....


#soudevcon #tdd
Ele arrumou o
                  bug e o projeto
                  foi entregue!


#soudevcon #tdd
Quando o cliente foi testar...



#soudevcon #tdd
Arrumou o bug,
mas causou outros 5
#soudevcon #tdd
Outra história...




#soudevcon #tdd
●
  Desenvolvedor
  experiente
●
  Domina Design
  Patterns



#soudevcon #tdd
Diagrama de um “Hello World” desse
  desenvolvedor:




#soudevcon #tdd
Levou 2 meses levantando
requisitos...



#soudevcon #tdd
1 mês defnindo a
arquitetura...



#soudevcon #tdd
2 meses elaborando
diagramas...



#soudevcon #tdd
4 meses desenvolvendo...



#soudevcon #tdd
2 meses testando.



#soudevcon #tdd
Quando o cliente foi testar...



#soudevcon #tdd
“Não era isso que eu
queria...”
Dinheiro jogado fora!




#soudevcon #tdd
A solução:

                  Lean
                  Agile
                  Scrum


                   XP

#soudevcon #tdd
#soudevcon #tdd
Desenvolvimento padrão

                  Projetar


                  Codificar


                   Testar
#soudevcon #tdd
Test Driven Development

                   Testar


                  Codificar


                  Projetar
#soudevcon #tdd
Por que TDD?




    Qualidade



#soudevcon #tdd
Por que TDD?




       Menos
     desperdício



#soudevcon #tdd
Por que TDD?




     Mais rápido



#soudevcon #tdd
Ferramentas – Java

  ●
      JUnit
  ●
      TestNG
  ●
      Mockito
  ●
      EasyMock
  ●
      DbUnit
  ●
      Fit / FitNesse

#soudevcon #tdd
Ferramentas – Ruby


  ●
      Test::Unit
  ●
      Mocha
  ●
      RSpec
  ●
      Shoulda



#soudevcon #tdd
Ferramentas – PHP



  ●
      SimpleTest
  ●
      PHPUnit




#soudevcon #tdd
Ferramentas – Action Script



  ●
      FlexUnit
  ●
      Mockolate




#soudevcon #tdd
Ferramentas – JavaScript

  ●
      JsUnit
  ●
      DOH
  ●
      FireUnit
  ●
      QUnit
  ●
      JSMock
  ●
      QMock
  ●
      MockMe
#soudevcon #tdd
Ferramentas – .NET


  ●
      NUnit
  ●
      csUnit
  ●
      DotNetMock




#soudevcon #tdd
Conceito base




     Red



#soudevcon #tdd
Conceito base




     Red          Green



#soudevcon #tdd
Conceito base




     Red          Green   Refactor



#soudevcon #tdd
“Talk is cheap. Show me the code.”
                            (Linus Torvalds)




#soudevcon #tdd
O Exemplo




                  Controle de Estoque




#soudevcon #tdd
Requisitos

  ●
      Controle de entrada/saída de produtos
      atualizando quantidade atual
  ●
      Não permitir saldo negativo
  ●
      Notifcar setor de compras quando o saldo do
      produto fcar zerado após uma saída




#soudevcon #tdd
Programação por Intenção


●
    Assumir que
    a implementação
    existe
●
    Design livre



#soudevcon #tdd
Baby Steps

  ●
      Passos pequenos
  ●
      Desenvolvimento incremental
  ●
      Feedback




#soudevcon #tdd
Estamos na barra vermelha
Busque a barra verde o quanto
antes
Refatore!
Triangulação

                  Teste 1
                                       Teste 2




       Teste 3




                   Espaço da solução
#soudevcon #tdd
Limpar testes repetidos




#soudevcon #tdd
Requisitos

  ●
      Controle de entrada/saída de produtos
      atualizando quantidade atual
  ●
      Não permitir saldo negativo
  ●
      Notifcar setor de compras quando o saldo do
      produto fcar zerado após uma saída




#soudevcon #tdd
Requisitos

  ●
      Controle de entrada/saída de produtos
      atualizando quantidade atual
  ●
      Não permitir saldo negativo
  ●
      Notifcar setor de compras quando o saldo do
      produto fcar zerado após uma saída




#soudevcon #tdd
Mock objects



        ●
            Ensaiar
        ●
            Repetir
        ●
            Verifcar



#soudevcon #tdd
Stub/Fake objects

●   Stub
    ●   Implementação hardcoded
    ●   Apenas parece como um
        pato
●   Fake
    ●   Parece com um pato,
        anda como um pato,
        mas não é um pato
        real
#soudevcon #tdd
Requisitos

  ●
      Controle de entrada/saída de produtos
      atualizando quantidade atual
  ●
      Não permitir saldo negativo
  ●
      Notifcar setor de compras quando o saldo do
      produto fcar zerado após uma saída




#soudevcon #tdd
Além do TDD...


●
  ATDD – Acceptance TDD
●
  BDD – Behavior Driven
  Development



#soudevcon #tdd
Resumindo TDD...




#soudevcon #tdd
Crie e execute o teste




              Red
Codifique para passar no teste




Red      Green
Refatore!




Red   Green   Refactor
Pronto para assumir o controle ?
Referências




 Test-Driven Development By Example   Test Driven: Practical TDD and
                                      Acceptance TDD for Java Developers
 Kent Beck
                                      Lasse Koskela
Obrigado!
Twitter: @victorserta
Blog: victorserta.com.br/blog
Email: victorserta@gmail.com



#soudevcon #tdd

Contenu connexe

Tendances

Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
 
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva 3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva minastestingconference
 
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horasSamanta Cicilia
 
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosContinuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosSamanta Cicilia
 
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...Wagner Mendes Voltz Fusca
 
[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
 
Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Samanta Cicilia
 
Estratégias para o uso de integração e entrega contínua com gocd
Estratégias para o uso de integração e entrega contínua com gocdEstratégias para o uso de integração e entrega contínua com gocd
Estratégias para o uso de integração e entrega contínua com gocdWalmyr Lima e Silva Filho
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalEduardo Bregaida
 
A transição de um QA tradicional para um Agile Tester
A transição de um QA tradicional para um Agile TesterA transição de um QA tradicional para um Agile Tester
A transição de um QA tradicional para um Agile TesterJéssica Mollo
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de softwareLaura_ifpe
 

Tendances (19)

Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
 
Vamos falar de DevOps?
Vamos falar de DevOps?Vamos falar de DevOps?
Vamos falar de DevOps?
 
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva 3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
 
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
 
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosContinuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
 
Seu codigo fede e voce nem sabia - 2020
Seu codigo fede e voce nem sabia - 2020Seu codigo fede e voce nem sabia - 2020
Seu codigo fede e voce nem sabia - 2020
 
E so mais um campinho na tela
E so mais um campinho na telaE so mais um campinho na tela
E so mais um campinho na tela
 
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
Cornucópia – um agile game para facilitar a codificação segura - Agile Trends...
 
[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
 
Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)
 
Easynvest - DevCamp 2018
Easynvest - DevCamp 2018Easynvest - DevCamp 2018
Easynvest - DevCamp 2018
 
Estratégias para o uso de integração e entrega contínua com gocd
Estratégias para o uso de integração e entrega contínua com gocdEstratégias para o uso de integração e entrega contínua com gocd
Estratégias para o uso de integração e entrega contínua com gocd
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso Total
 
A transição de um QA tradicional para um Agile Tester
A transição de um QA tradicional para um Agile TesterA transição de um QA tradicional para um Agile Tester
A transição de um QA tradicional para um Agile Tester
 
Qa4 women - Porque qualidade também é coisa de mulher! <3
Qa4 women - Porque qualidade também é coisa de mulher! <3Qa4 women - Porque qualidade também é coisa de mulher! <3
Qa4 women - Porque qualidade também é coisa de mulher! <3
 
WTM - Entrega Contínua
WTM - Entrega ContínuaWTM - Entrega Contínua
WTM - Entrega Contínua
 
Maio 2016 - O QA em um Time Ágil
Maio 2016 - O QA em um Time Ágil Maio 2016 - O QA em um Time Ágil
Maio 2016 - O QA em um Time Ágil
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 

En vedette

Sports injuries
Sports injuriesSports injuries
Sports injuriessmithjhon
 
Double page spread analysis
Double page spread analysisDouble page spread analysis
Double page spread analysisJamieAllen8
 
Delegate Showcase - Alison Crowther
Delegate Showcase - Alison CrowtherDelegate Showcase - Alison Crowther
Delegate Showcase - Alison Crowtherbenbnhc
 
Industrias Creativas Culturales
Industrias Creativas CulturalesIndustrias Creativas Culturales
Industrias Creativas CulturalesHorizon Media
 
Eero Kokkonen 15.6.2011: "Bioneerit"
Eero Kokkonen 15.6.2011: "Bioneerit"Eero Kokkonen 15.6.2011: "Bioneerit"
Eero Kokkonen 15.6.2011: "Bioneerit"Sitra Maamerkit
 

En vedette (6)

Sports injuries
Sports injuriesSports injuries
Sports injuries
 
Double page spread analysis
Double page spread analysisDouble page spread analysis
Double page spread analysis
 
Trabajo finall
Trabajo finallTrabajo finall
Trabajo finall
 
Delegate Showcase - Alison Crowther
Delegate Showcase - Alison CrowtherDelegate Showcase - Alison Crowther
Delegate Showcase - Alison Crowther
 
Industrias Creativas Culturales
Industrias Creativas CulturalesIndustrias Creativas Culturales
Industrias Creativas Culturales
 
Eero Kokkonen 15.6.2011: "Bioneerit"
Eero Kokkonen 15.6.2011: "Bioneerit"Eero Kokkonen 15.6.2011: "Bioneerit"
Eero Kokkonen 15.6.2011: "Bioneerit"
 

Similaire à Desenvolvedor no controle com TDD

Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia
Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia
Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia minastestingconference
 
Strider CD - Deploy Contínuo com JavaScript
Strider CD -  Deploy Contínuo com JavaScriptStrider CD -  Deploy Contínuo com JavaScript
Strider CD - Deploy Contínuo com JavaScriptTaller Negócio Digitais
 
BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...
BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...
BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...minastestingconference
 
Teste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTeste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTiago Link
 
Clean Code/Architecture com Android e Flutter
Clean Code/Architecture com Android e FlutterClean Code/Architecture com Android e Flutter
Clean Code/Architecture com Android e FlutterRicardo Ogliari
 
Tecnologias e processo de desenvolvimento na Codeminer42 e Locaweb
Tecnologias e processo de desenvolvimento na Codeminer42 e LocawebTecnologias e processo de desenvolvimento na Codeminer42 e Locaweb
Tecnologias e processo de desenvolvimento na Codeminer42 e LocawebTiago Freire
 
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...Vinicius Campos Silva
 
BDD em Testes de Serviço
BDD em Testes de ServiçoBDD em Testes de Serviço
BDD em Testes de ServiçoRafael Lima
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyFausto Siqueira
 
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteira
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteiraTDC2016SP - Entrega Contínua com Xamarin: Monte sua esteira
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteiratdc-globalcode
 
TDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteira
TDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteiraTDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteira
TDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteiraDiego Gabriel Cardoso
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDJony Ferreira dos Santos
 
Bdd rails 3
Bdd rails 3Bdd rails 3
Bdd rails 3tchandy
 
TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...
TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...
TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...Allan Ferreira
 
Praticando o desapego quando ignorar a dívida técnica
Praticando o desapego  quando ignorar a dívida técnica Praticando o desapego  quando ignorar a dívida técnica
Praticando o desapego quando ignorar a dívida técnica Elvis Lima
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atechcesarcneto
 

Similaire à Desenvolvedor no controle com TDD (20)

Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia
Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia
Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia
 
Strider CD - Deploy Contínuo com JavaScript
Strider CD -  Deploy Contínuo com JavaScriptStrider CD -  Deploy Contínuo com JavaScript
Strider CD - Deploy Contínuo com JavaScript
 
BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...
BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...
BDD on Mobile: Utilizando Cucumber e Appium para executar testes automatizado...
 
Teste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTeste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste você
 
BDD em Ação - Testadores 2015
BDD em Ação - Testadores 2015BDD em Ação - Testadores 2015
BDD em Ação - Testadores 2015
 
BDD em Ação
BDD em AçãoBDD em Ação
BDD em Ação
 
Clean Code/Architecture com Android e Flutter
Clean Code/Architecture com Android e FlutterClean Code/Architecture com Android e Flutter
Clean Code/Architecture com Android e Flutter
 
Tecnologias e processo de desenvolvimento na Codeminer42 e Locaweb
Tecnologias e processo de desenvolvimento na Codeminer42 e LocawebTecnologias e processo de desenvolvimento na Codeminer42 e Locaweb
Tecnologias e processo de desenvolvimento na Codeminer42 e Locaweb
 
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...
 
BDD em Testes de Serviço
BDD em Testes de ServiçoBDD em Testes de Serviço
BDD em Testes de Serviço
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic Academy
 
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteira
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteiraTDC2016SP - Entrega Contínua com Xamarin: Monte sua esteira
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteira
 
TDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteira
TDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteiraTDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteira
TDC2016 - SP - Trilha Xamarin - Entrega Contínua com Xamarin #MonteSuaEsteira
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 
Bdd rails 3
Bdd rails 3Bdd rails 3
Bdd rails 3
 
TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...
TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...
TDC SP 2018 - Utilizando BDD para análise de negócio e desenvolvimento de pro...
 
Praticando o desapego quando ignorar a dívida técnica
Praticando o desapego  quando ignorar a dívida técnica Praticando o desapego  quando ignorar a dívida técnica
Praticando o desapego quando ignorar a dívida técnica
 
TDD do seu jeito
TDD do seu jeitoTDD do seu jeito
TDD do seu jeito
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
São Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOpsSão Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOps
 

Desenvolvedor no controle com TDD