Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

TDD do seu jeito

1,347 views

Published on

Palestra apresentada em 02/07/2011 no FISL12.

Published in: Technology, Business
  • Be the first to comment

TDD do seu jeito

  1. 1. TDD do seu jeitoIsrael Teixeira @israelst mudadeideia.com.brRodolfo Carvalho @201 rodolfocarvalho.net
  2. 2. http://dojorio.org
  3. 3. Sobre o que vamos falar hoje TDD = Test-Driven Development =Desenvolvimento Guiado por Testes
  4. 4. Preparando uma palestra sobre TDD
  5. 5. O que é TDD• Técnica e boa prática de desenvolvimento de software Fluxo de desenvolvimento tradicional Design Code Test
  6. 6. O que é TDD • Técnica e boa prática de desenvolvimento de software Com TDD Design Test Test CodeRefactor
  7. 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 Refactortempo
  8. 8. Exemplo: Caixa Eletrônico1. Escrever um teste class CashMachineTests(unittest.TestCase): def test_draw_10_bucks(self): machine = CashMachine() self.assertEqual(machine.draw(10), [10])
  9. 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. 10. Exemplo: Caixa Eletrônico3. Implementar código suficiente para passar nos testes class CashMachine: def draw(self, amount): return [amount]
  11. 11. Exemplo: Caixa Eletrônico 4. Executar os testes e ver todos passarem (verde).----------------------------------------------------------------------Ran 1 test in 0.000sOK
  12. 12. Exemplo: Caixa Eletrônico5. Refatorarclass CashMachine: class CashMachine: def draw(self, amount): def draw(self, amount): return [amount] bills = [amount] return bills
  13. 13. Exemplo: Caixa Eletrônico 6. Executar os testes e garantir que todos continuam passando.----------------------------------------------------------------------Ran 1 test in 0.000sOK
  14. 14. TDD é uma das formas de desenvolver software TDD != 42
  15. 15. Guiando o processo http://www.flickr.com/photos/fallenidol/1234034423
  16. 16. Intenção, avaliação, e feedback“No término de um trabalho, a avaliação égeralmente considerada uma operação óbvia, vistapor qualquer ser sensato como legítima edesejável.” Christophe Dejours
  17. 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. 18. TDD• Ajuda a: Programar por intenção Evitar a "síndrome da tela em branco"
  19. 19. TDD 101010 010101
  20. 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. 21. O excesso de design préviohttps://picasaweb.google.com/rhcarvalho/Dojo25NaLapa http://bit.ly/kKEKAc
  22. 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
  23. 23. ?Perguntas
  24. 24. Avisos Coding Dojo• Quando: hoje, a partir de 15:00• Onde: stand da globo.com• No Rio de Janeiro: http://dojorio.org/onde

×