[RockAndRails] TDD com RSpec

  • 2,062 views
Uploaded on

Palestra ministrada no Rock and Rails, primeiro evento de Ruby/Rails do ES.

Palestra ministrada no Rock and Rails, primeiro evento de Ruby/Rails do ES.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
2,062
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
2
Likes
7

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. tdd com rspecTDD com RSpec
  • 2. tdd com rspecQ vergonha @leohackin RaquinLéo Hackin (Rá-kim) Héquin
  • 3. tdd com rspec
  • 4. tdd com rspec
  • 5. tdd com rspechttp://4.bp.blogspot.com/_KzayWGqkmgk/TEHXrMxoa3I/AAAAAAAAAfE/ON3rTQb-r20/s400/papel-higienico-cuba.jpg
  • 6. tdd com rspec TDDTest Driven Development Desenvolvimento orientado a testes Jura???
  • 7. tdd com rspec Escreve código Testa no browserDeu certo? Deu erro? #win! Corrige
  • 8. tdd com rspec Problema 1Modificações podem gerar BUGS http://blog.arena41.com/wp-content/uploads/2010/03/computer-bug.png
  • 9. tdd com rspec bug #2 Eu esperava :) Uhnn!Estranho esse! bug #1modificação alteração ok erro #1O cliente ligou! oO Viiixi! Zuou! erro em prod.
  • 10. http://givenmydruthers.files.wordpress.com/2010/02/snowball.jpg
  • 11. tdd com rspec Problema 2Testar manualmente é cansativo http://anderssauro.com/wp-content/midia/a6f091ef93f5_1344B/boring.jpg
  • 12. tdd com rspec Problema 3Humanos fazendo testes http://2.bp.blogspot.com/-7_Sojkl9GKc/TebFfeHFzKI/AAAAAAAAARk/WBz-6PmwZyw/s1600/wtf5.jpg
  • 13. Deu pau cara! :( Ráááááá! http://1.bp.blogspot.com/-1UYXDHKjaCQ/TdLJA6uFbNI/AAAAAAAACAI/4814xUBjNFk/s1600/Sergio%2BMallandro%2Bfoto.JPG
  • 14. tdd com rspec Problema 4$$$$$$$$$$$$$$$$$$$$$$$$$$$ Tempo é dinheiro
  • 15. http://digitalparenting.files.wordpress.com/2010/12/cute-boy-playing-video-games-computer1.jpg tdd com rspec
  • 16. tdd com rspec Problema 5O programador novo http://www.doublecrossstudios.co.uk/blogs/charlie/wp-content/uploads/2009/08/bustorbail.jpg
  • 17. Problema 6 Chefes não gostam de TDDhttp://downloads.open4group.com/wallpapers/chefe-do-homer-assustador-bd76b.jpg
  • 18. tdd com rspecProblemas reais! Pissit! Quem falar ganhar prêmio!
  • 19. tdd com rspecEssa palestra é pra você! http://3.bp.blogspot.com/_YAefRFqmQKU/S85F77sD1KI/AAAAAAAAAJI/XB60ZTCF2ws/s1600/fail_square_wheel_tricycle_gtfo_n00b.jpg
  • 20. tdd com rspecMas se você já testa elaé pra você também! :)
  • 21. tdd com rspec TDDDesenvolvimento orientado a testesVocê testa primeiro! ;)
  • 22. XP
  • 23. tdd com rspecUia! Mas porque testar antes tio? Pode sim. A regra é clara!
  • 24. tdd com rspecPra que testar software antes de escrever o código?
  • 25. 1) Prever erros http://mondoauto.blogosfere.it/images/crashtest500.jpg
  • 26. Não usei TDD né parceiro.http://1.bp.blogspot.com/-1kLmITxLj4Q/TfZHfCLS5FI/AAAAAAAABUI/bEtZKAsoc5s/s1600/ro0naldo.jpg
  • 27. tdd com rspec Vamo acertar! :) teste quebroumodificação alteração ok
  • 28. tdd com rspec2) Melhorar o código da app http://asiasociety.org/files/systems-thinking.png
  • 29. tdd com rspecXGH (Extreme Go Horse) http://gohorseprocess.files.wordpress.com/2011/02/horse21.png
  • 30. tdd com rspec3) Software mais clean http://1.bp.blogspot.com/-ZR3B0a7whkM/TWXTcD4VOvI/AAAAAAAAAKA/QmoThFyL2PA/s1600/Interior-Design-Ideas-Screensaver.jpg
  • 31. tdd com rspec 4) Confiança para alterarhttp://wallpapers.free-review.net/wallpapers/54/Extreme_sport_from_rock_climbing_to_mountain_parachuting.jpg
  • 32. tdd com rspec5) teste automágicos http://2.bp.blogspot.com/-ZSv4lhC25lI/TiHVVPtiBzI/AAAAAAAAANE/H6BwrKiwR28/s1600/mister-m-704820.jpg
  • 33. tdd com rspec
  • 34. Tátudo testado chefe! Eu juro....
  • 35. tdd com rspec6) ajuda novos membros http://wallpapers.free-review.net/wallpapers/33/Programmer.jpg
  • 36. tdd com rspec
  • 37. tdd com rspec O que é um teste?É um conjunto de condições (código) usado paraidentificar erros e garantir que os requisitos de um software sejam plentamente atendidos. É um bloco de instruções para testar se a app está funcionando como deve e sem erros. ;)
  • 38. tdd com rspec Tipos de testeUnitário Integração Aceitação
  • 39. tdd com rspec Teste Unitário Testa as entradas e saídas esperadasUnidade = menor parte de código testávelUnidade = métodos de objeto, uma função
  • 40. tdd com rspec Fluxo do TDD REDREFACTOR GREEN
  • 41. tdd com rspec REDEscreva um teste que falhe
  • 42. tdd com rspec GREENEscreva o código necessário e faça o seu teste passar
  • 43. tdd com rspec REFACTORMelhore o código que você escreveu :)
  • 44. tdd com rspecFrase chocante: TDD não é só sobre escrever testes e testar
  • 45. tdd com rspecTDD é sobre design.
  • 46. tdd com rspechttp://www.starzlife.com/files/2010/03/ricky-martin.jpg
  • 47. tdd com rspec... de software ...
  • 48. tdd com rspechttp://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2011/7/1/1309538517951/Ricky-Martin.-007.jpg
  • 49. http://hidrotec-es.com.br/denisferrari/wiki/wp-content/uploads/2010/07/tdd.jpg tdd com rspec O ciclo red->green->refactorpermite você refatorar e repensar sua app constantemente
  • 50. tdd com rspecShow me the code
  • 51. tdd com rspec
  • 52. tdd com rspecMeio difícil de ler eentender bem né?
  • 53. tdd com rspec Sentenças simples me daria mais foco no teste Nomes de teste mais expressivos Behaviour é mais importante que test Dan Northhttp://dannorth.net/introducing-bdd/
  • 54. tdd com rspec BDDBehaviour Driven Development
  • 55. tdd com rspecBDD Descrever comportamentoPensar no design e documentar o código Tornar o TDD mais acessível e efetivo
  • 56. tdd com rspec
  • 57. tdd com rspecMais fácil né?
  • 58. tdd com rspec RSpecFramework BDD para Ruby/RoR
  • 59. tdd com rspecRSpec helps you do the TDD part of thatequation, focusing on the documentation anddesign aspects of TDD. David Chelimsky
  • 60. tdd com rspecDescreve o comportamentocomo se fosse uma estória comportamento == nosso teste :)
  • 61. tdd com rspechttp://carplace.virgula.uol.com.br/wp-content/uploads/2010/05/chevrolet-camaro-hennessey-01.jpg
  • 62. tdd com rspec Instalação $ gem install rspec$ gem install rspec-rails
  • 63. tdd com rspec No seu projeto Railsgroup :test, :development do gem "rspec-rails", "~> 2.6"end inserir no arquivo Gemfile
  • 64. tdd com rspecRodar na raiz do projeto $ rails g rspec:install
  • 65. tdd com rspecEscreva um teste spec/truth_spec.rb
  • 66. tdd com rspecRode o spec! :D
  • 67. tdd com rspecTodos os testes devem estar na pasta spec e terminar em _spec.rb
  • 68. tdd com rspec Anatomiadescreva “a verdade” sentença expectativa
  • 69. describedescreve de quem é o comportamento e agrupaos exemploité a sentença que descreve um exemplo docomportamentoshouldverbo usado para dizer o que objeto “deveria”retornar quando algo é feito
  • 70. tdd com rspecAo bloco de teste damos o nome de exemplo
  • 71. descreva carrodeveria ter rodasdeveria ligar quando rodar a chavedeveria ter uma marcadeveria ter um modelo
  • 72. tdd com rspec Problema realPost para um blog
  • 73. tdd com rspec Post deveria ter ...• Um título• Um texto• Um status• O status deve ser “publicado” ou “rascunho”
  • 74. tdd com rspec Post deveria...• dizer se está publicado ou não
  • 75. Live Coding
  • 76. tdd com rspec Criando o model$ rails g model post titulo:stringstatus:string texto:text
  • 77. tdd com rspec Gerando a tabela$ rake db:migrate
  • 78. tdd com rspec
  • 79. tdd com rspecRode os testes $ rake spec
  • 80. tdd com rspec Primeiro testeUm post deve ter um título
  • 81. tdd com rspecEscreva um teste que falhe spec/models/post_spec.rb
  • 82. tdd com rspecRode os testes $ rake spec
  • 83. tdd com rspecFaça o teste passar app/models/post.rb
  • 84. tdd com rspecRode os testes $ rake spec
  • 85. Irado Manolo!
  • 86. tdd com rspecPrecisa refatorar? spec/models/post_spec.rb
  • 87. tdd com rspec Should e ExpectationsExpectations são as expectativas de comonosso código deveria se comportarshould > deveriashould_not > não deveria
  • 88. tdd com rspec MatchersPermitem escrever asexpectativas com umalinguagem mais natural
  • 89. tdd com rspec Matchers Apenas alguns• be• be_true• be_false• be_instance_of• be_kind_of• include• respond_to
  • 90. tdd com rspec Segundo testeUm post deve ter um status
  • 91. tdd com rspecEscreva um teste que falhe spec/models/post_spec.rb
  • 92. tdd com rspecRode os testes $ rake spec
  • 93. tdd com rspecFaça o teste passar app/models/post.rb
  • 94. tdd com rspecRode os testes $ rake spec
  • 95. tdd com rspecPrecisa refatorar? spec/models/post_spec.rb
  • 96. tdd com rspecAlgo de errado não está certo spec/models/post_spec.rb
  • 97. tdd com rspec Before e After Inicializando objetos antes e depois de cada exemplobefore(:each) e after(:each)permite executar comandos antes e depois decada exemplobefore(:all) e after(:all)permite executar comandos antes e depois detodos os exemplos e comportamentos
  • 98. tdd com rspec after(:each)é rarararararamente usado
  • 99. tdd com rspecRefatorando :D spec/models/post_spec.rb
  • 100. tdd com rspecRode os testes $ rake spec
  • 101. tdd com rspec Terceiro teste O status deve ser“publicado” ou “rascunho”
  • 102. tdd com rspecEscreva um teste que falhe spec/models/post_spec.rb
  • 103. tdd com rspecRode os testes $ rake spec
  • 104. tdd com rspecFaça o teste passar app/models/post.rb
  • 105. tdd com rspecRode os testes $ rake spec
  • 106. tdd com rspecOpa! Refactoring! app/models/post.rb
  • 107. tdd com rspecOpa! Refactoring! app/models/post.rb
  • 108. tdd com rspecRode os testes $ rake spec
  • 109. tdd com rspec Quarto testeO post deve ter um texto Quem se habilita?
  • 110. tdd com rspec Quinto testeDizer se está publicado Mais alguém se habilita?
  • 111. tdd com rspecEscreva um teste que falhe spec/models/post_spec.rb Amazing!!!
  • 112. tdd com rspecRode os testes $ rake spec
  • 113. tdd com rspecFaça o teste passar app/models/post.rb
  • 114. tdd com rspecRode os testes $ rake spec
  • 115. tdd com rspecE por ai vai ... :)
  • 116. tdd com rspec Próximos passos• Mock/Stubs• Matchers mais avançados• Fixtures• Testes de controller• Helpers• Boas práticas de agrupamento
  • 117. tdd com rspec O que ler• http://rspec.info• http://howtocode.com.br/ebooks/ rspec• http://pragprog.com/book/nrtest/rails- test-prescriptions
  • 118. tdd com rspec
  • 119. tdd com rspec Valew! :Dleohackin@gmail.com