BDD & Cucumber

3.332 visualizações

Publicada em

Examples of using Scenarios, Features, Scenarios Outline, Backgrounds and Multiline Step Arguments with Cucumber

  • Seja o primeiro a comentar

BDD & Cucumber

  1. 1. <ul>Anderson Leite </ul>
  2. 2. <ul>email </ul><ul>a [email_address] </ul><ul>t w i tter @an d erson_leite </ul><ul>blog </ul><ul>w ww.an d ersonleite.com.br </ul>
  3. 3. <ul>CLIENTES </ul>
  4. 4. <ul>DESENVOLVEDORES </ul>
  5. 5. <ul>TESTERS </ul>
  6. 6. <ul>#PUTA FALTA DE SACANAGEM </ul><ul>A maior parte dos softwares que escrevemos nunca será usado. </ul>
  7. 7. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  8. 8. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  9. 9. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>CLIENTE </ul><ul>PARA CONTROLAR </ul><ul>MINHAS MUSICAS </ul><ul>QUERO UM </ul><ul>SOFTWARE QUE GERENCIE MINHAS MP3 </ul>
  10. 10. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>DESENVOLVEDOR </ul><ul>def create @musica = Musica. new (params[:musica]) if @musica.save flash[:notice] = “Perfect!” redirect_to @musica else render :action => 'new' end end </ul>
  11. 11. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>TESTER </ul><ul>HOJE EU </ul><ul>ARREBENTO </ul><ul>ESSE SOFTWARE .... </ul>
  12. 12. <ul>LINGUAGEM COMUM </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  13. 13. <ul>BDD </ul><ul>+ </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  14. 14. <ul>BDD </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Behaviour-driven development é sobre implementar </ul><ul>uma aplicação descrevendo seu comportamento da perspectiva dos seus stakeholders . </ul>
  15. 15. <ul>BDD </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  16. 16. <ul>BDD </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Faça o suficiente </ul>
  17. 17. <ul>BDD </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Faça o suficiente </ul><ul>Entregue valor real </ul>
  18. 18. <ul>BDD </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Faça o suficiente Entregue valor real </ul><ul>Tudo é comportamento </ul>
  19. 19. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  20. 20. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  21. 22. <ul>CUKES.INFO </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  22. 23. <ul>CUCUMBER </ul><ul>gem install cucumber </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>gem install cucumber-rails gem install database_cleaner gem install capybara gem install rspec </ul>
  23. 24. <ul>CUCUMBER </ul><ul>PROJECT_ROOT/ | -- FEATURES | -- musicas.feature </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  24. 25. <ul>CUCUMBER </ul><ul>PROJECT_ROOT/ | -- FEATURES | -- musicas.feature -- SUPPORT | env.rb </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  25. 26. <ul>CUCUMBER </ul><ul>PROJECT_ROOT/ | -- FEATURES | -- musicas.feature -- SUPPORT | env.rb -- STEP_DEFINITIONS | musicas_steps.rb </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  26. 27. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>given when then and but </ul><ul>Dado QuandoEntão E Mas </ul>
  27. 28. <ul>STEP </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>DEFINITION </ul><ul>Dado uma situação </ul><ul>Dado /^uma situação$/ do visit &quot;/&quot; end end </ul>
  28. 29. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>feature background scenario scenario_outlineexamples </ul><ul>FuncionalidadeContextoCenário Esquema do Cenário Exemplos </ul>
  29. 30. <ul>FUNCIONALIDADE </ul>
  30. 31. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Cenario: [titulo] </ul><ul>Dado [contexto] E [mais contextos] Quando faço [alguma ação] E [outra ação] Então eu deveria ver [resultado] Mas não deveria ver [outro resultado] </ul>
  31. 32. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Dado que estou na pagina inicial </ul>
  32. 33. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Quando adiciono minha nova musica </ul>
  33. 34. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Entao vejo uma mensagem de sucesso </ul>
  34. 35. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Funcionalidade: Para treinar todas cancoes Como um admirador das boas letras Quero um controle de músicas Cenario: Inserir nova musica </ul><ul>Dado que estou na pagina inicial Quando adiciono minha nova musica Entao vejo uma mensagem de sucesso Dado que estou na pagina inicial Quando adiciono minha nova musica Entao vejo uma mensagem de sucesso Dado que estou na pagina inicial Quando adiciono minha nova musica Entao vejo uma mensagem de sucesso </ul>
  35. 36. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Funcionalidade: Para treinar todas cancoes Como um admirador das boas letras Quero um controle de músicas Cenario: Inserir nova musica </ul><ul>Dado que estou na pagina inicial Quando adiciono minha nova musica Entao vejo uma mensagem de sucesso Dado que estou na pagina inicial Quando adiciono minha nova musica Entao vejo uma mensagem de sucesso Dado que estou na pagina inicial Quando adiciono minha nova musica Entao vejo uma mensagem de sucesso </ul>
  36. 37. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  37. 38. <ul>Dado /^ que estou na pagina inicial $/ do visit &quot;/&quot; end end end </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  38. 39. <ul>Quando /^ adiciono minha nova musica $/ do click_link &quot;New Musica&quot; fill_in &quot;musica[nome]&quot;, :with => &quot;Vou Cantar&quot; fill_in &quot;musica[letra]&quot;, :with => &quot;Cantando...&quot; click_button &quot;Submit&quot; end </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  39. 40. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Entao /^ vejo ela cadastrada na lista $/ do page.should have_content &quot;Successfully created musica.&quot; end </ul>
  40. 41. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Funcionalidade: Para treinar todas cancoes Como um admirador das boas letras Quero um controle de músicas Cenario: Inserir nova musica </ul><ul>Dado que estou na pagina inicial Quando adiciono minha nova musica Entao vejo uma mensagem de sucesso Dado que estou na pagina inicial Quando adiciono minha nova musica Entao vejo uma mensagem de sucesso Dado que estou na pagina inicial Quando adiciono minha nova musica Entao vejo uma mensagem de sucesso </ul>
  41. 42. <ul>POTHIX </ul><ul>LEGAL .... </ul><ul>MAS EU TERIA USADO O </ul><ul>VIM :) </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  42. 43. <ul>BACKGROUND / CONTEXTO </ul>
  43. 44. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Dado que estou na pagina inicial </ul>
  44. 45. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Quando edito uma musica </ul>
  45. 46. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Entao vejo a mensagem de confirmacao </ul>
  46. 47. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Contexto: </ul><ul>Dado que estou na pagina inicial Cenario: Inserir nova musica Quando adiciono minha nova musica Entao vejo uma mensagem de sucesso </ul><ul>Cenario: Editar Musica Quando edito uma musica Entao vejo a mensagem de confirmacao </ul><ul>Quando edito uma musica Entao vejo a mensagem de confirmacao Quando edito uma musica Entao vejo a mensagem de confirmacao </ul>
  47. 48. <ul>Testes são independentes </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  48. 49. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Contexto: </ul><ul>Dado que estou na pagina inicial </ul><ul>Cenario: Editar Musica </ul><ul>E que a seguinte musica existe: | nome | letra | | vou cantar | cantando | </ul><ul>Quando edito uma musica Entao vejo a mensagem de confirmacao </ul><ul>MULTILINE TABLES </ul>
  49. 50. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>GREEN LIKE A CUKE! </ul>
  50. 51. <ul>ESQUEMA DE CENARIO </ul>
  51. 52. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Quando adiciono a musica &quot;<nome>&quot; </ul>
  52. 53. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Quando adiciono a musica &quot;<nome>&quot; </ul>
  53. 54. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Contexto: Dado que estou na pagina inicial </ul><ul>Esquema do Cenario: Validacao </ul><ul>Quando adiciono a musica &quot; <nome> &quot; Entao vejo a mensagem &quot; <mensagem> &quot; Exemplos: | nome | mensagem | | restart | Successfully created musica.| | | Nome can't be blank | | nome | mensagem | | restart | Successfully created musica.| | | Nome can't be blank | | nome | mensagem | | restart | Successfully created musica.| | | Nome can't be blank | | nome | mensagem | | restart | Successfully created musica.| | | Nome can't be blank | </ul>
  54. 55. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>GREEN LIKE A CUKE! </ul>
  55. 56. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Quando edito uma musica </ul>
  56. 57. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>Contexto: </ul><ul>Dado que estou na pagina inicial Cenario: Letra da Musica E eu seleciono uma letra Entao verifico na tela &quot;&quot;&quot; Sei que os dias passaram E eu vejo que o nosso pra sempre acabou E nada do que nos foi contado, Os desejos e sonhos que a vida mudou &quot;&quot;&quot; Os desejos e sonhos que a vida mudou &quot;&quot;&quot; </ul>
  57. 58. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>MULTILINE STRINGS </ul>
  58. 59. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>CUCUMBER OPTIONS - TAGS / FORMAT </ul><ul>@inserir Cenario: Inserir nova musica </ul><ul>Dado que estou na pagina inicial Quando adiciono minha nova musica Entao vejo uma mensagem de sucesso Dado que estou na pagina inicial Quando adiciono minha nova musica Entao vejo uma mensagem de sucesso Dado que estou na pagina inicial Quando adiciono minha nova musica Entao vejo uma mensagem de sucesso </ul><ul>cucumber --tags @inserir --format pretty </ul>
  59. 60. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>REFACTOR and REPEAT </ul>
  60. 61. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  61. 62. <ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul><ul>RELEVANCE-RCOV </ul><ul>gem install relevance-rcov </ul><ul>Cucumber::Rake::Task.new(:rcov) do |t| t.rcov = true t.rcov_opts = %w{--rails --exclude osx/objc,gems/,spec/} t.rcov_opts << %[-o &quot;features_rcov&quot;] end </ul><ul>end </ul>
  62. 63. <ul>RELEVANCE-RCOV </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  63. 64. <ul>RELEVANCE-RCOV </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  64. 65. <ul>RELEVANCE-RCOV </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  65. 66. <ul>CONCLUINDO... </ul><ul>BDD </ul><ul>CUCUMBER </ul><ul>COBERTURA </ul>
  66. 67. <ul>http://github.com/andersonleite/kidsongs </ul><ul>http://www.slideshare.net/andersonleite </ul>
  67. 68. <ul>SÉRIO! =D </ul><ul>Se você não usar testes na sua próxima aplicação... </ul><ul>#VOU XINGAR MUITO NO TWITTER </ul>
  68. 69. <ul>Anderson Leite </ul><ul>@anderson_leite </ul><ul>[email_address] </ul><ul>www.andersonleite.com.br </ul>

×