Cucumber New

Nossa, depois de muito criar estruturas para projetos com cucumber na mão… descobri a gem “testgen” Coisa linda de Deus!

*gem install testgen

Para mais informações : link *gem install bundle Vamos aproveitar o tempo da vida ne?

Após instalar, basta apenas escolher um nome. E ualá.. toda sua estrutura tá criada:

Mini projeto usando Cucumber com Selenium

Nesse post vamos iniciar a documentação de uma calculadora e em seguida vamos tornar essa documentação uma especificação executável.

Ambiente no qual estou desenvolvendo esse projeto:

  • Ruby 2.2
  • Cucumber 2.2
  • Selenium 2.48
  • OSX

O projeto tb se encontra no github para clone e contém suas respectivas dependências no GemFile –adicionar o link do github–

Iniciando o projeto

1) Crie uma pasta para seu projeto. Eu criei aqui a pasta: cucumber-selenium-calculatorapp

2) Na linha de comando, entre na pasta: cd cucumber-selenium-calculatorapp

3) Digite no terminal: cucumber --init

Ao executar o comando o cucumber cria a seguinte estrutura de pastas

4) Crie o arquivo multiplication.feature dentro da feature

5) Vamos escrever nossa primeira feature dentro desse arquivo:

6) Na linha de comando, execute: cucumber

Você verá que o cucumber irá tentar executar a documentação criada:

Porém ele nos informa que não existe definições de ações associados a esses passos, e nos sugere adicionar o código acima dentro de step definitions. Pois então vamos seguir a sugestão do cucumber e dentro da pasta de step_definitions, vamos criar um arquivo com extensão “.rb”.

Eu criei aqui o “multi_steps.rb” e colei o texto informado no terminal dentro desse arquivo.

Em cada passo que colamos tem escrito:

Write code here that turns the phrase above into concrete actions

Vamos então criar ações associadas a esses passos. Como estamos automatizando uma página Web vamos utilizar o selenium para executar esses passos, podemos por exemplo adicionar código selenium diretamente nos passos:

Caso rodemos novamente o projeto (cucumber na linha de comando), o browser será aberto com a url indicada no step e na linha de comando temos o seguinte resultado para essa execução:

Porém não é uma boa prática utilizar códigos selenium diretamente nos passos. O ideal é utilizar o padrão Page Object.. (continua)

Cucumber & Behave

Cucumber e Behave são ferramentas que podem ser utilizadas para especificação funcional e automatização de testes de aceitação. Seu bom uso agrega nos seguintes valores:

  • Quanto mais se detalha um requisito mais conhecimento uma equipe irá ter sobre o que será desenvolvido, gerando um entendimento mais amplo do sistema e menos riscos de se desenvolver algo em desacordo com a necessidade do cliente

  • Imagine-se numa sprint de um projeto, no qual a documentação foi descrita num documento no momento inicial do projeto e que ao final dessa sprint muito do que foi descrito ou não está completo ou está equivocado. Já participou de algum projeto assim? Eh desesperador.. Ninguém sabe qual comportamento deveria ser o correto ou onde foi mapeado as mudanças. Descrevendo os requisitos com cucumber ou behave, toda documentação pode ficar associada a testes automatizados. Caso algum comportamento se modifique durante o projeto, se altera essas especificações e consequentemente os testes. Temos então que esta documentação é viva! Ela irá sempre refletir o sistema.

Estrutura de uma especificação executável com Cucumber

A documentação é apresentada na estrutura abaixo:

Iniciamos descrevendo uma feature em vários cenários, os quais são detalhados em passos na seguinte estrutura:

Analisando a estrutura dos passos do cenário, podemos extrair o seguinte padrão:

No próximo post vamos iniciar um projeto do zero fazendo todas as estruturas apresentadas (documentação e testes)

Cucumber com Capybara