sábado, 17 de novembro de 2012

Como o Cucumber Funciona



O cucumber é uma ferramenta de linha de comando. Seu módo de funcionamento e suas camadas operam basicamente da seguinte forma:

Camada de negócios

  1. O Cucumber lê as especificações escritas em arquivos de texto plano chamados features;
  2. Examina esse tipo de arquivos a procura de scenarios;
  3. Cada scenario é uma lista de steps que o Cucumber irá tentar executar;
  4. Cada step é escrito em linguagem natural de domínio da aplicação. Para que sejam facilmente lidos e interpretados por pessoas sem a necessidade de qualquer conhecimento técnico;

Camada de tecnologia

  1. Para realizar quaisquer ações os steps# precisam estar implementados em um arquivo separado chamado de  step definition;
  2. A implementação dos steps dentro dos steps definitions é realizada através do support code ou código de suporte, que pode ser escrito em uma variada gama de linguagens¹;
  3. O support code é o responsável por se encarregar das tarefas de automação, normalmente isso envolve uma automation library ou biblioteca de automação que então entrará em contato direto com o sistema alvo do teste.

Essa hierarquia de camadas pode ser melhor observada na figura 1.0.

Figura 1.0. Pilha de funcionamento do cucumber.


Gherkin

O padrão de escrita chamado Gherkin nasceu da necessidade  de expressar de forma clara o comportamento esperado das funcionalidades que os stakeholders esperam do sistema utilizando exemplos.

“O Gherkin fornece uma estrutura leve para documentar os exemplos de comportamento que os stakeholders querem.”  

Mesmo o Gherkin podendo ser similar a uma linguagem de programação o seu principal objetivo é ser legível para humanos, isto significa que, é possível escrever testes automatizados que podem ser lidos como documentação tais como no exemplo a seguir:



Funcionalidade: Retirar dinheiro do caixa eletrônico

Cenário: Retirando dinheiro de uma conta com crédito
Dado uma conta contendo R$ 100,00
Quando eu requisito $ 49,00
Então o caixa deve liberar o valor de $ 49,00
E o saldo restante deve ser R$ 51,00

Exemplo de cenário escrito com Gherkin.

O Gherkin também foi traduzido para mais de quarenta idiomas bastando para isso utilizar as palavras-chave (em negrito no exemplo anterior) equivalentes no idioma desejado.


Formato e Sintaxe

Os arquivos Gherkin usam a extensão .feature e são salvos em texto plano, isto significa que eles podem ser lidos e editados por ferramentas simples. A estrutura de um arquivo Gherkin é estabelecida pelas seguintes palavras-chave (com seus equivalentes em português):

  • Feature, Funcionalidade.
  • Background, Contexto.
  • Scenario, Cenário.
  • Given, Dado.
  • When, Quando.
  • Then, Então.
  • And, E.
  • But, Mas.
  • *.
  • Scenario Outline, Esquema do Cenário.
  • Examples, Exemplos.

Para outro idioma basta utilizar as palavras equivalentes na linguagem desejada.



Feature (Funcionalidade)

Cada arquivo Gherkin começa com a palavra-chave Feature. Essa palavra-chave não afeta o comportamento do cucumber, ela apenas dá um lugar conveniente para escrever alguma documentação resumida a respeito do comportamento da funcionalidade que será descrita através dos testes.

Segue um exemplo da utilização dessa palavra-chave:

Funcionalidade: Esse é o título da funcionalidade
Essa é a descrição da funcionalidade que pode ocupar
diversas linhas.
É possível até mesmo colocar linhas em branco

De fato, tudo que esteja escrito até a próxima palavra-chave do Gherkin é incluído
na descrição.

Dentro de uma estrutura Gherkin válida a palavra-chave Feature deve obrigatoriamente ser seguida de uma das seguintes palavras-chave:

  • Scenario
  • Background
  • Scenario Outline

Scenario (Cenário)

Para representar o comportamento necessário, cada feature contém vários Scenarios. Cada Scenario é um único e concreto exemplo de como a funcionalidade em questão deve se comportar em um caso específico. Todos os Scenarios de uma Feature juntos definem o comportamento dessa Feature.
Todos os Scenarios seguem o seguinte padrão:

  1. Colocam o sistema em um estado específico.
  2. Realizam algum tipo de ação.
  3. Examinam o estado final.





Given, When, Then (Dado, Quando, Então)

No padrão Gherkin os estados, ações e asserções que ocorrem em um Scenario são representados pelas palavras-chave Given, When, Them, da seguinte forma:

Scenario:
Given <prepara o contexto>
When <executa uma ação ou evento>
Then <verifica o estado final>

Dessa  forma usa-se o  Given para preparar o contexto de onde o Scenario vai acontecer. Usa-se o When para interagir com o sistema de alguma forma e o Then para checar se o resultado dessa ação foi o esperado.

And, But (E, Mas)

Cada linha de um Scenario é conhecido como step (passo). É possível adicionar mais steps para cada Given, When ou Them utilizando-se And e But. Como no exemplo a seguir:

Cenário: Retirando dinheiro de uma conta com crédito
Dado uma conta contendo R$ 100,00
Quando eu requisito $ 49,00
Então o caixa deve liberar o valor de $ 49,00
E o saldo restante deve ser R$ 51,00

Essas palavras-chave não modificam o comportamento do Cucumber e existem simplesmente para promover a legibilidade dos Scenarios.

6 comentários:

  1. Saberia dizer se posso usar o Cucumber com projetos .Net?

    ResponderExcluir
    Respostas
    1. Olá Daiane, podes sim. Dá uma olhadinha em https://github.com/cucumber/cucumber/wiki/IronRuby-and-.NET

      Excluir
  2. Gostaria de saber se da pra usar o cucumber em testes batch.

    ResponderExcluir
  3. Gostaria de saber como utilizar o cucumber somente na camada de negócio com ATDD, teria algum exemplo? Obrigado!

    ResponderExcluir