Concombre - Caractéristiques

UNE Featurepeut être défini comme une unité autonome ou une fonctionnalité d'un projet. Prenons un exemple très courant de site de réseautage social. À quoi ressemble la fonctionnalité de ce produit / projet? Peu de fonctionnalités de base peuvent être déterminées comme -

  • Créez et supprimez l'utilisateur du site de réseau social.

  • Fonctionnalité de connexion utilisateur pour le site de réseautage social.

  • Partager des photos ou des vidéos sur le site de réseautage social.

  • Envoi d'une demande d'ami.

  • Logout.

À présent, il est clair que chaque fonctionnalité indépendante du produit testé peut être qualifiée de fonctionnalité lorsque nous parlons de concombre. C'est une bonne pratique plus tard, lorsque vous commencez les tests, qu'avant de dériver les scripts de test, nous devons déterminer les fonctionnalités à tester.

Une fonctionnalité contient généralement une liste de scénarios à tester pour cette fonctionnalité. Un fichier dans lequel nous stockons des fonctionnalités, une description des fonctionnalités et des scénarios à tester est appeléFeature File. Nous en verrons plus sur les fichiers de fonctionnalités dans le chapitre suivant.

Le mot clé pour représenter une fonctionnalité testée dans Gherkins est «Feature». La meilleure pratique suggérée est d'écrire une petite description de la fonctionnalité sous le titre de la fonctionnalité dans le fichier de fonctionnalités. Cela répondra également au besoin d'une bonne documentation.

Exemple

Feature - Fonctionnalité de connexion pour un site de réseautage social.

L'utilisateur doit pouvoir se connecter au site de réseautage social si le nom d'utilisateur et le mot de passe sont corrects.

L'utilisateur doit voir le message d'erreur si le nom d'utilisateur et le mot de passe sont incorrects.

L'utilisateur doit être dirigé vers la page d'accueil, si le nom d'utilisateur et le mot de passe sont corrects.

Fichiers d'entités

Le fichier, dans lequel sont écrits les tests de concombre, est appelé feature files. Il est conseillé de disposer d'un fichier de fonctionnalités distinct pour chaque fonctionnalité testée. L'extension du fichier de fonctionnalités doit être «.feature».

On peut créer autant de fichiers de fonctionnalités que nécessaire. Pour avoir une structure organisée, chaque entité doit avoir un fichier d'entité.

Par exemple -

Sr.Non Fonctionnalité Nom du fichier de fonctionnalités
1 Utilisateur en ligne userLogin.feature
2 Partagez le message sharePost.feature
3 Créer un compte createAccount.feature
4 Supprimer le compte deleteAccount.feature

La convention de dénomination à utiliser pour le nom de la fonction, le nom du fichier de la fonction dépend du choix de l'individu. Il n'y a pas de règle de base dans Cucumber sur les noms.

Un fichier d'entités simple se compose des mots-clés / parties suivants -

  • Feature - Nom de la fonction testée.

  • Description (facultatif) - Décrivez la fonctionnalité testée.

  • Scenario - Quel est le scénario de test.

  • Given - Condition préalable à l'exécution des étapes de test.

  • When - Condition spécifique qui doit correspondre pour exécuter l'étape suivante.

  • Then - Que se passe-t-il si la condition mentionnée dans WHEN est satisfaite.

Exemple

Feature - Connexion utilisateur sur le site de réseautage social.

L'utilisateur doit pouvoir se connecter au site de réseautage social lorsque le nom d'utilisateur et le mot de passe sont corrects.

L'utilisateur doit recevoir un message d'erreur lorsque le nom d'utilisateur et le mot de passe sont incorrects.

L'utilisateur doit être dirigé vers la page d'accueil si le nom d'utilisateur et le mot de passe sont corrects.

Outline - Fonctionnalité de connexion pour un site de réseautage social.

L'utilisateur donné accède à Facebook. Lorsque j'entre le nom d'utilisateur comme "<username>" et le mot de passe comme "<password>". Ensuite, la connexion devrait échouer.

| username  | password  |
| username1 | password1 |

* AND Le mot-clé est utilisé pour montrer la conjonction entre deux conditions. AND peut être utilisé avec tout autre mot-clé comme GIVEN, WHEN et THEN.

Il n'y a aucun détail logique écrit dans le fichier d'entités.

Définitions des étapes

Nous avons préparé notre fichier de fonctionnalités avec les scénarios de test définis. Cependant, ce n'est pas le travail complet accompli. Cucumber ne sait pas vraiment quel morceau de code doit être exécuté pour un scénario spécifique décrit dans un fichier d'entités.

Cela appelle la nécessité d'un fichier de définition d'étape intermédiaire. Le fichier de définition des étapes stocke le mappage entre chaque étape du scénario défini dans le fichier de caractéristiques avec un code de fonction à exécuter.

Ainsi, maintenant, lorsque Cucumber exécute une étape du scénario mentionné dans le fichier d'entités, il analyse le fichier de définition d'étape et détermine quelle fonction doit être appelée.

Exemple de fichier de définition d'étape

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(); 
}

Donc, avec chaque fonction, quel que soit le code que vous voulez exécuter à chaque étape de test (c'est-à-dire GIVEN / THEN / WHEN), vous pouvez l'écrire dans le fichier de définition d'étape. Assurez-vous que le code / la fonction a été défini pour chacune des étapes.

Cette fonction peut être des fonctions Java, où nous pouvons utiliser à la fois les commandes Java et Selenium afin d'automatiser nos étapes de test.