Como o Cucumber Funciona
-
Upload
lais-berlatto -
Category
Technology
-
view
442 -
download
2
description
Transcript of Como o Cucumber Funciona
Cucumber : Características do arquivo ".feature" e sua sintaxe
Disciplina: Engenharia de Software Avançada
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.
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
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"
Abstração Cucumber
Estrutura de pastas
/feature
/step_definititions /supportexemplo1.feature
env.rbexemplo1.rb
exemplo2.rb
exemplo2.feature
Cucumber testing stack
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"
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.
Sintaxe Gherkin
● Background/Contexto:○ Sob esta palavra chave são descritos os requisitos para
aquela feature.Ex:
Contexto:Dado que eu estou logado como adminE estou visualizando a página de cadastro de clientes
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 clienteQuando eu opto por cadastrar um novo clienteE insiro o nome como "Adão"E o CPF "12545666"E eu cliclo no botão GravarEntão devo ver "Cliente cadastrado com sucesso!"
Sintaxe Gherkin
● Scenario Outline/ Examples:
○ Aplica técnica data-driven separando os dados do restante do codigo. Múltiplos dados.
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
Sintaxe Gherkin● Uso de bullets
---------------------------------------------------Funcionalidade: <descrição da funcionalidade>
Como um <usuário/ator>Eu quero <meta a ser alcançada>De modo que <a razão para alcançar a meta>
Cenário: <descrição do teste>Dado <um estado conhecido>Quando <um determinado evento ocorre>Então <isso deve ocorrer>
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 |
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