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
- O Cucumber lê as especificações escritas em arquivos de texto plano chamados features;
- Examina esse tipo de arquivos a procura de scenarios;
- Cada scenario é uma lista de steps que o Cucumber irá tentar executar;
- 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
- Para realizar quaisquer ações os steps# precisam estar implementados em um arquivo separado chamado de step definition;
- 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¹;
- 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:
- Colocam o sistema em um estado específico.
- Realizam algum tipo de ação.
- 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.
Muito bem bolado a explicação ;)
ResponderExcluirSaberia dizer se posso usar o Cucumber com projetos .Net?
ResponderExcluirOlá Daiane, podes sim. Dá uma olhadinha em https://github.com/cucumber/cucumber/wiki/IronRuby-and-.NET
ExcluirUtilza o Specflow para .net
ExcluirGostaria de saber se da pra usar o cucumber em testes batch.
ResponderExcluirGostaria de saber como utilizar o cucumber somente na camada de negócio com ATDD, teria algum exemplo? Obrigado!
ResponderExcluir