Pepino - Características

UMA Featurepode ser definida como uma unidade autônoma ou funcionalidade de um projeto. Vejamos um exemplo muito comum de site de rede social. Como é o recurso deste produto / projeto? Poucos recursos básicos podem ser determinados como -

  • Crie e remova o usuário do site de rede social.

  • Funcionalidade de login do usuário para o site de rede social.

  • Compartilhamento de fotos ou vídeos no site de rede social.

  • Enviando um pedido de amizade.

  • Logout.

A esta altura, está claro que cada funcionalidade independente do produto em teste pode ser denominada como um recurso quando falamos sobre Pepino. É uma prática recomendada mais tarde, ao iniciar o teste, que antes de derivar os scripts de teste, devemos determinar os recursos a serem testados.

Um recurso geralmente contém uma lista de cenários a serem testados para aquele recurso. Um arquivo no qual armazenamos recursos, descrição sobre os recursos e cenários a serem testados é conhecido comoFeature File. Veremos mais sobre os arquivos de recursos no capítulo seguinte.

A palavra-chave para representar um recurso em teste no Gherkins é “Recurso”. A melhor prática sugerida é escrever uma pequena descrição do recurso abaixo do título do recurso no arquivo do recurso. Isso atenderá também à necessidade de uma boa documentação.

Exemplo

Feature - Funcionalidade de login para um site de rede social.

O usuário deve conseguir fazer login no site de rede social se o nome de usuário e a senha estiverem corretos.

O usuário deve ver a mensagem de erro se o nome de usuário e a senha estiverem incorretos.

O usuário deve navegar até a página inicial, se o nome de usuário e a senha estiverem corretos.

Arquivos de recursos

O arquivo, no qual os testes do Cucumber são escritos, é conhecido como feature files. É aconselhável que haja um arquivo de recurso separado, para cada recurso em teste. A extensão do arquivo do recurso precisa ser “.feature”.

Pode-se criar quantos arquivos de feições forem necessários. Para ter uma estrutura organizada, cada recurso deve ter um arquivo de recurso.

Por exemplo -

Sr. Não Característica Nome do arquivo de recurso
1 Login de usuário userLogin.feature
2 Compartilhe a postagem sharePost.feature
3 Criar Conta createAccount.feature
4 Deletar conta deleteAccount.feature

A convenção de nomenclatura a ser usada para o nome do recurso, o nome do arquivo do recurso depende da escolha do indivíduo. Não há regra básica em Cucumber sobre nomes.

Um arquivo de recurso simples consiste nas seguintes palavras-chave / partes -

  • Feature - Nome do recurso em teste.

  • Description (opcional) - Descreva sobre o recurso em teste.

  • Scenario - Qual é o cenário de teste.

  • Given - Pré-requisito antes que as etapas de teste sejam executadas.

  • When - Condição específica que deve corresponder para executar a próxima etapa.

  • Then - O que deve acontecer se a condição mencionada em QUANDO for satisfeita.

Exemplo

Feature - Login do usuário no site de rede social.

O usuário deve ser capaz de fazer login no site da rede social quando o nome de usuário e a senha estiverem corretos.

O usuário deve receber uma mensagem de erro quando o nome de usuário e a senha estiverem incorretos.

O usuário deve navegar até a página inicial se o nome de usuário e a senha estiverem corretos.

Outline - Funcionalidade de login para um site de rede social.

O usuário fornecido navega para o Facebook. Quando eu insiro o nome de usuário como "<username>" e a senha como "<senha>". Então, o login deve ser malsucedido.

| username  | password  |
| username1 | password1 |

* AND palavra-chave é usada para mostrar a conjunção entre duas condições. AND pode ser usado com qualquer outra palavra-chave, como GIVEN, WHEN e THEN.

Não há detalhes lógicos escritos no arquivo de feição.

Definições de etapas

Temos nosso arquivo de recursos pronto com os cenários de teste definidos. No entanto, este não é o trabalho completo realizado. Cucumber realmente não sabe qual pedaço de código deve ser executado para qualquer cenário específico descrito em um arquivo de recurso.

Isso chama a necessidade de um arquivo de definição de etapa intermediário. O arquivo de definição de etapas armazena o mapeamento entre cada etapa do cenário definido no arquivo de característica com um código de função a ser executado.

Portanto, agora, quando o Cucumber executa uma etapa do cenário mencionado no arquivo de característica, ele verifica o arquivo de definição da etapa e descobre qual função deve ser chamada.

Exemplo de arquivo de definição de etapa

public void goToFacebook() { 
   driver = new FirefoxDriver(); 
   driver.navigate().to("https://www.facebook.com/"); 
} 
@When "^user logs in using Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$"
public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
   driver.findElement(By.id("email")).sendKeys(arg1);
   driver.findElement(By.id("pass")).sendKeys(arg2);
   driver.findElement(By.id("u_0_v")).click(); 
} 
@Then"^login should be unsuccessful$" 
public void validateRelogin() { 
   if(driver.getCurrentUrl().equalsIgnoreCase(
      "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
         System.out.println("Test Pass");
   } else { 
      System.out.println("Test Failed"); 
   } 
   driver.close(); 
}

Assim, com cada função, qualquer código que você deseja executar com cada etapa de teste (ou seja, DADO / ENTÃO / QUANDO), você pode escrevê-lo no arquivo de definição de etapa. Certifique-se de que o código / função foi definido para cada uma das etapas.

Esta função pode ser funções Java, onde podemos usar comandos Java e Selenium para automatizar nossas etapas de teste.