FrameworkDemoiselle.gov.brCommunity Documentation

Capítulo 4. Como criar uma história

4.1. Conceito
4.2. Frases pré-definidas pelo framework
4.3. Frases pré-definidas pelo framework para manipulação de Grids
4.4. Escrevendo um cenário
4.5. Parametrizando os cenários
4.6. Reusando os cenários
4.7. Reusando os cenários em outras histórias
4.8. Plugin do JBehave para Eclipse

Neste capítulo estão descritos os termos, frases e regras para criação e reúso de cenários de teste realizáveis por meio do framework Behave.

No BDD, há três palavras-chave:

O framework Behave estende o vocabulário padrão do BDD, adicionando novos termos:

Um cenário é um conjunto de frases que utilizam as palavras-chave descritas acima para descrever um comportamento esperado pelo sistema.

Dado que estou na tela de login do sistema
Quando informo usuário "demoiselle" e senha "behave"
E clico no botão "Entrar"
Então será exibida a página de boas vindas

Uma história é um conjunto de cenários que descrevem uma funcionalidade do sistema, ou uma parte dela.

O framework Behave foi construído para diminuir o esforço gasto para definir os vários cenários de teste de um sistema. Algumas frases estão embutidas no framework para facilitar o mapeamento das classes de teste. São elas:

Dado que estou na tela "Login"
Quando informo "demoiselle" no campo "Usuário:"
E informo "behave" no campo "Senha:" 
Quando clico em "Entrar"
Então será exibido "Seja bem vindo"

As histórias escritas para o Behave devem estar em arquivos com a extensão ".story". Cada arquivo ".story" pode conter vários cenários de teste. Esta extensão pode ser alterada modificando o valor da chave "behave.parser.story.extension.converted" no arquivo behave.properties. Os termos aceitos pelo framework devem sempre estar no início das frases, mesmo que precedidas por espaços. As frases descritas nos cenários devem estar cada uma em uma linha diferente. O cenário é, por padrão, iniciado com o termo "Cenário:", no caso da história estar no idioma português. Este termo pode ser alterado modificando o valor da chave "behave.parser.identification.scenario.pattern.<idioma>" no arquivo behave.properties.

Cenário: Acessar o sistema com usuário demoiselle e senha behave
Dado que estou na página "Login"
Quando informo "demoiselle" no campo "Usuário:"
E informo "behave" no campo "Senha:" 
Quando clico em "Entrar"
Então será exibido "Seja bem vindo"

Parâmetros devem ser utilizados nos cenários quando os dados utilizados nos testes não forem constantes. A sintaxe de um parâmetro é "{nome_do_parametro}".

Cenário: Acessar o sistema com usuário "{usuario}" e senha "{senha}"
Dado que estou na página "Login"
Quando informo "{usuario}" no campo "Usuário:"
E informo "{senha}" no campo "Senha:" 
Quando clico em "Entrar"
Então será exibido "Seja bem vindo"

Para que o reúso ocorra é necessário, primeiramente, utilizar parâmetros no nome do cenário. Isto irá prevenir que o cenário seja "executado" pelo framework, mas, deste forma, ele poderá ser referenciado por outros cenários, diminuindo a quantidade de linhas escritas em todo o projeto de teste.

Cenário: Acessar o sistema com usuário "{usuario}" e senha "{senha}"
Dado que estou na página "Login"
Quando informo "{usuario}" no campo "Usuário:"
E informo "{senha}" no campo "Senha:" 
Quando clico em "Entrar"
Então será exibido "Seja bem vindo"

Cenário: Sair do sistema
Dado que vou para a página "Tela Principal"
Quando clico em "Sair"
Então será exibido "Usuário:"
E será exibido "Senha:"

Cenário: Teste com dados "{usuario}" e senha "{senha}"
Acessar o sistema com usuário "{usuario}" e senha "{senha}"
Sair do sistema

Para que o reúso de cenários ocorra em outras histórias é necessário, primeiramente, que a história seja adicionada no contexto do teste que será executado.

BehaveContext eng = BehaveContext.getInstance();
		
// Adiciona histórias que serão executadas
eng.addStories("/stories/acesso.story");
eng.addStories("/stories/estou-com-sorte.story");
eng.addStories("/stories/pesquisa-simples.story");

// Roda as histórias incluída
eng.run();
  		

Assim a chamada ao cenário se dar através da utilização do título do cenário pretendido.

Em /stories/acesso.story:

Cenário: Acesso ao "{sistema}"

Dado que vou para a tela "Tela de Busca"
Então será exibido "{sistema}"


Em /stories/estou-com-sorte.story:

Cenário: Utilização da funcionalidade estou com sorte

Acesso ao "Google"
Quando clico em "Estou com sorte"
Então será exibido "Google"
  		

Uma outra possibilidade seria adicionar a história somente para reúso.

BehaveContext eng = BehaveContext.getInstance();
		
// Adiciona história somente para reuso de cenários
// Cenários que não reutilizados não serão executados
eng.addStoriesReuse("/stories/acesso.story");

// Adiciona histórias que serão executadas
eng.addStories("/stories/estou-com-sorte.story");
eng.addStories("/stories/pesquisa-simples.story");

// Roda as histórias incluída
eng.run();
  		

Desta maneira os cenários que não são parametrizados contidos nas histórias passadas no método "addStoriesReuse" não serão executados. Caso que não ocorre quando utilizado o método "addStories", onde todos os cenários que não são parametrizados serão executados.

Funcionalidades:

Requisitos:

O Plugin já foi testado nas versões Indigo (3.7) e Juno (4.2) do Eclipse.

Instalação usando o Eclipse:

Configuração: