SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
TDD do seu jeito




Israel Teixeira   @israelst mudadeideia.com.br

Rodolfo Carvalho @201      rodolfocarvalho.net
http://dojorio.org
Sobre o que vamos falar hoje


              TDD

               =


    Test-Driven Development


               =


Desenvolvimento Guiado por Testes
Preparando uma palestra
      sobre TDD
O que é TDD

• Técnica e boa prática de desenvolvimento de
  software
    Fluxo de desenvolvimento tradicional

      Design


                         Code


                                        Test
O que é TDD

  • Técnica e boa prática de desenvolvimento de
    software
                       Com TDD

              Design               Test




                Test               Code


Refactor
O que é TDD

• Técnica e boa prática de desenvolvimento de
  software



      Design                                    Code                                 Test



                                               x

           Design   Test              Design       Test              Design   Test




            Test    Code               Test     Code                  Test    Code     ...
Refactor                   Refactor                       Refactor




tempo
Exemplo: Caixa Eletrônico



1. Escrever um teste

      class CashMachineTests(unittest.TestCase):
         def test_draw_10_bucks(self):
             machine = CashMachine()
             self.assertEqual(machine.draw(10), [10])
Exemplo: Caixa Eletrônico



    2. Executar os testes e ver o novo teste falhar
       (vermelho)

E
======================================================================
ERROR: test_draw_10_bucks (__main__.CashMachineTests)
----------------------------------------------------------------------
Traceback (most recent call last):
    File "./cash_machine.py", line 6, in test_draw_10_bucks
     machine = CashMachine()
NameError: global name 'CashMachine' is not defined
Exemplo: Caixa Eletrônico



3. Implementar código suficiente para passar nos
   testes

              class CashMachine:
                 def draw(self, amount):
                     return [amount]
Exemplo: Caixa Eletrônico



     4. Executar os testes e ver todos passarem (verde)

.
----------------------------------------------------------------------
Ran 1 test in 0.000s


OK
Exemplo: Caixa Eletrônico



5. Refatorar

class CashMachine:           class CashMachine:
   def draw(self, amount):      def draw(self, amount):
       return [amount]              bills = [amount]
                                    return bills
Exemplo: Caixa Eletrônico



     6. Executar os testes e garantir que todos
        continuam passando

.
----------------------------------------------------------------------
Ran 1 test in 0.000s


OK
TDD é uma das formas de
  desenvolver software
      TDD != 42
Guiando o processo




 http://www.flickr.com/photos/fallenidol/1234034423
Intenção, avaliação, e feedback




“No término de um trabalho, a avaliação é
geralmente considerada uma operação óbvia, vista
por qualquer ser sensato como legítima e
desejável.”
                               Christophe Dejours
Por que TDD como metologia?




• TDD faz com que você reflita sobre o processo.
• 40% a 90% menos erros.
    Nagappan, Maximilien, Bhat e Williams. 2008.
    http://research.microsoft.com/en-us/groups/ese/nagappan_tdd.pdf
TDD


• Ajuda a:
     Programar por intenção
     Evitar a "síndrome da tela em branco"
TDD




      101010
      010101
TDD


• Ajuda a:
     Programar por intenção
     Evitar a "síndrome da tela em branco"
     Reduzir a quantidade de bugs
     Documentar o código
     Rede de segurança contra regressões
     ...
O excesso de design prévio




https://picasaweb.google.com/rhcarvalho/Dojo25NaLapa   http://bit.ly/kKEKAc
Conclusões




• TDD não se aplica em todos os contextos
• Use TDD com sabedoria para guiar o
  desenvolvimento
• Faça design iterativo
• Não faça design prévio em excesso
?
Perguntas
Avisos


              Coding Dojo

• Quando: hoje, a partir de 15:00
• Onde: stand da globo.com



• No Rio de Janeiro:
            http://dojorio.org/onde

Contenu connexe

Tendances

Tendances (20)

TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesTDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
 
Estratégias de Refatoração: além do be-a-bá
Estratégias de Refatoração: além do be-a-báEstratégias de Refatoração: além do be-a-bá
Estratégias de Refatoração: além do be-a-bá
 
TDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saberTDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saber
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Refatoração 1/3 webinar
Refatoração 1/3   webinarRefatoração 1/3   webinar
Refatoração 1/3 webinar
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
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
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
 
Snapshot Tests: estratégia de agile testing para antecipação de falhas
Snapshot Tests: estratégia de agile testing para antecipação de falhasSnapshot Tests: estratégia de agile testing para antecipação de falhas
Snapshot Tests: estratégia de agile testing para antecipação de falhas
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
Como se tornar Agile Tester
Como se tornar Agile TesterComo se tornar Agile Tester
Como se tornar Agile Tester
 
TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código Legado
 
Palestra Ufpb
Palestra UfpbPalestra Ufpb
Palestra Ufpb
 
TDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVATDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVA
 
TDD direto das trincheiras
TDD direto das trincheirasTDD direto das trincheiras
TDD direto das trincheiras
 
tdc-recife-2020-complexidade-cognitiva
tdc-recife-2020-complexidade-cognitivatdc-recife-2020-complexidade-cognitiva
tdc-recife-2020-complexidade-cognitiva
 
Fisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoFisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmo
 
Introdução ao design de teste de software
Introdução ao design de teste de softwareIntrodução ao design de teste de software
Introdução ao design de teste de software
 
Testes em go
Testes em goTestes em go
Testes em go
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 

En vedette

En vedette (19)

Content Delivery Networks
Content Delivery NetworksContent Delivery Networks
Content Delivery Networks
 
Pyndorama
PyndoramaPyndorama
Pyndorama
 
Pyndorama
PyndoramaPyndorama
Pyndorama
 
Redes livres de escala
Redes livres de escalaRedes livres de escala
Redes livres de escala
 
O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...
O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...
O CPAN tem as ferramentas que você precisa para fazer TDD em Perl, o Coding D...
 
Intro Dojo Rio
Intro Dojo RioIntro Dojo Rio
Intro Dojo Rio
 
Comunicação
ComunicaçãoComunicação
Comunicação
 
Intro Dojo Rio Python Campus
Intro Dojo Rio Python CampusIntro Dojo Rio Python Campus
Intro Dojo Rio Python Campus
 
Redes livres de escala
Redes livres de escalaRedes livres de escala
Redes livres de escala
 
Python deployments on OpenShift 3
Python deployments on OpenShift 3Python deployments on OpenShift 3
Python deployments on OpenShift 3
 
Concurrency in Python4k
Concurrency in Python4kConcurrency in Python4k
Concurrency in Python4k
 
Building and Deploying containerized Python Apps in the Cloud
Building and Deploying containerized Python Apps in the CloudBuilding and Deploying containerized Python Apps in the Cloud
Building and Deploying containerized Python Apps in the Cloud
 
Coding Kwoon
Coding KwoonCoding Kwoon
Coding Kwoon
 
Python in 15 minutes
Python in 15 minutesPython in 15 minutes
Python in 15 minutes
 
Desenvolvimento Web com TurboGears e DOSVOX
Desenvolvimento Web com TurboGears e DOSVOXDesenvolvimento Web com TurboGears e DOSVOX
Desenvolvimento Web com TurboGears e DOSVOX
 
Pykonik Coding Dojo
Pykonik Coding DojoPykonik Coding Dojo
Pykonik Coding Dojo
 
Composing WSGI apps and spellchecking it all
Composing WSGI apps and spellchecking it allComposing WSGI apps and spellchecking it all
Composing WSGI apps and spellchecking it all
 
The Go features I can't live without
The Go features I can't live withoutThe Go features I can't live without
The Go features I can't live without
 
The Go features I can't live without, 2nd round
The Go features I can't live without, 2nd roundThe Go features I can't live without, 2nd round
The Go features I can't live without, 2nd round
 

Similaire à TDD do seu jeito

Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developing
Renato Oliveira
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
elliando dias
 

Similaire à TDD do seu jeito (20)

Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fisl
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégias
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
Test First, TDD e outros Bichos
Test First, TDD e outros BichosTest First, TDD e outros Bichos
Test First, TDD e outros Bichos
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Teste Driven Development
Teste Driven DevelopmentTeste Driven Development
Teste Driven Development
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
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
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
 
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitáriosInstituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitários
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 
Engenharia Ágil
Engenharia ÁgilEngenharia Ágil
Engenharia Ágil
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developing
 
TDD
TDDTDD
TDD
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 

Plus de Rodolfo Carvalho

Plus de Rodolfo Carvalho (7)

Go 1.10 Release Party - PDX Go
Go 1.10 Release Party - PDX GoGo 1.10 Release Party - PDX Go
Go 1.10 Release Party - PDX Go
 
OpenShift Overview - Red Hat Open School 2017
OpenShift Overview - Red Hat Open School 2017OpenShift Overview - Red Hat Open School 2017
OpenShift Overview - Red Hat Open School 2017
 
OpenShift Overview - Red Hat Open House 2017
OpenShift Overview - Red Hat Open House 2017OpenShift Overview - Red Hat Open House 2017
OpenShift Overview - Red Hat Open House 2017
 
Automation with Ansible and Containers
Automation with Ansible and ContainersAutomation with Ansible and Containers
Automation with Ansible and Containers
 
Go 1.8 Release Party
Go 1.8 Release PartyGo 1.8 Release Party
Go 1.8 Release Party
 
A Tour of Go - Workshop
A Tour of Go - WorkshopA Tour of Go - Workshop
A Tour of Go - Workshop
 
XMPP
XMPPXMPP
XMPP
 

Dernier

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Dernier (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

TDD do seu jeito

  • 1. TDD do seu jeito Israel Teixeira @israelst mudadeideia.com.br Rodolfo Carvalho @201 rodolfocarvalho.net
  • 3. Sobre o que vamos falar hoje TDD = Test-Driven Development = Desenvolvimento Guiado por Testes
  • 5. O que é TDD • Técnica e boa prática de desenvolvimento de software Fluxo de desenvolvimento tradicional Design Code Test
  • 6. O que é TDD • Técnica e boa prática de desenvolvimento de software Com TDD Design Test Test Code Refactor
  • 7. O que é TDD • Técnica e boa prática de desenvolvimento de software Design Code Test x Design Test Design Test Design Test Test Code Test Code Test Code ... Refactor Refactor Refactor tempo
  • 8. Exemplo: Caixa Eletrônico 1. Escrever um teste class CashMachineTests(unittest.TestCase): def test_draw_10_bucks(self): machine = CashMachine() self.assertEqual(machine.draw(10), [10])
  • 9. Exemplo: Caixa Eletrônico 2. Executar os testes e ver o novo teste falhar (vermelho) E ====================================================================== ERROR: test_draw_10_bucks (__main__.CashMachineTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "./cash_machine.py", line 6, in test_draw_10_bucks machine = CashMachine() NameError: global name 'CashMachine' is not defined
  • 10. Exemplo: Caixa Eletrônico 3. Implementar código suficiente para passar nos testes class CashMachine: def draw(self, amount): return [amount]
  • 11. Exemplo: Caixa Eletrônico 4. Executar os testes e ver todos passarem (verde) . ---------------------------------------------------------------------- Ran 1 test in 0.000s OK
  • 12. Exemplo: Caixa Eletrônico 5. Refatorar class CashMachine: class CashMachine: def draw(self, amount): def draw(self, amount): return [amount] bills = [amount] return bills
  • 13. Exemplo: Caixa Eletrônico 6. Executar os testes e garantir que todos continuam passando . ---------------------------------------------------------------------- Ran 1 test in 0.000s OK
  • 14. TDD é uma das formas de desenvolver software TDD != 42
  • 15. Guiando o processo http://www.flickr.com/photos/fallenidol/1234034423
  • 16. Intenção, avaliação, e feedback “No término de um trabalho, a avaliação é geralmente considerada uma operação óbvia, vista por qualquer ser sensato como legítima e desejável.” Christophe Dejours
  • 17. Por que TDD como metologia? • TDD faz com que você reflita sobre o processo. • 40% a 90% menos erros. Nagappan, Maximilien, Bhat e Williams. 2008. http://research.microsoft.com/en-us/groups/ese/nagappan_tdd.pdf
  • 18. TDD • Ajuda a: Programar por intenção Evitar a "síndrome da tela em branco"
  • 19. TDD 101010 010101
  • 20. TDD • Ajuda a: Programar por intenção Evitar a "síndrome da tela em branco" Reduzir a quantidade de bugs Documentar o código Rede de segurança contra regressões ...
  • 21. O excesso de design prévio https://picasaweb.google.com/rhcarvalho/Dojo25NaLapa http://bit.ly/kKEKAc
  • 22. Conclusões • TDD não se aplica em todos os contextos • Use TDD com sabedoria para guiar o desenvolvimento • Faça design iterativo • Não faça design prévio em excesso
  • 24. Avisos Coding Dojo • Quando: hoje, a partir de 15:00 • Onde: stand da globo.com • No Rio de Janeiro: http://dojorio.org/onde