BDD em Testes de
Serviço
BDD e Testes de Serviço (API)
Testes de Serviço
• API Rest no Monolito
• API Rest em Micro Serviços
BDD e Testes de Serviço (API)
• Behavior Driven Development
• Desenvolvimento Orientado
por Comportamento
Testes de Serviço
• API Rest no Monolito
• API Rest em Micro Serviços
BDD
REST API
REST API
Monolito
Serviços
BD BD BD
REST API
REST API
Monolito
Serviços
BD BD BD
REST API
REST API
MicroServiços
Serviços
BD
REST API
Serviços
REST API
REST API
MicroServiços
Serviços
BD
REST API
Serviços
REST API
Serviços
REST API
Serviços
REST API
BD
BD
Testes de API
Pirâmide Ideal
- Mesma imagem do primeiro slide da Pirâmide Ideal
Testes de API
Pirâmide Ideal
+int
+iso
$$$
¢
- Mesma imagem do primeiro slide da Pirâmide Ideal
Testes de API
Pirâmide Ideal
+int
+iso
$$$
¢
- Mesma imagem do primeiro slide da Pirâmide Ideal
Testes de API
Tipos de Testes
• Funcional
Testes de API
Tipos de Testes
• Funcional
• Aceitação (fluxo do usuário)
Testes de API
Tipos de Testes
• Funcional
• Aceitação (fluxo do usuário)
• Sanidade
Testes de API
Tipos de Testes
• Funcional
• Aceitação (fluxo do usuário)
• Sanidade
• Contrato
Testes de API
Tipos de Testes
• Funcional
• Aceitação (fluxo do usuário)
• Sanidade
• Contrato
• Saúde dos endpoints
Testes de API
Pipeline
Saúde
Testes de API
Pipeline
Saúde Sanidade
Testes de API
Pipeline
Saúde Aceitação
Sanidade
Testes de API
Pipeline
Saúde Aceitação
Sanidade Funcional
Testes de API
Pipeline
Saúde Aceitação
Sanidade Funcional Contrato
Testes de API
Pipeline
Saúde Aceitação
Sanidade Funcional Contrato
A
Teste de Contrato
C
Teste de Contrato
Teste de Contrato
Teste de Contrato
B
D
BDD
• Behavior Driven Development (BDD ou Desenvolvimento Orientado por
Comportamento) é uma forma de colaboração no desenvolvimento de
software que age como ponte de comunicação entre negócio e
tecnologia.
BDD
• Behavior Driven Development (BDD ou Desenvolvimento Orientado por
Comportamento) é uma forma de colaboração no desenvolvimento de
software que age como ponte de comunicação entre negócio e
tecnologia.
• BDD ajuda os times a comunicarem requisitos com mais precisão,
descobrirem defeitos mais cedo e entregando valor ao usuário
Aslak Hellesøy (Criador do Cucumber)
https://cucumber.io/blog/collaboration/the-worlds-most-misunderstood-collaboration-tool/
Aslak Hellesøy (Criador do Cucumber)
https://cucumber.io/blog/collaboration/the-worlds-most-misunderstood-collaboration-tool/
“Infelizmente, você não pode simplesmente baixar o Cucumber, começar a
escrever os arquivos .Features do Cucumber e esperar que um nirvana de
verdade e iluminação aconteça por conta própria. Há um processo a seguir
que envolve muitas funções na equipe de software.
Esse processo é chamado de BDD. O BDD não é uma ferramenta que você
pode baixar. Gojko Adzic deu ao BDD um nome novo e melhor: especificação
por exemplo.“
O Problema
Negócio
Dev
QA
O Problema
Requisitos
Negócio
Dev
QA
O Problema
Desenvolvimento
Requisitos
Negócio
Dev
QA
O Problema
Desenvolvimento
Testes
Requisitos
Negócio
Dev
QA
X semanas depois
O Problema
Desenvolvimento
Testes
Requisitos
Negócio
Dev
QA
X semanas depois
“Seus Cenários no Cucumber devem direcionar sua implementação, não refleti-la.
Pense nisso por um minuto. Isso tem muitas implicações. Antes de tudo, significa que os
recursos do Cucumber devem ser escritos antes do código que implementa o recurso.”
Aslak Hellesøy (Criador do Cucumber)
https://cucumber.io/blog/collaboration/the-worlds-most-misunderstood-collaboration-tool/
“Seus Cenários no Cucumber devem direcionar sua implementação, não refleti-la.
Pense nisso por um minuto. Isso tem muitas implicações. Antes de tudo, significa que os
recursos do Cucumber devem ser escritos antes do código que implementa o recurso.”
Aslak Hellesøy (Criador do Cucumber)
https://cucumber.io/blog/collaboration/the-worlds-most-misunderstood-collaboration-tool/
“Os contribuidores mais importantes dos requisitos não são
programadores ou testadores - são analistas de negócios. Durante essa
atividade, a principal responsabilidade dos programadores e testadores
é fazer perguntas e garantir que eles entendam tudo.”
Time Ágil - max potencial do ágil, automação, BDD
Negócio
Dev
QA
Time Ágil
Negócio
Dev
QA
Requisitos Planejamento
Requisitos
Time Ágil
Negócio
Dev
QA
Requisitos Planejamento
Requisitos
Pronta #1
Time Ágil
Negócio
Dev
QA
Requisitos Planejamento
Requisitos
Pronta #1
Em Progresso
Time Ágil
Negócio
Dev
QA
Requisitos Planejamento
Requisitos
Pronta #1
Em Progresso
Código + Unitário
+ Regressão
Time Ágil
Negócio
Dev
QA
Requisitos Planejamento
Requisitos
Pronta #1
Em Progresso
Código + Unitário
+ Regressão
ou
Time Ágil
Negócio
Dev
QA
Requisitos Planejamento
Requisitos
Pronta #1
Em Progresso
Código + Unitário
+ Regressão
ou
sim
Time Ágil
Negócio
Dev
QA
Requisitos Planejamento
Requisitos
Pronta #1
Em Progresso
Código + Unitário
+ Regressão
Validação
ou
sim
não
Time Ágil
Negócio
Dev
QA
Requisitos Planejamento
Requisitos
Pronta #1
Em Progresso
Código + Unitário
+ Regressão
Validação
Sim
ou
sim
não
Time Ágil
Negócio
Dev
QA
Requisitos Planejamento
Requisitos
Pronta #1
Em Progresso
Código + Unitário
+ Regressão
Validação
Sim
ou
não
Finalizada Prod
sim
não
Time Ágil
Negócio
Dev
QA
Requisitos Planejamento
Requisitos
Pronta #1
Em Progresso
Código + Unitário
+ Regressão
Validação
Sim
ou
não
Finalizada Prod
sim
não
Time Ágil CD
Negócio
Dev
QA
Requisitos Planejamento
Requisitos
Pronta #1
Em Progresso
Código + Unitário
+ Regressão
ou
Prod
Validação
E
não
sim
Time Ágil CD
Negócio
Dev
QA
Requisitos Planejamento
Requisitos
Pronta #1
Em Progresso
Código + Unitário
+ Regressão
ou
Prod
Validação
E
não
sim
Monitorar e Observar
Feature Toggle
Canary Release
Blue/Green
Vantagens
• Testes de Aceitação
Vantagens
• Testes de Aceitação
• Especificações Executáveis
Vantagens
• Testes de Aceitação
• Especificações Executáveis
• Fácil de entender
Vantagens
• Testes de Aceitação
• Especificações Executáveis
• Fácil de entender
• Pode ser usado para novos integrantes entenderem o sistema
Vantagens
• Testes de Aceitação
• Especificações Executáveis
• Fácil de entender
• Pode ser usado para novos integrantes entenderem o sistema
• Flexibilidade
Desvantagens
• Como são testes funcionais, podem falhar aleatoriamente (flake)
Desvantagens
• Como são testes funcionais, podem falhar aleatoriamente (flake)
• As feature podem demorar demais para rodar
Desvantagens
• Como são testes funcionais, podem falhar aleatoriamente (flake)
• As feature podem demorar demais para rodar
• O pessoal do negócio pode não ler os cenários.
Desvantagens
• Como são testes funcionais, podem falhar aleatoriamente (flake)
• As feature podem demorar demais para rodar
• O pessoal do negócio pode não ler os cenários.
• Inserção de uma camada extra
Desvantagens
• Como são testes funcionais, podem falhar aleatoriamente (flake)
• As feature podem demorar demais para rodar
• O pessoal do negócio pode não ler os cenários.
• Inserção de uma camada extra
• Pode ser usado como estratégia para dados nos testes
“Se você está usando o Cucumber como ferramenta de
testes, você está fazendo o uso incorreto”
Aslak Hellesøy (Criador do Cucumber)
https://cucumber.io/blog/collaboration/the-worlds-most-misunderstood-collaboration-tool/
“Se você está usando o Cucumber como ferramenta de
testes, você está fazendo o uso incorreto”
“Quando o Cucumber é adotado apenas como uma ferramenta para escrever
testes automatizados sem nenhuma contribuição dos analistas de negócios,
eles tendem a se tornar imperativos e a perder o valor da documentação.”
Aslak Hellesøy (Criador do Cucumber)
https://cucumber.io/blog/collaboration/the-worlds-most-misunderstood-collaboration-tool/
“Se você está usando o Cucumber como ferramenta de
testes, você está fazendo o uso incorreto”
“Quando o Cucumber é adotado apenas como uma ferramenta para escrever
testes automatizados sem nenhuma contribuição dos analistas de negócios,
eles tendem a se tornar imperativos e a perder o valor da documentação.”
“Há uma certa quantidade de cerimônia envolvida no Cucumber. Existem as
definições Gherkin e Step a serem mantidas. Isso pode ser justificado se
melhorar a colaboração e reduzir mal-entendidos, mas se a ferramenta for
usada no vácuo, esses benefícios obviamente nunca acontecerão.”
Aslak Hellesøy (Criador do Cucumber)
https://cucumber.io/blog/collaboration/the-worlds-most-misunderstood-collaboration-tool/
BDD Vale ou não a pena?
• Divisão
• Equipe de Dev
• Equipe de Automação
• Equipe de QA de escrita de cenários e testes manuais
• Usado nos testes funcionais de UI
Caso 1 - Explicação
BDD Vale ou não a pena?
• Divisão
• Equipe de Dev
• Equipe de Automação
• Equipe de QA de escrita de cenários e testes manuais
• Usado nos testes funcionais de UI
• Processo "BDD"
• QA Manual + Analista de Negócio escrevia os cenários
• Equipe de automação automava
Caso 1 - Explicação
BDD Vale ou não a pena?
Caso 1 - Conclusão
• Não acho que valeu a pena, adicionou mais complexidade,
principalmente pela forma que a empresa era organizada (ou
desorganizada)
BDD Vale ou não a pena?
Caso 2 - Explicação
• Time único
• QA normalmente fazia validação e testes funcionais
• Quando gargalos surgiam, QAs ajudavam DEVs e DEVs ajudavam
QAs.
BDD Vale ou não a pena?
Caso 2 - Explicação
• Time único
• QA normalmente fazia validação e testes funcionais automatizados
• Quando gargalos surgiam, QAs ajudavam DEVs e DEVs ajudavam
QAs.
• Usado nos testes funcionais de UI e API
BDD Vale ou não a pena?
Caso 2 - Explicação
• Time único
• QA normalmente fazia validação e testes funcionais
• Quando gargalos surgiam, QAs ajudavam DEVs e DEVs ajudavam
QAs.
• Usado nos testes funcionais de UI e API
• Processo BDD
• Reunião com 3 amigos sempre.
BDD Vale ou não a pena?
Caso 2 - Conclusão
• Valeu muito a pena
• O nível de comunicação e colaboração era muito grande
- hoje vejo que essas reuniões com os 3 amigos só funcionou pq a Analista de Negócio abraçou o BDD.
BDD Vale ou não a pena?
Caso 2 - Conclusão
• Valeu muito a pena
• O nível de comunicação e colaboração era muito grande
• Usamos os cenários como documentação viva
- hoje vejo que essas reuniões com os 3 amigos só funcionou pq a Analista de Negócio abraçou o BDD.
BDD Vale ou não a pena?
Caso 2 - Conclusão
• Valeu muito a pena
• O nível de comunicação e colaboração era muito grande
• Usamos os cenários como documentação viva
• Os testes faziam parte da nossa estratégia de Integração Contínua (CI)
- hoje vejo que essas reuniões com os 3 amigos só funcionou pq a Analista de Negócio abraçou o BDD.
BDD Vale ou não a pena?
Caso 2 - Conclusão
• Valeu muito a pena
• O nível de comunicação e colaboração era muito grande
• Usamos os cenários como documentação viva
• Os testes faziam parte da nossa estratégia de Integração Contínua (CI)
• Mas hoje vejo que essas reuniões com os 3 amigos só aconteceram pq a
Analista de Negócio abraçou o BDD.
- hoje vejo que essas reuniões com os 3 amigos só funcionou pq a Analista de Negócio abraçou o BDD.
BDD Vale ou não a pena?
Caso 3 - Explicação
• Time único com cultura devops
• Todo mundo faz tudo, cada pessoa compartilhando o seu
conhecimento mais profundo.
• Não tínhamos analista de negócio.
• Em 2 anos tivemos 5 POs diferentes (alguns participativos, outros não)
BDD Vale ou não a pena?
Caso 3 - Explicação
• Time único com cultura devops
• Todo mundo faz tudo, cada pessoa compartilhando o seu
conhecimento mais profundo.
• Não tínhamos analista de negócio.
• Em 2 anos tivemos 5 POs diferentes (alguns participativos, outros não)
• Testes Funcionais de API
BDD Vale ou não a pena?
Caso 3 - Explicação
• Processo BDD
• Cada pessoa preparava um N de histórias
• Conversas com PO sobre os cenários ou critérios de aceite
• Review por um outro membro da equipe
• Mais conversas com o PO (muitas vezes assíncronas por chat ou email)
BDD Vale ou não a pena?
Caso 3 - Conclusão
• Valeu muito a pena
• Apesar alguns POs não participarem muito, os cenários ajudaram para:
• Conhecimento compartilhado na equipe
BDD Vale ou não a pena?
Caso 3 - Conclusão
• Valeu muito a pena
• Apesar alguns POs não participarem muito, os cenários ajudaram para:
• Conhecimento compartilhado na equipe
• Relatório de execução no Jenkins (da última build)
BDD Vale ou não a pena?
Caso 3 - Conclusão
• Valeu muito a pena
• Apesar alguns POs não participarem muito, os cenários ajudaram para:
• Conhecimento compartilhado na equipe
• Relatório de execução no Jenkins (da última build)
• Onboarding de novos POs
Especificação
por Exemplo
O que é um Cenário?
• Um cenário é um exemplo concreto de uma regra de negócio
O que é um Cenário?
• Um cenário é um exemplo concreto de uma regra de negócio
• Um cenário usa exemplos concretos para explicar ideas abstratas.
O que é um Cenário?
Dado (pré-condição)
Quando (ação)
Então (resultado esperado)
Formato
O que é um Cenário?
Dado que esteja no sistema
Quando faço o login
Então fui logado
Cenário Abstrato vs Concreto
O que é um Cenário?
Dado que esteja no sistema
Quando faço o login
Então fui logado
Cenário Abstrato vs Concreto
que sistema?
que local do sistema?
O que é um Cenário?
Dado que esteja no sistema
Quando faço o login
Então fui logado
Cenário Abstrato vs Concreto
quem entrou na página? era admin?
que sistema?
que local do sistema?
O que é um Cenário?
Dado que esteja no sistema
Quando faço o login
Então fui logado
Cenário Abstrato vs Concreto
quem entrou na página?
o deve ocorrer quando o usuário loga?
era admin?
que sistema?
que local do sistema?
O que é um Cenário?
Dado que esteja na página de login
Quando logo com o admin “admin@gmail.com”
Então devo ver a mensagem de usuário logado com sucesso
E o nome do usuário deve aparecer ao lado direito do menu
Cenário Abstrato vs Concreto
O que é um Cenário?
Cenário Abstrato vs Concreto
Quando logo com o admin “admin@gmail.com”
Então devo ver a mensagem de usuário logado com sucesso
E o nome do usuário deve aparecer ao lado direito do menu
O que é um Cenário?
Cenário Abstrato vs Concreto
Quando logo com um usuário admin
Então devo ver a mensagem de usuário logado com sucesso
E o nome do usuário deve aparecer ao lado direito do menu
Especificando Pelo Exemplo
O que especificar?
• Queremos responder a pergunta: “Como o sistema se comporta?”
Especificando Pelo Exemplo
O que especificar?
• Queremos responder a pergunta: “Como o sistema se comporta?”
• Queremos descrever o que o sistema faz e não como ele faz.
Especificando Pelo Exemplo
Dado que eu abra o Firefox
E eu abra o site “www.amazon.com.br”
Quando seleciono a busca
E digito “smartphone"
E clico no botão de buscar
E clico em “Apple" no filtro de “Marca"
Então devo ver somente os produtos da Apple
Exemplo - como o sistema faz
Especificando Pelo Exemplo
Dado que eu abra o Firefox
E eu abra o site “www.amazon.com.br”
Quando seleciono a busca
E digito “smartphone"
E clico no botão de buscar
E clico em “Apple" no filtro de “Marca"
Então devo ver somente os produtos da Apple
Exemplo - como o sistema faz
Especificando Pelo Exemplo
Dado que eu abra o Firefox
E eu abra o site “www.amazon.com.br”
Quando seleciono a busca
E digito “smartphone"
E clico no botão de buscar
E clico em “Apple" no filtro de “Marca"
Então devo ver somente os produtos da Apple
Exemplo - como o sistema faz
Especificando Pelo Exemplo
Dado que eu abra o Firefox
E eu abra o site “www.amazon.com.br”
Quando seleciono a busca
E digito “smartphone"
E clico no botão de buscar
E clico em “Apple" no filtro de “Marca"
Então devo ver somente os produtos da Apple
Exemplo - como o sistema faz
Especificando Pelo Exemplo
Dado que eu abra o Firefox
E eu abra o site “www.amazon.com.br”
Quando seleciono a busca
E digito “smartphone"
E clico no botão de buscar
E clico em “Apple" no filtro de “Marca"
Então devo ver somente os produtos da Apple
Exemplo - como o sistema faz
Especificando Pelo Exemplo
Exemplo - como o sistema faz
Dado que eu abra o Firefox
E eu abra o site “www.amazon.com.br”
Quando seleciono a busca
E digito “smartphone"
E clico no botão de buscar
E clico em “Apple" no filtro de “Marca"
Então devo ver somente os produtos da Apple
Especificando Pelo Exemplo
Quando pesquiso por “smartphone”
E filtro o resultado por “Apple”
Então somente os produtos da Apple são mostrados
Exemplo - o que o sistema faz
Especificando Pelo Exemplo
Quando pesquiso por “smartphone” na Amazon BR
E filtro o resultado por “Apple”
Então somente os produtos da Apple são mostrados
Exemplo - o que o sistema faz
Ferramentas de BDD
CUCUMBER
Ferramentas de BDD
CUCUMBER
Aslak Hellesøy (Criador do Cucumber)
https://cucumber.io/blog/collaboration/the-worlds-most-misunderstood-collaboration-tool/
Gherkin
Gherkin
• Linguagem natural com algumas funcionalidades
• Pessoas técnicas e não técnicas podem entender ou escrever os
cenários
• Permite que os testes sejam executados, se tornando assim uma
documentação viva.
Palavras-Chave
Gherkin
• Funcionalidade / Caracteristica
• Contexto / Cenário de Fundo
• Cenario /Cená rio / Exemplo
• Dado(a)(os)(as)
• Quando
• Então / Entao
• E
• Mas
• Esquema do Cenário/Cenario
• Exemplos
https://cucumber.io/docs/gherkin/reference/
Funcionalidade
Funcionalidade: Nome da funcionalidade
Sintaxe
Sintaxe
Funcionalidade
• Os cenários de teste são agrupados por funcionalidades
• Cada arquivo .feature deve mapear a uma funcionalidade
Cenário / Exemplo
Funcionalidade: Nome da funcionalidade 

Cenário - Título (identifica o teste)

Dado - configura o teste

Quando - Ação ou interação do usuário

Então - Resultado ou evidência

E / Mas - Continua passo “Dado”, “Quando” ou “Então”
Sintaxe
E se eu tenho vários filtros?
Tabelas
Quando pesquiso por “smartphone”
E filtro o resultado por sistema operacional Android
E filtro o resultado por marca Samsung
E filtro o resultado por tamanho de tela 6 polegadas
E filtro o resultado por espaço de disco de 128gb
Então somente os produtos que atendem aos filtros são mostrados
Vários filtros
Tabelas
Quando pesquiso por “smartphone”
E filtro por:
| android |
| Samsung |
| 6 |
| 128gb |
Então somente os produtos que atendem aos filtros são mostrados
Lista
Tabelas
Quando pesquiso por “smartphone”
E filtro por:
| android |
| Samsung |
| 6 |
| 128gb |
Então somente os produtos que atendem aos filtros são mostrados
Lista
Array

lista = [

“android”, 

“Samsung",

“6",

“128gb”,

]

lista[0]
Tabelas
Quando pesquiso por “smartphone”
E filtro por:
| sistema operacional | android |
| marca | Samsung |
| tamanho de tela | 6 |
| memoria interna | 128gb |
Então somente os produtos que atendem aos filtros são mostrados
Dicionário
Quando pesquiso por “smartphone”
E filtro por:
| sistema operacional | android |
| marca | Samsung |
| tamanho de tela | 6 |
| memoria interna | 128gb |
Então somente os produtos que atendem aos filtros são mostrados
Dicionário/Map

dicionario = {

“sistema operacional” => “android”, 

“marca” => “Samsung",

“tamanho de tela” => “6",

“memória interna” => “128gb",

}

dicionario[‘marca']

dicionario.get(‘marca’)

Tabelas
Dicionário
Quando pesquiso por “smartphone”
E filtro por:
| sistema operacional | marca | tamanho de tela | memoria interna |
| Android | Samsung | 6 | 128gb |
| iOS | Apple | 5 | 64gb |
Então somente os produtos que atendem aos filtros são mostrados
Tabelas
Lista de Dicionário
Array de Dicionário/Map

arrayDicionario = [

{

“sistema operacional” => “android”,

“marca” => “Samsung",

“tamanho de tela” => “6",

“memória interna” => “128gb",

},

{

“sistema operacional” => “android” 

“marca” => "Samsung"

“tamanho de tela” => "6"

“memória interna” => "128gb"

}

]

Tabelas
Lista de Dicionário
Sintaxe
Contexto
Contexto: Smartphones cadastrados
Dado que eu tenha um smartphone Android cadastrado
E que eu tenha um smartphone iPhone cadastrado
Uso
Contexto / Cenário de Fundo
• Reusa a configuração do teste
• Idealmente não deve fazer ação ou verificação, só configuração
• Tente não ter configurações complexa, somente o necessário para o
entendimento
• É executado antes de cada um dos cenários
Uso
Esquema de Cenário
• Mesmo cenário, porém dados diferentes
• Cada linha na tabela de exemplos representa um cenário completo
Sintaxe
Esquema de Cenário
Esquema do Cenário: Busca por produtos utilizando filtro
Quando pesquiso por "smartphone"
E o filtro por:
| marca | <marca> |
| sistema operacional | <so> |
| tamanho de tela | <tela> |
| memoria interna | <memoria> |
Entao o <resultado> deve aparecer no resultado
Sintaxe
Esquema de Cenário
Esquema do Cenário: Busca por produtos utilizando filtro
Quando pesquiso por "smartphone"
E o filtro por:
| marca | <marca> |
| sistema operacional | <so> |
| tamanho de tela | <tela> |
| memoria interna | <memoria> |
Entao o <resultado> deve aparecer no resultado
Exemplos: Busca Valida
| so | marca | tela | memoria | resultado |
| Android | Samsung | 6 | 128gb |. Samsung galaxy |
| iOS | Apple | 5 | 64gb |. iPhone X |
Exemplos: Busca invalida
| so | marca | tela | memoria | resultado |
| Android | Samsung | 2 | 128gb |. busca sem resultados |
| iOS | Apple | 5 | 6gb | busca sem resultados |
Sintaxe
Esquema de Cenário
Esquema do Cenário: Busca por produtos utilizando filtro
Quando pesquiso por "smartphone"
E o filtro por:
| marca | <marca> |
| sistema operacional | <so> |
| tamanho de tela | <tela> |
| memoria interna | <memoria> |
Entao o <resultado> deve aparecer no resultado
Exemplos: Busca Valida
| so | marca | tela | memoria | resultado |
| Android | Samsung | 6 | 128gb |. Samsung galaxy |
| iOS | Apple | 5 | 64gb |. iPhone X |
Exemplos: Busca invalida
| so | marca | tela | memoria | resultado |
| Android | Samsung | 2 | 128gb |. busca sem resultados |
| iOS | Apple | 5 | 6gb | busca sem resultados |
Dicionário/HashMap

dicionario = {

“sistema operacional” => “android”, 

“marca” => “Samsung",

“tamanho de tela” => “6",

“memória interna” => “128gb",

}

dicionario[‘marca']

dicionario.get(‘marca’)
Sintaxe
Esquema de Cenário ou Tabela
Descrevendo múltiplos cenários? Use Esquema de Cenário
Configurando um teste ou simplificando ação? Use tabela
Projeto
Cucumber
Estrutura
Projeto Cucumber Projeto
Estrutura
Projeto Cucumber Projeto
Feature
Estrutura
Projeto Cucumber Projeto
Feature
Cenários
Estrutura
Projeto Cucumber Projeto
Feature
Cenários
Passos
Estrutura
Projeto Cucumber Projeto
Feature
Cenários
Passos
O Negócio
Estrutura
Projeto Cucumber Projeto
Feature
Cenários
Passos
Step Definitions
O Negócio
Estrutura
Projeto Cucumber Projeto
Feature
Cenários
Passos
Step Definitions
Código Suporte
O Negócio
Estrutura
Projeto Cucumber Projeto
Feature
Cenários
Passos
Step Definitions
Código Suporte
Biblioteca de
Automação
O Sistema
O Negócio
Estrutura
Projeto Cucumber Projeto
Feature
Cenários
Passos
Step Definitions
Código Suporte
Biblioteca de
Automação
O Sistema
O Negócio
A Tecnologia
resources/
resources/
features/
Animal.feature
Pedido.feature
Usuario.feature
resources/
features/
Animal.feature
Pedido.feature
Usuario.feature
java/
resources/
features/
Animal.feature
Pedido.feature
Usuario.feature
java/
steps/
AnimalStepDefinitions.java
Config.java
PedidoStepDefinitions.java
UsuarioStepDefinitions.java
resources/
features/
Animal.feature
Pedido.feature
Usuario.feature
java/
steps/
AnimalStepDefinitions.java
Config.java
PedidoStepDefinitions.java
UsuarioStepDefinitions.java
Expressão
Regular
resources/
features/
Animal.feature
Pedido.feature
Usuario.feature
java/
steps/
AnimalStepDefinitions.java
Config.java
PedidoStepDefinitions.java
UsuarioStepDefinitions.java
Expressão
Regular
suporte/
resources/
features/
Animal.feature
Pedido.feature
Usuario.feature
java/
steps/
AnimalStepDefinitions.java
Config.java
PedidoStepDefinitions.java
UsuarioStepDefinitions.java
Expressão
Regular
suporte/
domínio/
Pedido.java
Animal.java
Usuario.java
resources/
features/
Animal.feature
Pedido.feature
Usuario.feature
api/
PedidoApi.java
AnimalApi.java
UsuarioApi.java
java/
steps/
AnimalStepDefinitions.java
Config.java
PedidoStepDefinitions.java
UsuarioStepDefinitions.java
Expressão
Regular
suporte/
domínio/
Pedido.java
Animal.java
Usuario.java
resources/
features/
Animal.feature
Pedido.feature
Usuario.feature
api/
PedidoApi.java
AnimalApi.java
UsuarioApi.java
java/
steps/
AnimalStepDefinitions.java
Config.java
PedidoStepDefinitions.java
UsuarioStepDefinitions.java
Expressão
Regular
suporte/
ExecutávelCucumber.java
domínio/
Pedido.java
Animal.java
Usuario.java

BDD em Testes de Serviço