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.