globo               Test Driven Development
           .com            Trabalhe tranquilo e maximize sua produtividade




Friday, December 9, 2011
Sobre Mim
   ‣   Flávio Ribeiro
         ‣   Graduado em Engenharia Elétrica pelo IFPB
         ‣   Engenheiro de Software na Globo.com

             @flavioribeiro




Friday, December 9, 2011
Sobre a Palestra
   ‣   Vamos falar de ...




Friday, December 9, 2011
Problemas Reais
Friday, December 9, 2011
Entregas Cíclicas
                                   continous delivery




Friday, December 9, 2011
Modelagem
                                 design


Friday, December 9, 2011
Profissionalismo?
Friday, December 9, 2011
Test Driven
    Development




Friday, December 9, 2011
Friday, December 9, 2011
Friday, December 9, 2011
Antes de Comecar...
   ‣   TDD não é ensinado, TDD é praticado!

   ‣   Na fase de treinamento é importante seguir as
       regras.

   ‣   Baby Steps.




Friday, December 9, 2011
Modelagem/Testedesign




Friday, December 9, 2011
Modelagem / Teste
   ‣   Seja cliente do código que irá escrever
         ‣   O que eu vou entregar e o que eu quero de volta?

   ‣   Escreva um teste com o design concebido




Friday, December 9, 2011
Escreva o código




Friday, December 9, 2011
Escreva o código
   ‣   Gaste um tempo pensando no seu problema, planeje
       até ter uma solução limpa e elegante.

   ‣   Mantenha o foco. O target é fazer o teste passar.

   ‣   Faça o teste passar.




Friday, December 9, 2011
Refatorar




Friday, December 9, 2011
Refatorar
   ‣   Use nomes que façam sentido.
   ‣   Aplique otimizações.
   ‣   Pair Programming
   ‣   Honre seu nome, o git blame pode te entregar.
   ‣   “Qualquer um escreve código que computadores
       entendem. Bons programadores escrevem código
       que humanos podem entender.” - Martin Fowler



Friday, December 9, 2011
Quando refatorar?
   ‣   Código duplicado

   ‣   Métodos longos

   ‣   Classes grandes (o famoso sacolão)

   ‣   Muitos parâmetros



Friday, December 9, 2011
Quando refatorar?
                                        .. do Zen of Python (Tim Peters)
   ‣   Beautiful is better than ugly.

   ‣   Simple is better than complex.

   ‣   Sparse is better than dense.

   ‣   Readability counts.



Friday, December 9, 2011
“Talk is cheap.. show me the code.”




Friday, December 9, 2011
Friday, December 9, 2011
Placar de Boliche
   ‣   10 “frames”, 2 arremessos cada
   ‣   10 pinos

   ‣   Strike: Se o primeiro arremesso derrubar os 10 pinos
         ‣   Os dois próximos arremessos serão “dobrados”

   ‣   Spare: Derrubar todos os pinos com os 2
       arremessos
         ‣   O próximo arremesso será “dobrado”
Friday, December 9, 2011
Legal! Mas... pra que serve mesmo?
Friday, December 9, 2011
O Problema
                                    Bom




                           Barato         Rápido


Friday, December 9, 2011
TDD ajuda a equalizar




Friday, December 9, 2011
TDD ajuda a equalizar
   ‣   Testar é mais barato que debugar.
         ‣   (Tempo = Dinheiro)
   ‣   Código é documentado pelos testes.
   ‣   Menos bugs em produção.
   ‣   Software mais consistente. Mude o que quiser com
       segurança. Trabalhe tranquilo.
   ‣   Entregas cíclicas.


Friday, December 9, 2011
Entregas Cíclicas
Friday, December 9, 2011
Entregas Cíclicas      continuous delivery
   ‣   Feedback imediado.

   ‣   Pequenas entregas.

   ‣   Alertas sobre build. (verde/vermelho)

   ‣   Alinhamento de expectativas.

   ‣   Manutenção do escopo.

Friday, December 9, 2011
Ops, quebraram o build!
Friday, December 9, 2011
Ainda temos tempo?
   ‣   Mocks, stubs e fakes

   ‣   Outros testes
         ‣   Teste de Intregração




Friday, December 9, 2011
Perguntas?



                           @flavioribeiro

Friday, December 9, 2011
Obrigado!       ;)
                           @flavioribeiro

Friday, December 9, 2011
Links
 http://programmers.stackexchange.com/questions/93302/spending-too-much-time-debugging
 http://www.slideshare.net/Skud/test-driven-development-tutorial
 http://www.ime.usp.br/~pf/algoritmos/aulas/footnotes/epigraphs.html
 http://tonygodoy.blog.com/files/2010/12/macaco-pensativo.jpg
 http://python.org
 http://www.slideshare.net/redigon/refactoring-1658371
 http://speakerdeck.com/u/tarsisazevedo/p/refactoring-comece-agora
 http://www.slideshare.net/osantana/tdd-com-python
 http://www.klauslaube.com.br/wp-content/uploads/2011/01/TestDrivenGameDevelopment.png
 http://speakerdeck.com/u/tarsisazevedo/p/refactoring-comece-agora
 http://www.flickr.com/photos/kalavinka/4617897952/sizes/o/in/photostream/
 http://disciplinas.dcc.ufba.br/pub/MATB14/TDDComRuby/tdd-cycle.jpg
 http://designcipta.com/wp-content/uploads/2011/02/architect_2.jpg
 http://cdn02.cdnwp.celebuzz.com/wp-content/uploads/legacy/celebuzz/default/msg-127981724976-3.jpg
 http://markmail.org/message/jmvo3hedwp3zrcoo
 http://se.inf.ethz.ch/old/teaching/2010-S/0276/slides/pletikosa.pdf
 http://www.agile-itea.org/public/deliverables/ITEA-AGILE-D2.7_v1.0.pdf
 http://stackoverflow.com/questions/787172/what-is-a-good-sample-class-to-demonstrate-tdd
 http://www.objectmentor.com/resources/articles/xpepisode.htm
 http://galeri.uludagsozluk.com/49/linus-torvalds_64902.jpg
 http://3.bp.blogspot.com/_Hep8dtfRKAg/TNgEf6kvmzI/AAAAAAAAABk/BTo3MqMFl1U/s1600/
 bowling.jpg
 http://pt.wikipedia.org/wiki/Boliche

Friday, December 9, 2011

Test Driven Development - Trabalhe tranquilo e maximize sua produtividade

  • 1.
    globo Test Driven Development .com Trabalhe tranquilo e maximize sua produtividade Friday, December 9, 2011
  • 2.
    Sobre Mim ‣ Flávio Ribeiro ‣ Graduado em Engenharia Elétrica pelo IFPB ‣ Engenheiro de Software na Globo.com @flavioribeiro Friday, December 9, 2011
  • 3.
    Sobre a Palestra ‣ Vamos falar de ... Friday, December 9, 2011
  • 4.
  • 5.
    Entregas Cíclicas continous delivery Friday, December 9, 2011
  • 6.
    Modelagem design Friday, December 9, 2011
  • 7.
  • 8.
    Test Driven Development Friday, December 9, 2011
  • 9.
  • 10.
  • 11.
    Antes de Comecar... ‣ TDD não é ensinado, TDD é praticado! ‣ Na fase de treinamento é importante seguir as regras. ‣ Baby Steps. Friday, December 9, 2011
  • 12.
  • 13.
    Modelagem / Teste ‣ Seja cliente do código que irá escrever ‣ O que eu vou entregar e o que eu quero de volta? ‣ Escreva um teste com o design concebido Friday, December 9, 2011
  • 14.
    Escreva o código Friday,December 9, 2011
  • 15.
    Escreva o código ‣ Gaste um tempo pensando no seu problema, planeje até ter uma solução limpa e elegante. ‣ Mantenha o foco. O target é fazer o teste passar. ‣ Faça o teste passar. Friday, December 9, 2011
  • 16.
  • 17.
    Refatorar ‣ Use nomes que façam sentido. ‣ Aplique otimizações. ‣ Pair Programming ‣ Honre seu nome, o git blame pode te entregar. ‣ “Qualquer um escreve código que computadores entendem. Bons programadores escrevem código que humanos podem entender.” - Martin Fowler Friday, December 9, 2011
  • 18.
    Quando refatorar? ‣ Código duplicado ‣ Métodos longos ‣ Classes grandes (o famoso sacolão) ‣ Muitos parâmetros Friday, December 9, 2011
  • 19.
    Quando refatorar? .. do Zen of Python (Tim Peters) ‣ Beautiful is better than ugly. ‣ Simple is better than complex. ‣ Sparse is better than dense. ‣ Readability counts. Friday, December 9, 2011
  • 20.
    “Talk is cheap..show me the code.” Friday, December 9, 2011
  • 21.
  • 22.
    Placar de Boliche ‣ 10 “frames”, 2 arremessos cada ‣ 10 pinos ‣ Strike: Se o primeiro arremesso derrubar os 10 pinos ‣ Os dois próximos arremessos serão “dobrados” ‣ Spare: Derrubar todos os pinos com os 2 arremessos ‣ O próximo arremesso será “dobrado” Friday, December 9, 2011
  • 23.
    Legal! Mas... praque serve mesmo? Friday, December 9, 2011
  • 24.
    O Problema Bom Barato Rápido Friday, December 9, 2011
  • 25.
    TDD ajuda aequalizar Friday, December 9, 2011
  • 26.
    TDD ajuda aequalizar ‣ Testar é mais barato que debugar. ‣ (Tempo = Dinheiro) ‣ Código é documentado pelos testes. ‣ Menos bugs em produção. ‣ Software mais consistente. Mude o que quiser com segurança. Trabalhe tranquilo. ‣ Entregas cíclicas. Friday, December 9, 2011
  • 27.
  • 28.
    Entregas Cíclicas continuous delivery ‣ Feedback imediado. ‣ Pequenas entregas. ‣ Alertas sobre build. (verde/vermelho) ‣ Alinhamento de expectativas. ‣ Manutenção do escopo. Friday, December 9, 2011
  • 29.
    Ops, quebraram obuild! Friday, December 9, 2011
  • 30.
    Ainda temos tempo? ‣ Mocks, stubs e fakes ‣ Outros testes ‣ Teste de Intregração Friday, December 9, 2011
  • 31.
    Perguntas? @flavioribeiro Friday, December 9, 2011
  • 32.
    Obrigado! ;) @flavioribeiro Friday, December 9, 2011
  • 33.
    Links http://programmers.stackexchange.com/questions/93302/spending-too-much-time-debugging http://www.slideshare.net/Skud/test-driven-development-tutorial http://www.ime.usp.br/~pf/algoritmos/aulas/footnotes/epigraphs.html http://tonygodoy.blog.com/files/2010/12/macaco-pensativo.jpg http://python.org http://www.slideshare.net/redigon/refactoring-1658371 http://speakerdeck.com/u/tarsisazevedo/p/refactoring-comece-agora http://www.slideshare.net/osantana/tdd-com-python http://www.klauslaube.com.br/wp-content/uploads/2011/01/TestDrivenGameDevelopment.png http://speakerdeck.com/u/tarsisazevedo/p/refactoring-comece-agora http://www.flickr.com/photos/kalavinka/4617897952/sizes/o/in/photostream/ http://disciplinas.dcc.ufba.br/pub/MATB14/TDDComRuby/tdd-cycle.jpg http://designcipta.com/wp-content/uploads/2011/02/architect_2.jpg http://cdn02.cdnwp.celebuzz.com/wp-content/uploads/legacy/celebuzz/default/msg-127981724976-3.jpg http://markmail.org/message/jmvo3hedwp3zrcoo http://se.inf.ethz.ch/old/teaching/2010-S/0276/slides/pletikosa.pdf http://www.agile-itea.org/public/deliverables/ITEA-AGILE-D2.7_v1.0.pdf http://stackoverflow.com/questions/787172/what-is-a-good-sample-class-to-demonstrate-tdd http://www.objectmentor.com/resources/articles/xpepisode.htm http://galeri.uludagsozluk.com/49/linus-torvalds_64902.jpg http://3.bp.blogspot.com/_Hep8dtfRKAg/TNgEf6kvmzI/AAAAAAAAABk/BTo3MqMFl1U/s1600/ bowling.jpg http://pt.wikipedia.org/wiki/Boliche Friday, December 9, 2011