No último tutorial do Selenium, apresentamos o Selenium Grid, que é um ambiente de execução de teste distribuído para acelerar a execução de uma passagem de teste.
Agora, no final desta série de treinamento abrangente do Selenium, estamos aprendendo testes avançados do Selenium e conceitos relacionados.
Neste e no próximo tutorial, nós apresentará a você o Cucumber – um framework Behavior Driven Development (BDD) que é usado com Selenium para realizar testes de aceitação.
Introdução ao Cucumber
Um pepino é uma ferramenta baseada no framework Behavior Driven Development (BDD) que é usado para escrever testes de aceitação para a aplicação web. Ele permite a automação da validação funcional em formato facilmente legível e compreensível (como o inglês simples) para analistas de negócios, desenvolvedores, testadores, etc.
Os arquivos de recursos do pepino podem servir como um bom documento para todos. Existem muitas outras ferramentas, como JBehave, que também oferecem suporte ao framework BDD. Inicialmente, Cucumber foi implementado em Ruby e depois estendido para o framework Java. Ambas as ferramentas suportam JUnit nativo.
O Behavior Driven Development é uma extensão do Test Driven Development e é usado para testar o sistema em vez de testar a parte específica do código. Discutiremos mais sobre o BDD e o estilo de escrever testes de BDD.
Cucumber pode ser usado junto com Selenium, Watir e Capybara, etc. Cucumber suporta muitas outras linguagens como Perl, PHP, Python, Net etc. neste tutorial, vamos nos concentrar em Pepino com Java como linguagem.
Noções básicas de pepino
Para entender o pepino, precisamos conhecer todas as características do pepino e seu uso.
# 1) Arquivos de características:
Arquivos de características são a parte essencial do pepino que é usado para escrever etapas de automação de teste ou testes de aceitação. Isso pode ser usado como o documento ativo. As etapas são as especificações do aplicativo. Todos os arquivos de recursos terminam com a extensão .feature.
Exemplo de arquivo de recursos:
Recurso: Recurso de funcionalidade de login
Para garantir o funcionamento da funcionalidade de login,
Eu quero executar o teste do pepino para verificar se está funcionando
Cenário: Funcionalidade de login
O usuário acessa SOFTWARETETINGHELP.COM
Quando o usuário faz login usando o nome de usuário como “USER ”E senha” PASSWORD ”
Então o login deve ser bem-sucedido
Cenário: Funcionalidade de login
O usuário acessa SOFTWARETETINGHELP.COM
Quando o usuário faz login usando o nome de usuário como” USER1 ”e senha” PASSWORD1 ”
Em seguida, a mensagem de erro deve ser exibida
# 2) Recurso:
Isso fornece informações sobre a funcionalidade de negócios de alto nível (consulte o anterior exemplo) e o objetivo do Aplicativo em teste. Todos devem ser capazes de entender a intenção do arquivo de recurso lendo a primeira etapa do recurso. Esta parte é basicamente resumida.
# 3) Cenário:
Basicamente, um cenário representa uma funcionalidade particular que está sendo testada. Ao ver o cenário, o usuário deve ser capaz de entender a intenção por trás do cenário e do que se trata o teste. Cada cenário deve seguir dado, quando e então o formato. Esta linguagem é chamada de “pepino”.
- Dado: Como mencionado acima, dado especifica as pré-condições. É basicamente um estado conhecido.
- Quando: Este é usado quando alguma ação deve ser realizada. Como no exemplo acima, vimos que quando o usuário tenta fazer login usando nome de usuário e senha, isso se torna uma ação.
- Então: O resultado ou resultado esperado deve ser colocado aqui. Por exemplo: verifique se o login foi bem-sucedido, navegação de página bem-sucedida.
- Histórico: Sempre que qualquer etapa for necessária para a execução em cada cenário, essas etapas devem ser colocadas em segundo plano. Por exemplo: o usuário precisa limpar o banco de dados antes de cada cenário, então essas etapas podem ser colocadas em segundo plano.
- E: E é usado para combinar dois ou mais o mesmo tipo de ação.
Exemplo:
Recurso: Funcionalidade de login Recurso
Cenário: Funcionalidade de login
Um determinado usuário navega para SOFTWARETETINGHELP.COM
Quando o usuário efetua login usando o nome de usuário como “USUÁRIO”
e passwo rd como “senha”
O login deve ser bem-sucedido
E a página inicial deve ser exibida
Exemplo de plano de fundo:
Plano de fundo:
Dado usuário conectado como administrador de banco de dados
E todos os valores inúteis são apagados
# 4) Esboço do cenário:
Os contornos do cenário são usados quando o mesmo teste deve ser executado com diferentes conjunto de dados. Vamos pegar o mesmo exemplo. Temos que testar a funcionalidade de login com vários conjuntos diferentes de nome de usuário e senha.
Recurso: Recurso de funcionalidade de login
Para garantir que a funcionalidade de login funcione,
quero executar o teste pepino para verificar se está funcionando
Esboço do cenário: Funcionalidade de login
Um determinado usuário navega para SOFTWARETESTINGHELP.COM
Quando o usuário faz login usando o nome de usuário como < nome de usuário > e senha < senha >
O login deve ser bem-sucedido
Exemplos:
| nome de usuário | senha |
| Tom | senha1 |
| Harry | senha2 |
| Jerry | senha3 |
Observação:
- Conforme mostrado no exemplo acima, os nomes das colunas são passados como um parâmetro para a instrução When.
- No lugar do cenário, você deve usar o esboço do cenário.
- Exemplos são usados para passar argumentos diferentes no formato tabular. Tubos verticais são usados para separar duas colunas diferentes. Um exemplo pode conter muitas colunas diferentes.
# 5) Marcas:
Cucumber por padrão executa todos os cenários em todos os arquivos de recurso. Em projetos de tempo real, pode haver centenas de arquivos de recursos que não precisam ser executados o tempo todo.
Por exemplo: Arquivos de recursos relacionados ao teste de fumaça não precisam ser executados o tempo todo. Portanto, se você mencionar uma tag como sem fumaça em cada arquivo de recurso que está relacionado ao teste de fumaça e executa o teste do pepino com a tag @SmokeTest. O Cucumber executará apenas os arquivos de recursos específicos para determinadas tags. Siga o exemplo abaixo. Você pode especificar várias tags em um arquivo de recurso.
Exemplo de uso de tags únicas:
@SmokeTest
Recurso: Recurso de funcionalidade de login
Para garantir que a funcionalidade de login funcione,
desejo executar o teste do pepino para verificar se está funcionando.
Esboço do cenário: funcionalidade de login
O usuário acessado navega para SOFTWARETESTINGHELP. COM
Quando o usuário faz login usando o nome de usuário como < nome de usuário > e senha < senha >
Então o login deve ser bem-sucedido
Exemplo de uso de várias tags:
Conforme mostrado no exemplo abaixo, mesmo arquivo de recurso pode ser usado para cenários de teste de fumaça, bem como para cenário de teste de login. Quando você pretende executar seu script para um teste de fumaça, use @SmokeTest. Da mesma forma, quando você quiser que seu script seja executado para o teste de login, use a tag @LoginTest.
Qualquer número de tags pode ser mencionado para um arquivo de recurso, bem como para o cenário.
@SmokeTest @ LoginTest
Recurso: Recurso de funcionalidade de login
Para garantir que a funcionalidade de login funcione,
quero executar o teste do pepino para verificar se está funcionando
Esboço do cenário: funcionalidade de login
O usuário determinado navega para SOFTWARETETINGHELP.COM
Quando o usuário faz login usando o nome de usuário como < nome de usuário > e senha < senha >
Então o login deve ser bem-sucedido
Da mesma forma, você pode especifique tags para executar o cenário específico em um arquivo de recurso. Verifique o exemplo abaixo para executar o cenário específico.
Recurso: Recurso de funcionalidade de login
Para garantir que a funcionalidade de login funcione,
quero executar o teste do pepino para verificar se é trabalhando
@positiveScenario
Cenário: Funcionalidade de login
Um determinado usuário navega para SOFTWARETETINGHELP.COM
Quando o usuário faz login usando o nome de usuário como “USUÁRIO” e a senha “SENHA”
Então o login deve ser bem-sucedido
@negaviveScenario
Cenário: Funcionalidade de login
O usuário acessa SOFTWARETETINGHELP.COM
Quando o usuário faz login usando o nome de usuário “USER1” e senha “PASSWORD1”
Então a mensagem de erro deve ser lançada
# 6) JUnit Runner:
Para executar o arquivo de recurso específico, o cucumber usa o JUnit Runner padrão e especifica as tags em @Cucumber . Opções Várias tags podem ser fornecidas usando vírgulas separadas. Aqui você pode especificar o caminho do relatório e o tipo de relatório que deseja gerar.
Exemplo de Junit Runner:
Da mesma forma, você pode dar instruções ao pepino para executar várias tags. O exemplo abaixo ilustra como usar várias tags no pepino para executar diferentes cenários.
# 7) Relatório do pepino:
O pepino gera seu próprio formato HTML. No entanto, relatórios melhores podem ser feitos usando Jenkins ou ferramenta de bambu. Os detalhes dos relatórios são abordados no próximo tópico sobre pepino.
Configuração do projeto do pepino:
A explicação detalhada da configuração do projeto do pepino está disponível separadamente no próximo tutorial. Consulte o Tutorial do Cucumber Parte 2 para obter mais informações sobre a configuração do projeto. Lembre-se de que não há nenhuma instalação de software extra necessária para o cucumber.
Implementação do arquivo de recurso:
Temos que implementar essas etapas em Java para testar os arquivos de recurso. É necessário criar uma classe que contenha as instruções fornecidas, when e then. O pepino usa suas anotações e todas as etapas são incorporadas a essas anotações (fornecidas, quando, então). Cada frase começa com “^” para que o pepino entenda o início da etapa. Da mesma forma, cada etapa termina com “$”. O usuário pode usar expressões regulares para passar dados de teste diferentes. As expressões regulares obtêm dados das etapas do recurso e passam para as definições das etapas.A ordem dos parâmetros depende de como eles são passados do arquivo de feições. Consulte o próximo tutorial para configuração do projeto e mapeamento entre arquivos de recursos e classes Java.
Exemplo:
O exemplo abaixo é para ilustrar como os arquivos de recursos podem ser implementados.
Neste exemplo, não usamos nenhuma API de selênio. Isso é apenas para mostrar como o pepino funciona como uma estrutura independente. Siga o próximo tutorial para integração de selênio com pepino.
Quando você executa a classe de corredor do pepino, o pepino começa a ler as etapas do arquivo de recurso. Por exemplo, quando você executa @smokeTest, o cucumber lê a etapa Feature e a declaração de cenário. Assim que o pepino encontrar a declaração Dada, a mesma declaração Dado será pesquisada para seus arquivos java. Se a mesma etapa for encontrada no arquivo java, então o pepino executa a função especificada para a mesma etapa, caso contrário, o pepino irá pular a etapa.
Conclusão
Neste tutorial, cobrimos os recursos de ferramenta pepino e seu uso em cenário de tempo real.
pepino é a ferramenta favorita para muitos projetos, pois é fácil de entender, legível e contém funcionalidades de negócios.
No próximo capítulo, abordaremos como configurar um pepino – projeto java e como integrar Selenium WebDriver com pepino.
Última atualização: 18 de janeiro de 2021 6h40