SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
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 admin
E 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 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!"
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

Weitere ähnliche Inhalte

Was ist angesagt?

[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e WebdriverJúlio de Lima
 
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...iMasters
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascriptLaís Lima
 
Começando com Zend Framework 2
Começando com Zend Framework 2Começando com Zend Framework 2
Começando com Zend Framework 2Cezar Souza
 
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPiMasters
 
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2Cezar Souza
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaLeandro Parazito
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)Júlio de Lima
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infowayLucas Aquiles
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalEduardo Bregaida
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 
C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015Renato Groff
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 Eduardo Bregaida
 
[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvemJúlio de Lima
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniterAnderson Gonçalves
 

Was ist angesagt? (20)

[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
 
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
 
Tutorial codeigniter
Tutorial codeigniterTutorial codeigniter
Tutorial codeigniter
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascript
 
Introdução ao vraptor
Introdução ao vraptorIntrodução ao vraptor
Introdução ao vraptor
 
Começando com Zend Framework 2
Começando com Zend Framework 2Começando com Zend Framework 2
Começando com Zend Framework 2
 
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
 
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
 
Curso de Grails
Curso de GrailsCurso de Grails
Curso de Grails
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infoway
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso Total
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015
 
[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniter
 
Groovy grails
Groovy grailsGroovy grails
Groovy grails
 

Ähnlich wie Como o Cucumber Funciona

BDD com specflow e selenium webdriver
BDD com specflow e selenium webdriverBDD com specflow e selenium webdriver
BDD com specflow e selenium webdriverCristian Mathias
 
Webinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcadosWebinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcadosEmbarcados
 
Nem tudo é Pepino: Cucumber x Robot Framework
Nem tudo é Pepino: Cucumber x Robot FrameworkNem tudo é Pepino: Cucumber x Robot Framework
Nem tudo é Pepino: Cucumber x Robot FrameworkRodrigo Matola
 
Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Wellington Moreira
 
Specificationby example
Specificationby example Specificationby example
Specificationby example Laís Berlatto
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Renato Groff
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade IIIJoão Lourenço
 
Protractor style guide - Agile Testers Conference 2016
Protractor style guide - Agile Testers Conference 2016Protractor style guide - Agile Testers Conference 2016
Protractor style guide - Agile Testers Conference 2016Walmyr Lima e Silva Filho
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)Renato Groff
 
BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015Renato Groff
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open sourceRodrigo Aurélio
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareFelipe
 

Ähnlich wie Como o Cucumber Funciona (20)

BDD com specflow e selenium webdriver
BDD com specflow e selenium webdriverBDD com specflow e selenium webdriver
BDD com specflow e selenium webdriver
 
BDD em Ação
BDD em AçãoBDD em Ação
BDD em Ação
 
Webinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcadosWebinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcados
 
Nem tudo é Pepino: Cucumber x Robot Framework
Nem tudo é Pepino: Cucumber x Robot FrameworkNem tudo é Pepino: Cucumber x Robot Framework
Nem tudo é Pepino: Cucumber x Robot Framework
 
Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?
 
Specificationby example
Specificationby example Specificationby example
Specificationby example
 
Linguagem C - Funções
Linguagem C - FunçõesLinguagem C - Funções
Linguagem C - Funções
 
BDD com SpecFlow
BDD com SpecFlowBDD com SpecFlow
BDD com SpecFlow
 
Bdd com spec flow
Bdd com spec flowBdd com spec flow
Bdd com spec flow
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Apresentação testes white box
Apresentação testes white boxApresentação testes white box
Apresentação testes white box
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade III
 
Protractor style guide - Agile Testers Conference 2016
Protractor style guide - Agile Testers Conference 2016Protractor style guide - Agile Testers Conference 2016
Protractor style guide - Agile Testers Conference 2016
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)
 
BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015
 
Specflow - Criando uma ponte entre desenvolvedores.
Specflow - Criando uma ponte entre desenvolvedores.Specflow - Criando uma ponte entre desenvolvedores.
Specflow - Criando uma ponte entre desenvolvedores.
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open source
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
 

Mehr von Laís Berlatto

Cucumber - Um breve Review
Cucumber - Um breve ReviewCucumber - Um breve Review
Cucumber - Um breve ReviewLaís Berlatto
 
Testes de usabilidade
Testes de usabilidade Testes de usabilidade
Testes de usabilidade Laís Berlatto
 
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...Laís Berlatto
 
Programação Diversitária
Programação DiversitáriaProgramação Diversitária
Programação DiversitáriaLaís Berlatto
 
Specification By Example: Estudo de caso em uma software house
Specification By Example: Estudo de caso em uma software houseSpecification By Example: Estudo de caso em uma software house
Specification By Example: Estudo de caso em uma software houseLaís Berlatto
 
Data encryption standard DES & 3DES
Data encryption standard DES & 3DESData encryption standard DES & 3DES
Data encryption standard DES & 3DESLaís Berlatto
 
Histórico da informática
Histórico da informáticaHistórico da informática
Histórico da informáticaLaís Berlatto
 
Especificações da ISO para gestão de Segurança da Informação
Especificações da ISO para gestão de Segurança da InformaçãoEspecificações da ISO para gestão de Segurança da Informação
Especificações da ISO para gestão de Segurança da InformaçãoLaís Berlatto
 
Modelos de Previsão para sistemas de turbulência
Modelos de Previsão para sistemas de turbulênciaModelos de Previsão para sistemas de turbulência
Modelos de Previsão para sistemas de turbulênciaLaís Berlatto
 
Teste de Usabilidade e Percurso Cognitivo
Teste de Usabilidade e Percurso CognitivoTeste de Usabilidade e Percurso Cognitivo
Teste de Usabilidade e Percurso CognitivoLaís Berlatto
 
Berlatto reengenharia por exemplos uma proposta para evolucao de sistemas leg...
Berlatto reengenharia por exemplos uma proposta para evolucao de sistemas leg...Berlatto reengenharia por exemplos uma proposta para evolucao de sistemas leg...
Berlatto reengenharia por exemplos uma proposta para evolucao de sistemas leg...Laís Berlatto
 

Mehr von Laís Berlatto (20)

Cucumber - Um breve Review
Cucumber - Um breve ReviewCucumber - Um breve Review
Cucumber - Um breve Review
 
Testes de usabilidade
Testes de usabilidade Testes de usabilidade
Testes de usabilidade
 
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...
 
Ruby
RubyRuby
Ruby
 
E-business
E-businessE-business
E-business
 
Programação Diversitária
Programação DiversitáriaProgramação Diversitária
Programação Diversitária
 
Specification By Example: Estudo de caso em uma software house
Specification By Example: Estudo de caso em uma software houseSpecification By Example: Estudo de caso em uma software house
Specification By Example: Estudo de caso em uma software house
 
Bluetooth
BluetoothBluetooth
Bluetooth
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Data encryption standard DES & 3DES
Data encryption standard DES & 3DESData encryption standard DES & 3DES
Data encryption standard DES & 3DES
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Amostragem
AmostragemAmostragem
Amostragem
 
Estudo de caso
Estudo de casoEstudo de caso
Estudo de caso
 
Ética hacker
Ética hackerÉtica hacker
Ética hacker
 
Histórico da informática
Histórico da informáticaHistórico da informática
Histórico da informática
 
Especificações da ISO para gestão de Segurança da Informação
Especificações da ISO para gestão de Segurança da InformaçãoEspecificações da ISO para gestão de Segurança da Informação
Especificações da ISO para gestão de Segurança da Informação
 
Modelos de Previsão para sistemas de turbulência
Modelos de Previsão para sistemas de turbulênciaModelos de Previsão para sistemas de turbulência
Modelos de Previsão para sistemas de turbulência
 
Arm Cortex
Arm CortexArm Cortex
Arm Cortex
 
Teste de Usabilidade e Percurso Cognitivo
Teste de Usabilidade e Percurso CognitivoTeste de Usabilidade e Percurso Cognitivo
Teste de Usabilidade e Percurso Cognitivo
 
Berlatto reengenharia por exemplos uma proposta para evolucao de sistemas leg...
Berlatto reengenharia por exemplos uma proposta para evolucao de sistemas leg...Berlatto reengenharia por exemplos uma proposta para evolucao de sistemas leg...
Berlatto reengenharia por exemplos uma proposta para evolucao de sistemas leg...
 

Como o Cucumber Funciona

  • 1. Cucumber : Características do arquivo ".feature" e sua sintaxe Disciplina: Engenharia de Software Avançada
  • 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"
  • 6. Estrutura de pastas /feature /step_definititions /supportexemplo1.feature env.rbexemplo1.rb exemplo2.rb exemplo2.feature
  • 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
  • 15. --------------------------------------------------- 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>
  • 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