tdd com rspecTDD com RSpec
tdd com rspecQ vergonha                 @leohackin                      RaquinLéo Hackin (Rá-kim)      Héquin
tdd com rspec
tdd com rspec
tdd com rspechttp://4.bp.blogspot.com/_KzayWGqkmgk/TEHXrMxoa3I/AAAAAAAAAfE/ON3rTQb-r20/s400/papel-higienico-cuba.jpg
tdd com rspec          TDDTest Driven Development Desenvolvimento orientado a testes                                 Jura???
tdd com rspec              Escreve código             Testa no browserDeu certo?                      Deu erro?  #win!    ...
tdd com rspec       Problema 1Modificações podem gerar BUGS                 http://blog.arena41.com/wp-content/uploads/2010...
tdd com rspec                     bug #2                                               Eu esperava :)    Uhnn!Estranho ess...
http://givenmydruthers.files.wordpress.com/2010/02/snowball.jpg
tdd com rspec       Problema 2Testar manualmente é cansativo                  http://anderssauro.com/wp-content/midia/a6f0...
tdd com rspec   Problema 3Humanos fazendo testes         http://2.bp.blogspot.com/-7_Sojkl9GKc/TebFfeHFzKI/AAAAAAAAARk/WBz...
Deu pau cara! :(                                                                                     Ráááááá!            h...
tdd com rspec     Problema 4$$$$$$$$$$$$$$$$$$$$$$$$$$$    Tempo é dinheiro
http://digitalparenting.files.wordpress.com/2010/12/cute-boy-playing-video-games-computer1.jpg                             ...
tdd com rspec  Problema 5O programador novo        http://www.doublecrossstudios.co.uk/blogs/charlie/wp-content/uploads/20...
Problema 6      Chefes não    gostam de TDDhttp://downloads.open4group.com/wallpapers/chefe-do-homer-assustador-bd76b.jpg
tdd com rspecProblemas reais!             Pissit! Quem falar              ganhar prêmio!
tdd com rspecEssa palestra é pra você!    http://3.bp.blogspot.com/_YAefRFqmQKU/S85F77sD1KI/AAAAAAAAAJI/XB60ZTCF2ws/s1600/...
tdd com rspecMas se você já testa elaé pra você também! :)
tdd com rspec             TDDDesenvolvimento orientado a testesVocê testa primeiro! ;)
XP
tdd com rspecUia! Mas porque testar      antes tio?            Pode sim. A regra é                  clara!
tdd com rspecPra que testar software        antes de escrever o código?
1) Prever erros             http://mondoauto.blogosfere.it/images/crashtest500.jpg
Não usei TDD né                                        parceiro.http://1.bp.blogspot.com/-1kLmITxLj4Q/TfZHfCLS5FI/AAAAAAAA...
tdd com rspec                               Vamo                             acertar! :)             teste quebroumodificaç...
tdd com rspec2) Melhorar o código da app                   http://asiasociety.org/files/systems-thinking.png
tdd com rspecXGH (Extreme Go Horse)                  http://gohorseprocess.files.wordpress.com/2011/02/horse21.png
tdd com rspec3) Software mais clean    http://1.bp.blogspot.com/-ZR3B0a7whkM/TWXTcD4VOvI/AAAAAAAAAKA/QmoThFyL2PA/s1600/Int...
tdd com rspec                  4) Confiança para alterarhttp://wallpapers.free-review.net/wallpapers/54/Extreme_sport_from_...
tdd com rspec5) teste automágicos      http://2.bp.blogspot.com/-ZSv4lhC25lI/TiHVVPtiBzI/AAAAAAAAANE/H6BwrKiwR28/s1600/mis...
tdd com rspec
Tátudo testado chefe! Eu        juro....
tdd com rspec6) ajuda novos membros               http://wallpapers.free-review.net/wallpapers/33/Programmer.jpg
tdd com rspec
tdd com rspec        O que é um teste?É um conjunto de condições (código) usado paraidentificar erros e garantir que os req...
tdd com rspec           Tipos de testeUnitário        Integração   Aceitação
tdd com rspec        Teste Unitário   Testa as entradas e saídas esperadasUnidade = menor parte de código testávelUnidade ...
tdd com rspec     Fluxo do TDD           REDREFACTOR            GREEN
tdd com rspec        REDEscreva um teste que falhe
tdd com rspec       GREENEscreva o código necessário e   faça o seu teste passar
tdd com rspec       REFACTORMelhore o código que você escreveu :)
tdd com rspecFrase chocante: TDD não   é só sobre escrever      testes e testar
tdd com rspecTDD é sobre design.
tdd com rspechttp://www.starzlife.com/files/2010/03/ricky-martin.jpg
tdd com rspec... de software ...
tdd com rspechttp://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2011/7/1/1309538517951/Ricky-Martin.-007.jpg
http://hidrotec-es.com.br/denisferrari/wiki/wp-content/uploads/2010/07/tdd.jpg                                            ...
tdd com rspecShow me the code
tdd com rspec
tdd com rspecMeio difícil de ler eentender bem né?
tdd com rspec                 Sentenças simples me daria                     mais foco no teste                           ...
tdd com rspec         BDDBehaviour Driven Development
tdd com rspecBDD      Descrever comportamentoPensar no design e documentar o código Tornar o TDD mais acessível e efetivo
tdd com rspec
tdd com rspecMais fácil né?
tdd com rspec        RSpecFramework BDD para Ruby/RoR
tdd com rspecRSpec helps you do the TDD part of thatequation, focusing on the documentation anddesign aspects of TDD.     ...
tdd com rspecDescreve o comportamentocomo se fosse uma estória  comportamento == nosso teste :)
tdd com rspechttp://carplace.virgula.uol.com.br/wp-content/uploads/2010/05/chevrolet-camaro-hennessey-01.jpg
tdd com rspec   Instalação  $ gem install rspec$ gem install rspec-rails
tdd com rspec No seu projeto Railsgroup :test, :development do gem "rspec-rails", "~> 2.6"end   inserir no arquivo Gemfile
tdd com rspecRodar na raiz do projeto      $ rails g rspec:install
tdd com rspecEscreva um teste  spec/truth_spec.rb
tdd com rspecRode o spec! :D
tdd com rspecTodos os testes devem estar na pasta spec e terminar em _spec.rb
tdd com rspec                       Anatomiadescreva “a verdade”   sentença                             expectativa
describedescreve de quem é o comportamento e agrupaos exemploité a sentença que descreve um exemplo docomportamentoshouldv...
tdd com rspecAo bloco de teste damos  o nome de exemplo
descreva carrodeveria ter rodasdeveria ligar quando rodar a chavedeveria ter uma marcadeveria ter um modelo
tdd com rspec  Problema realPost para um blog
tdd com rspec    Post deveria ter ...• Um título• Um texto• Um status• O status deve ser “publicado” ou  “rascunho”
tdd com rspec        Post deveria...• dizer se está publicado ou não
Live Coding
tdd com rspec      Criando o model$ rails g model post titulo:stringstatus:string texto:text
tdd com rspec     Gerando a tabela$ rake db:migrate
tdd com rspec
tdd com rspecRode os testes     $ rake spec
tdd com rspec     Primeiro testeUm post deve ter um título
tdd com rspecEscreva um teste que falhe         spec/models/post_spec.rb
tdd com rspecRode os testes     $ rake spec
tdd com rspecFaça o teste passar      app/models/post.rb
tdd com rspecRode os testes     $ rake spec
Irado Manolo!
tdd com rspecPrecisa refatorar?    spec/models/post_spec.rb
tdd com rspec      Should e ExpectationsExpectations são as expectativas de comonosso código deveria se comportarshould > ...
tdd com rspec         MatchersPermitem escrever asexpectativas com umalinguagem mais natural
tdd com rspec           Matchers               Apenas alguns• be• be_true• be_false• be_instance_of• be_kind_of• include• ...
tdd com rspec     Segundo testeUm post deve ter um status
tdd com rspecEscreva um teste que falhe         spec/models/post_spec.rb
tdd com rspecRode os testes     $ rake spec
tdd com rspecFaça o teste passar      app/models/post.rb
tdd com rspecRode os testes     $ rake spec
tdd com rspecPrecisa refatorar?    spec/models/post_spec.rb
tdd com rspecAlgo de errado não está certo          spec/models/post_spec.rb
tdd com rspec              Before e After           Inicializando objetos antes e depois de cada exemplobefore(:each) e af...
tdd com rspec        after(:each)é rarararararamente usado
tdd com rspecRefatorando :D   spec/models/post_spec.rb
tdd com rspecRode os testes     $ rake spec
tdd com rspec      Terceiro teste    O status deve ser“publicado” ou “rascunho”
tdd com rspecEscreva um teste que falhe         spec/models/post_spec.rb
tdd com rspecRode os testes     $ rake spec
tdd com rspecFaça o teste passar      app/models/post.rb
tdd com rspecRode os testes     $ rake spec
tdd com rspecOpa! Refactoring!     app/models/post.rb
tdd com rspecOpa! Refactoring!     app/models/post.rb
tdd com rspecRode os testes     $ rake spec
tdd com rspec     Quarto testeO post deve ter um texto       Quem se habilita?
tdd com rspec     Quinto testeDizer se está publicado    Mais alguém se habilita?
tdd com rspecEscreva um teste que falhe         spec/models/post_spec.rb                                    Amazing!!!
tdd com rspecRode os testes     $ rake spec
tdd com rspecFaça o teste passar      app/models/post.rb
tdd com rspecRode os testes     $ rake spec
tdd com rspecE por ai vai ... :)
tdd com rspec     Próximos passos• Mock/Stubs• Matchers mais avançados• Fixtures• Testes de controller• Helpers• Boas prát...
tdd com rspec            O que ler• http://rspec.info• http://howtocode.com.br/ebooks/  rspec• http://pragprog.com/book/nr...
tdd com rspec
tdd com rspec     Valew! :Dleohackin@gmail.com
Upcoming SlideShare
Loading in...5
×

[RockAndRails] TDD com RSpec

2,163

Published on

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

Published in: Technology
2 Comments
7 Likes
Statistics
Notes
No Downloads
Views
Total Views
2,163
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
2
Likes
7
Embeds 0
No embeds

No notes for slide

[RockAndRails] TDD com RSpec

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

×