Introducão ao BDD com Cucumber, RSpec, Webrat e Selenium - Parte II

Continuando nossa série de artigos sobre BDD iniciada aqui, hoje trataremos da construção de cenários.

Cenários (Scenarios),  são perspectivas de utilização que validam um ou mais critérios de aceitação (Acceptance Criterias).

No BDD definimos Cenários seguindo o modelo:

Dado [pré-condição]
Quando [evento]
Então [pós-condição]

Em Dado definimos tudo o que precisamos antes para Quando o evento ocorrer Então verificarmos o resultado.

Exemplo em uma User Story Completa:

    Funcionalidade: Gerenciar Pessoas
     Como um usuário do sistema
     Eu quero gerenciar o cadastro de pessoas
     Para utilizar este cadastro em outros pontos do sistema

    Cenário: Adicionar Pessoa Válida
         Dado que estou em listagem de pessoas
         E vou para "Nova pessoa"
         E defino nome com o valor "Fulano de Tal"
        E defino endereco com o valor "Rua Sicrano, 32"
        E defino email com o valor "fulano@exemplo.com.br"
        Quando salvar o registro
        Então preciso ver "Pessoa Cadastrada com Sucesso."

Ok, ok, até agora você leu bastante mas não botou a mão na massa, que tal tornamos a User Story acima executável utilizando o Cucumber?

Mas primeiro, o que é o Cucumber?

O Cucumber é uma reescrita do Story Runner do RSpec com suporte a internacionalização, ajudantes para o Webrat e um monte de outros recursos legais.

Um Story Runner como o próprio nome já diz serve para executar User Stories, algo que converge para a tal documentação executável.

Criando o Projeto de Exemplo

Obs.: Meu ambiente de desenvolvimento roda Ubuntu 9.04, talvez seja necessário adaptar alguns destes passos ao seu próprio ambiente.

rails exemplobdd

cd exemplobdd

Para instalar o cucumber e suas dependências vamos alterar o arquivo de configuração do ambiente de teste adicionando as gems necessárias.

Para instalar o Cucumber e suas dependências agora é só rodar:

rake gems:install RAILS_ENV=test

Com o Cucumber instalado precisamos agora “inicializá-lo” no nosso projeto.

script/generate cucumber

Após o comando acima estará criada no nosso projeto uma estrutura de pastas onde colocaremos nossas User Stories e passos para atender aos Cenários. Dentro da pasta features crie o arquivo gerenciar_pessoas.feature

Nossa feature criada, agora executamos

cucumber features –language pt

E obtemos a seguinte saída:
Criamos nossa feature mas ainda não definimos os passos do Cenário.

1 scenario (1 undefined) 7 steps (7 undefined)

O Cucumber é um cara legal e já nos dá uma sugestão de como defini-los, faremos agora um CTRL+C e CTRL+V da sugestão para dentro do arquivo features/step_definitions/gerenciar_pessoas_steps.rb

Ao executar o cucumber novamente

cucumber features –language pt


vemos agora que apesar de nossos passos estarem definidos ainda estão todos marcados como pendente, o primeiro passo acusa isso e os subsequentes não são executados.

1 scenario (1 pending)
7 steps (6 skipped, 1 pending)

No próximo post trataremos do conceito de TDD, passos compartilhados no Cucumber e utilização do Webrat para testes funcionais. Quem viver verá! :D

7 Responses to “Introducão ao BDD com Cucumber, RSpec, Webrat e Selenium - Parte II”

  1. Jefferson Girão » Blog Archive » Introducão ao BDD com Cucumber, RSpec, Webrat e Selenium - Parte I Says:

    [...] “When all other means of communication fail, try words” « Tirando a poeira Introducão ao BDD com Cucumber, RSpec, Webrat e Selenium - Parte II [...]

  2. Rodrigo Galba Says:

    Ja tinha ouvido falar mas ver na pratica eh outra coisa.
    Muito bom seus posts!
    Parabens.

  3. Rafael Carvalho Says:

    Bacana Jeferson.
    Estou brincando um pouco com Cucumber e RSpec em projeto pessoal e apanhando um pouco =)
    Seus posts estão me ajudando bastante.

    Só uma observação:
    Tive problemas com o seguinte trecho do seu post:
    cucumber features -language pt

    cucumber features -l pt
    ou
    cucumber features –language pt

    funcionou =)

    Valeu,

    Abraços …

  4. Rafael Carvalho Says:

    Já entendi o que aconteceu.
    No post e no comentário os dois hifens (- -) ficam juntos!

  5. Jefferson Girão » Blog Archive » Introducão ao BDD com Cucumber, RSpec, Webrat e Selenium - Parte III Says:

    [...] Jefferson Girão “When all other means of communication fail, try words” « Introducão ao BDD com Cucumber, RSpec, Webrat e Selenium - Parte II [...]

  6. Recomendação sobre TDD - CMilfont Tech Says:

    [...] 1 http://jefferson.eti.br/?p=96 Parte 2 http://jefferson.eti.br/?p=105 Parte 3 [...]

  7. CLAUDE Says:


    MedicamentSpot.com. Canadian Health&Care.Special Internet Prices.Best quality drugs.No prescription online pharmacy. High quality drugs. Order pills online

    Buy:Prevacid.Zovirax.Actos.Valtrex.Arimidex.Synthroid.Retin-A.Accutane.Prednisolone.100% Pure Okinawan Coral Calcium.Lumigan.Petcam (Metacam) Oral Suspension.Nexium.Mega Hoodia.Human Growth Hormone.Zyban….

Leave a Reply