BDD com
     Cucumber
RubyLX 2 - 7 de Novembro de 2009
          Ilídio Varandas
        varandasi@gmail.com
             ...
Quem utiliza ?


• Cucumber
• RSpec
O que é o BDD?
O que é o BDD?
• Técnica de desenvolvimento de software,
  que encoraja a colaboração entre:
O que é o BDD?
• Técnica de desenvolvimento de software,
  que encoraja a colaboração entre:
 • Programadores
O que é o BDD?
• Técnica de desenvolvimento de software,
  que encoraja a colaboração entre:
 • Programadores
 • QA (Quali...
O que é o BDD?
• Técnica de desenvolvimento de software,
  que encoraja a colaboração entre:
 • Programadores
 • QA (Quali...
Cucumber
Cucumber

• É uma ferramenta para criação de testes e
  gestão de requisitos
Cucumber

• É uma ferramenta para criação de testes e
  gestão de requisitos
• Facilita a comunicação entre os
  programad...
Cucumber - Estrutura


Features descritas em   Definição dos Steps em
        texto                   Ruby
Cucumber - Feature
Cucumber - Feature
Feature: title

In order to [Business Value]
As a [Role]
I want to [Some Action]
Cucumber - Feature
Feature: title                 Título



In order to [Business Value]
As a [Role]
I want to [Some Actio...
Cucumber - Feature
Feature: title                  Título



In order to [Business Value]
As a [Role]                    N...
Cucumber - Feature
Feature: title                  Título



In order to [Business Value]
As a [Role]                    N...
Cucumber - Feature
Feature: title                     Título



In order to [Business Value]
As a [Role]                  ...
Cucumber - Step
  Given we like “pastel de belém”         Feature (texto)


                  regexp match

Given /^we lik...
Instalação


• gem install cucumber rspec rspec-rails
  webrat
Demo
Questões?
Referências


• http://cukes.info/
• The RSpec Book
Upcoming SlideShare
Loading in …5
×

Bdd Cucumber Em 25 Minutos

1,054
-1

Published on

Exemplo da apresentação:
- rails blog
- cd blog
- script/generate cucumber
- Executar cucumber features
- (directorias e ficheiros que criou: step_definitions (webrat - permite simular o browser), support (env.rb inicializações e configurações do ambiente onde o cucumber vai correr), paths - helper com os paths para utilizar nos steps cucumber)
- cucumber features
- Adicionar features/read_articles.feature:
Feature: List Articles
In order to blog readers read my articles
As a blog author
I want to list my articles

Scenario: Articles List
Given I have an article titled "Ruby @ Aliados 2009"
And I have an article titled "Ruby em LX 2"
When I go to the list of articles
Then I should see "Ruby @ Aliados 2009"
And I should see "Ruby em LX 2"

- Adicionar articles_steps.rb
- Executar cucumber features
- script/generate model article title:string content:text
- rake db:migrate
- rake db:test:clone

- Adicionar ao articles_steps.rb:
Given /^I have an article titled "([^\"]*)"$/ do |arg1|
pending
end

- Substituir arg1 por title, e pending por Article.create!(:title => title)

- script/generate controller articles index

- Adicionar ao articles_controller:
# articles_controller.rb
def index
@articles = Article.all
end

- Adicionar ao routes.rb => map.resources :articles
- Adicionar ao features/suport/paths.rb :
when /the list of articles/
articles_path

Adicionar ao
<!-- index.html.erb -->
<% for article in @articles %>
<p><%=h article.title %></p>
<p><%=h article.content %></p>
<% end %>

Published in: Technology
1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total Views
1,054
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
40
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide
  • Ao utilizar uma linguagem comum para descrever os objectivos e os benef&amp;#xED;cios do c&amp;#xF3;digo (BDD ajuda a chegar a uma defini&amp;#xE7;&amp;#xE3;o de finalizado)

    Quem j&amp;#xE1; acabou um desenvolvimento e no per&amp;#xED;odo de aceita&amp;#xE7;&amp;#xE3;o lhe disseram: &amp;#x201C;n&amp;#xE3;o foi isto que eu pedi&amp;#x201D; ou &amp;#x201C;esqueci-me de te mencionar uma coisa&amp;#x201D; ?

    Concebido originalmente em 2003 por Dan North como resposta ao Test Driven Development, e foi evoluindo ao longo dos anos.
  • Ao utilizar uma linguagem comum para descrever os objectivos e os benef&amp;#xED;cios do c&amp;#xF3;digo (BDD ajuda a chegar a uma defini&amp;#xE7;&amp;#xE3;o de finalizado)

    Quem j&amp;#xE1; acabou um desenvolvimento e no per&amp;#xED;odo de aceita&amp;#xE7;&amp;#xE3;o lhe disseram: &amp;#x201C;n&amp;#xE3;o foi isto que eu pedi&amp;#x201D; ou &amp;#x201C;esqueci-me de te mencionar uma coisa&amp;#x201D; ?

    Concebido originalmente em 2003 por Dan North como resposta ao Test Driven Development, e foi evoluindo ao longo dos anos.
  • Ao utilizar uma linguagem comum para descrever os objectivos e os benef&amp;#xED;cios do c&amp;#xF3;digo (BDD ajuda a chegar a uma defini&amp;#xE7;&amp;#xE3;o de finalizado)

    Quem j&amp;#xE1; acabou um desenvolvimento e no per&amp;#xED;odo de aceita&amp;#xE7;&amp;#xE3;o lhe disseram: &amp;#x201C;n&amp;#xE3;o foi isto que eu pedi&amp;#x201D; ou &amp;#x201C;esqueci-me de te mencionar uma coisa&amp;#x201D; ?

    Concebido originalmente em 2003 por Dan North como resposta ao Test Driven Development, e foi evoluindo ao longo dos anos.
  • Ao utilizar uma linguagem comum para descrever os objectivos e os benef&amp;#xED;cios do c&amp;#xF3;digo (BDD ajuda a chegar a uma defini&amp;#xE7;&amp;#xE3;o de finalizado)

    Quem j&amp;#xE1; acabou um desenvolvimento e no per&amp;#xED;odo de aceita&amp;#xE7;&amp;#xE3;o lhe disseram: &amp;#x201C;n&amp;#xE3;o foi isto que eu pedi&amp;#x201D; ou &amp;#x201C;esqueci-me de te mencionar uma coisa&amp;#x201D; ?

    Concebido originalmente em 2003 por Dan North como resposta ao Test Driven Development, e foi evoluindo ao longo dos anos.
  • Ferramenta para criar testes de aceita&amp;#xE7;&amp;#xE3;o automatizados.
    Pode ser usado pelo programador como ferramenta de TDD
    E pelo cliente para gest&amp;#xE3;o de requisitos.

    Permite reduzir o fosso entre o programador e os stake holders atrav&amp;#xE9;s do uso de linguagem que ambos entendem

    Funcionalidades que desejam ter
  • Ferramenta para criar testes de aceita&amp;#xE7;&amp;#xE3;o automatizados.
    Pode ser usado pelo programador como ferramenta de TDD
    E pelo cliente para gest&amp;#xE3;o de requisitos.

    Permite reduzir o fosso entre o programador e os stake holders atrav&amp;#xE9;s do uso de linguagem que ambos entendem

    Funcionalidades que desejam ter
  • L&amp;#xEA; ficheiros de texto com as funcionalidades da aplica&amp;#xE7;&amp;#xE3;o

    As funcionalidades s&amp;#xE3;o descritas com cen&amp;#xE1;rios de exemplo
    Os steps permitem a interac&amp;#xE7;&amp;#xE3;o com o c&amp;#xF3;digo a ser desenvolvido
  • T&amp;#xED;tulo
    Breve Narrativa
    E um n&amp;#xFA;mero arbitr&amp;#xE1;rio de cen&amp;#xE1;rios que servem como crit&amp;#xE9;rios de aceita&amp;#xE7;&amp;#xE3;o

    N&amp;#xE3;o &amp;#xE9; r&amp;#xED;gido, n&amp;#xE3;o h&amp;#xE1; um template, o que for melhor para comunicar com o cliente podem usar. Desde que tenham estes 3 pontos

    Assim que temos o nosso Business value, queremos definir os crit&amp;#xE9;rios de aceita&amp;#xE7;&amp;#xE3;o. Que s&amp;#xE3;o execut&amp;#xE1;veis
  • T&amp;#xED;tulo
    Breve Narrativa
    E um n&amp;#xFA;mero arbitr&amp;#xE1;rio de cen&amp;#xE1;rios que servem como crit&amp;#xE9;rios de aceita&amp;#xE7;&amp;#xE3;o

    N&amp;#xE3;o &amp;#xE9; r&amp;#xED;gido, n&amp;#xE3;o h&amp;#xE1; um template, o que for melhor para comunicar com o cliente podem usar. Desde que tenham estes 3 pontos

    Assim que temos o nosso Business value, queremos definir os crit&amp;#xE9;rios de aceita&amp;#xE7;&amp;#xE3;o. Que s&amp;#xE3;o execut&amp;#xE1;veis
  • T&amp;#xED;tulo
    Breve Narrativa
    E um n&amp;#xFA;mero arbitr&amp;#xE1;rio de cen&amp;#xE1;rios que servem como crit&amp;#xE9;rios de aceita&amp;#xE7;&amp;#xE3;o

    N&amp;#xE3;o &amp;#xE9; r&amp;#xED;gido, n&amp;#xE3;o h&amp;#xE1; um template, o que for melhor para comunicar com o cliente podem usar. Desde que tenham estes 3 pontos

    Assim que temos o nosso Business value, queremos definir os crit&amp;#xE9;rios de aceita&amp;#xE7;&amp;#xE3;o. Que s&amp;#xE3;o execut&amp;#xE1;veis
  • T&amp;#xED;tulo
    Breve Narrativa
    E um n&amp;#xFA;mero arbitr&amp;#xE1;rio de cen&amp;#xE1;rios que servem como crit&amp;#xE9;rios de aceita&amp;#xE7;&amp;#xE3;o

    N&amp;#xE3;o &amp;#xE9; r&amp;#xED;gido, n&amp;#xE3;o h&amp;#xE1; um template, o que for melhor para comunicar com o cliente podem usar. Desde que tenham estes 3 pontos

    Assim que temos o nosso Business value, queremos definir os crit&amp;#xE9;rios de aceita&amp;#xE7;&amp;#xE3;o. Que s&amp;#xE3;o execut&amp;#xE1;veis
  • T&amp;#xED;tulo
    Breve Narrativa
    E um n&amp;#xFA;mero arbitr&amp;#xE1;rio de cen&amp;#xE1;rios que servem como crit&amp;#xE9;rios de aceita&amp;#xE7;&amp;#xE3;o

    N&amp;#xE3;o &amp;#xE9; r&amp;#xED;gido, n&amp;#xE3;o h&amp;#xE1; um template, o que for melhor para comunicar com o cliente podem usar. Desde que tenham estes 3 pontos

    Assim que temos o nosso Business value, queremos definir os crit&amp;#xE9;rios de aceita&amp;#xE7;&amp;#xE3;o. Que s&amp;#xE3;o execut&amp;#xE1;veis
  • O que permite com que os steps sejam execut&amp;#xE1;veis s&amp;#xE3;o os step definitions
    Falar do RSpec dentro do step
  • N&amp;#xE3;o &amp;#xE9; obrigat&amp;#xF3;rio instalar o rspec, rspec-rails e o webrat. Mas ajudam imenso

    webrat Browser Simulator for expressive, high level acceptance testing
  • Bdd Cucumber Em 25 Minutos

    1. 1. BDD com Cucumber RubyLX 2 - 7 de Novembro de 2009 Ilídio Varandas varandasi@gmail.com IV4.pt Em 25 minutos
    2. 2. Quem utiliza ? • Cucumber • RSpec
    3. 3. O que é o BDD?
    4. 4. O que é o BDD? • Técnica de desenvolvimento de software, que encoraja a colaboração entre:
    5. 5. O que é o BDD? • Técnica de desenvolvimento de software, que encoraja a colaboração entre: • Programadores
    6. 6. O que é o BDD? • Técnica de desenvolvimento de software, que encoraja a colaboração entre: • Programadores • QA (Quality Assurance)
    7. 7. O que é o BDD? • Técnica de desenvolvimento de software, que encoraja a colaboração entre: • Programadores • QA (Quality Assurance) • Áreas de negócio, e outros participantes não técnicos
    8. 8. Cucumber
    9. 9. Cucumber • É uma ferramenta para criação de testes e gestão de requisitos
    10. 10. Cucumber • É uma ferramenta para criação de testes e gestão de requisitos • Facilita a comunicação entre os programadores e os stake-holders
    11. 11. Cucumber - Estrutura Features descritas em Definição dos Steps em texto Ruby
    12. 12. Cucumber - Feature
    13. 13. Cucumber - Feature Feature: title In order to [Business Value] As a [Role] I want to [Some Action]
    14. 14. Cucumber - Feature Feature: title Título In order to [Business Value] As a [Role] I want to [Some Action]
    15. 15. Cucumber - Feature Feature: title Título In order to [Business Value] As a [Role] Narrativa I want to [Some Action]
    16. 16. Cucumber - Feature Feature: title Título In order to [Business Value] As a [Role] Narrativa I want to [Some Action] Scenario: title Given [Context] When [Action] Then [Outcome]
    17. 17. Cucumber - Feature Feature: title Título In order to [Business Value] As a [Role] Narrativa I want to [Some Action] Scenario: title Cenários que servem com o Given [Context] critérios de When [Action] aceitação Then [Outcome]
    18. 18. Cucumber - Step Given we like “pastel de belém” Feature (texto) regexp match Given /^we like “([^"]*)“$/i do |food| food.should == ‘pastel de belém’ Step (Ruby) end
    19. 19. Instalação • gem install cucumber rspec rspec-rails webrat
    20. 20. Demo
    21. 21. Questões?
    22. 22. Referências • http://cukes.info/ • The RSpec Book
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×