Your SlideShare is downloading. ×
Peça seu código em casamento: TDD do jeito certo!
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Peça seu código em casamento: TDD do jeito certo!

1,058
views

Published on

Todo desenvolvedor de software deveria ter um relacionamento de intimidade com seu código, cuidar muito bem dele e declarar votos para selar este relacionamento. Será apresentada a mais nova suite de …

Todo desenvolvedor de software deveria ter um relacionamento de intimidade com seu código, cuidar muito bem dele e declarar votos para selar este relacionamento. Será apresentada a mais nova suite de testes da linguagem Python que permite qualquer desenvolvedor pedir seu código em casamento fazer ele jurar que está fazendo o que deveria fazer e do jeito certo.

Published in: Technology, Business

4 Comments
4 Likes
Statistics
Notes
No Downloads
Views
Total Views
1,058
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
4
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Peça seu código em casamento: TDD do jeito certo! @rafaelcaricioquinta-feira, 30 de junho de 2011
  • 2. Quem sou eu? @rafaelcaricioquinta-feira, 30 de junho de 2011
  • 3. Quando você ama e confia...quinta-feira, 30 de junho de 2011
  • 4. pede em casamento...quinta-feira, 30 de junho de 2011
  • 5. Não vou ensinar a consseguir uma noiva (ou namorada)...quinta-feira, 30 de junho de 2011
  • 6. Como confiar e amar seu código e assim casar com ele... TDD, Votos e Tópicosquinta-feira, 30 de junho de 2011
  • 7. Qual o problema? Dificio manutenção Código obscuro Bugs ...quinta-feira, 30 de junho de 2011
  • 8. O que é Test Driven Development?quinta-feira, 30 de junho de 2011
  • 9. O que é Test Driven Development?quinta-feira, 30 de junho de 2011
  • 10. Fluxo de desenvolvimento Design Test Test Implementquinta-feira, 30 de junho de 2011
  • 11. O que é um teste? Um bloco de código que descreve um comportamento desejado. *quinta-feira, 30 de junho de 2011
  • 12. Exemplo from friends import Tarsis def test_falar_bonito(): tarsisazevedo = Tarsis() palavras = tarsisazevedo.fala(2) assert 2 == len(palavras)quinta-feira, 30 de junho de 2011
  • 13. Exemplo from friends import Tarsis def test_falar_bonito(): tarsisazevedo = Tarsis() palavras = tarsisazevedo.fala(2) assert 2 == len(palavras) O que você espera que vai acontecer!quinta-feira, 30 de junho de 2011
  • 14. TDD não garante o melhor código! def fala(o): c = None return [“foco”] * o class Tarsis(): def __init__(self, *args, **kwargs): pass def fala(self, o): print “aqui: ” + str(o) a = fala(o) return aquinta-feira, 30 de junho de 2011
  • 15. Faça refactory do seu código!quinta-feira, 30 de junho de 2011
  • 16. class Tarsis(): def fala(self, numero_palavras): return [“foco”] * numero_palavrasquinta-feira, 30 de junho de 2011
  • 17. class Tarsis(): def fala(self, numero_palavras): return [“foco”] * numero_palavrasquinta-feira, 30 de junho de 2011
  • 18. class Tarsis(): def fala(self, numero_palavras): return [“foco”] * numero_palavrasquinta-feira, 30 de junho de 2011
  • 19. O que eu posso usar para testar meu código? - unittest - Nose - pytest - pyVowsquinta-feira, 30 de junho de 2011
  • 20. Vamos a um exemplo... def test_sum_returns_42():     result = add_two_numbers(41, 1)     assert result     assert int(result)     assert result == 42quinta-feira, 30 de junho de 2011
  • 21. Uma forma mais organizada... def test_sum_returns_result():     result = add_two_numbers(41, 1)     assert result def test_sum_returns_a_number():     result = add_two_numbers(41, 1)     assert int(result) def test_sum_returns_42():     result = add_two_numbers(41, 1)     assert result == 42quinta-feira, 30 de junho de 2011
  • 22. Alguns problemas identificados Repetição de código Muitos testes executando o mesmo código desnecessariamente Código ilegível Um teste com inúmeros assertsquinta-feira, 30 de junho de 2011
  • 23. Alguns problemas identificados Repetição de código Tópicos Muitos testes executando o mesmo código desnecessariamente Código ilegível Votos Um teste com inúmeros assertsquinta-feira, 30 de junho de 2011
  • 24. Uma boa ideia ... class SumContext(Vows.Context):     def topic(self):         return add_two_numbers(41, 1)     def we_get_a_result(self, topic):         expect(topic).Not.to_be_null()     def we_get_a_number(self, topic):         expect(topic).to_be_numeric()     def we_get_42(self, topic):         expect(topic).to_equal(42)quinta-feira, 30 de junho de 2011
  • 25. quinta-feira, 30 de junho de 2011
  • 26. quinta-feira, 30 de junho de 2011
  • 27. Um exemplo prático...quinta-feira, 30 de junho de 2011
  • 28. Xiii... mas eu não gostei desse “expect”quinta-feira, 30 de junho de 2011
  • 29. Xiii... mas eu não gostei desse “expect” Use o assert! :)quinta-feira, 30 de junho de 2011
  • 30. Xiii... mas eu não gostei desse “expect” Use o assert! :) class SumContext(Vows.Context):     def topic(self):         return add_two_numbers(41, 1)     def we_get_a_result(self, topic):         assert None != topicquinta-feira, 30 de junho de 2011
  • 31. Gostei do “expect”, mas não tem um que atenda minha necessidade!quinta-feira, 30 de junho de 2011
  • 32. Gostei do “expect”, mas não tem um que atenda minha necessidade! Crie um! :)quinta-feira, 30 de junho de 2011
  • 33. Gostei do “expect”, mas não tem um que atenda minha necessidade! Crie um! :) @Vows.assertion def to_be_less_than_2(topic): assert topic < 2 class SumContext(Vows.Context):     def topic(self):         return add_two_numbers(41, 1)     def we_get_a_result(self, topic):         expect(topic).to_be_less_than_2()quinta-feira, 30 de junho de 2011
  • 34. Certo, mas como instalo o pyVows? $ pip install pyvowsquinta-feira, 30 de junho de 2011
  • 35. Extensões • Tornado • Django* • ...quinta-feira, 30 de junho de 2011
  • 36. Como contribuir? • Pull request https://github.com/heynemann/pyvows/quinta-feira, 30 de junho de 2011
  • 37. Hora de jogar o buquê!quinta-feira, 30 de junho de 2011
  • 38. Peça seu código em casamento: TDD do jeito certo!quinta-feira, 30 de junho de 2011
  • 39. Dúvidas? A hora é agora! Peça seu código em casamento: TDD do jeito certo! @rafaelcaricio rafael@caricio.comquinta-feira, 30 de junho de 2011

×