O documento descreve (1) a sintaxe do arquivo ".feature" no Cucumber, (2) como começar com testes de aceitação legíveis para todas as partes interessadas, e (3) como o Cucumber funciona lendo arquivos de texto ".feature" e executando cenários neles descritos.
2. Behaviour Driven Development
● Pode ser considerada uma evolução de um conjunto de
boas práticas do TDD.
○ Principal: outside-in - [começar com o teste falhando]
● Testes de aceitação
○ Feedback
○ Unidade = Estamos fazendo certo o produto
○ Aceitação = Estamos fazendo o produto certo
● Exemplos baseados em comportamento
○ Comportamento = Caracteristica = Feature
○ Escrever testes de aceitação como exemplos a fim de
que todos possam lê-los e compreendê-los.
3. Ok, e se você não vai usar Test- Driven?
● Cucumber facilita outside-in, mas não força
você a usá-la desta forma
● Cucumber fornece testes legíveis e atrativos
para todas as partes do time inclusiva as
não técnicas, o que possibilita a inclusão de
todos neste processo
● Aumento de comunicação, amenizando
ambiguidade
● Especificações executáveis = documentação
viva
● Regressão = garantia
4. Cucumber
● É uma ferramenta de linha de comando
● Quando rodada, lê os arquivos de texto chamados de feature
(estes escritos em texto plano) e examina os scenarios contidos
nestes arquivos e rodam estes scenarios. Cada cenário contém
uma lista de steps que dizem ao Cucumber o que deve ser feito.
● Cucumber compreende os arquivos .feature porque estes seguem
um conjunto de regras de sintaxe chamado de Gherkin.
● Após a criação da feature, quando rodada, a ferramenta
proporciona um esqueleto para guiar o desenvolvimento do arquivo
que irá conter os step_definitions daquela feature.
● O arquivo contido na pasta support dá definições da configuração
do ambiente de teste, como: webdriver, padrão de seletor, timeout,
bibliotecas de automação...
● Cucumber trabalha com expressões regulares
● "Baby steps"
8. Sintaxe Gherkin
● Feature/Funcionalidade **
○ Todo arquivo gherkin começa com a palavra chave
Feature
○ Neste campo é atribuido o nome da feature e sua
descrição contendo todas as informações consideradas
necessárias para compreender o contexto daquela
estória.
○ Durante a execução ele é ignorado.
**(cenários em português exigem a inserção no inicio do arquivo "# language: pt" e "#enconding : utf -8"
9. Sintaxe Gherkin
● Feature/Funcionalidade **
Ex:
Feature: Exemplo - Primeira feature.
Este exemplo tem por objetivo contextualizar o que
será descrito ao longo do arquivo como comportamento do sistema, e
que sob esta palavra chave podem ser escritas quantas linhas forem
necessárias.
Aceitando também linhas em branco. Esta feature, irá abordar o
cadastro de clientes de um sistema x, visto que o mesmo só poderá ser
realizado se todos os campos obrigatórios forem preenchidos. Campos
obrigatórios: Nome e CPF.
10. Sintaxe Gherkin
● Background/Contexto:
○ Sob esta palavra chave são descritos os requisitos para
aquela feature.
Ex:
Contexto:
Dado que eu estou logado como admin
E estou visualizando a página de cadastro de clientes
11. Sintaxe Gherkin
● Scenario/Cenario:
○ Cada cenário é um exemplo único que demonstra como
o sistema deve se comportar em uma situação em
específica.
Ex:
Cenário: Cadastrar um cliente
Quando eu opto por cadastrar um novo cliente
E insiro o nome como "Adão"
E o CPF "12545666"
E eu cliclo no botão Gravar
Então devo ver "Cliente cadastrado com sucesso!"
12. Sintaxe Gherkin
● Scenario Outline/ Examples:
○ Aplica técnica data-driven separando os dados do
restante do codigo. Múltiplos dados.
13. Sintaxe Gherkin
● Estrutura básica
■ Given - Dado [O contexto]
■ When - Quando [O evento]
■ Then - Então [A saída]
----- Outras keywords:
○ But - Mas
○ And - E
○ # comentários....
O símbolo *, pode ser utilizado para
substituir as palavras chave, Given,
When, Then, But e And.. foi criado a fim
de suprir a reclamação do sentido de
'engessamento' que as palavras citadas
pudessem causas
16. cucumber --i18n pt
| name | Portuguese |
| native | português |
| feature | Funcionalidade |
| background | Contexto |
| scenario | Cenário / Cenario |
| scenario_outline | Esquema do Cenário / Esquema do Cenario |
| examples | Exemplos |
| given | * / Dado |
| when | * / Quando |
| then | * / Então / Entao |
| and | * / E |
| but | * / Mas |
17. Entendendo: Como criar os arquivos
.feature
● Primeiramente, cria-se o diretório chamado
features, e dentro dele irão existir todas os .
feature do projeto (que é um arquivo de
texto).
● Utilizando um editor de texto cria-se o
arquivo texto e o salva como .feature