Test dautomatisation avec loutil Cucumber et Selenium – Tutoriel Selenium # 30

Dans le dernier tutoriel Selenium, nous vous avons présenté Selenium Grid, un environnement dexécution de test distribué pour accélérer lexécution dun test réussi.

Maintenant, à la fin de cette série complète de formations Selenium, nous apprenons les tests avancés de Selenium et les concepts associés.

Dans ce tutoriel et le prochain, nous vous présentera Cucumber – un cadre de développement basé sur le comportement (BDD) qui est utilisé avec Selenium pour effectuer des tests dacceptation.

Introduction au concombre

Un concombre est un outil basé sur le framework BDD (Behavior Driven Development) qui permet décrire des tests dacceptation pour lapplication web. Il permet lautomatisation de la validation fonctionnelle dans un format facilement lisible et compréhensible (comme un anglais simple) pour les analystes commerciaux, les développeurs, les testeurs, etc.

Les fichiers de fonctionnalités de concombre peuvent servir de bon document pour tous. Il existe de nombreux autres outils comme JBehave qui prennent également en charge le framework BDD. Initialement, Cucumber a été implémenté dans Ruby, puis étendu au framework Java. Les deux outils supportent JUnit natif.

Le développement piloté par le comportement est une extension du développement piloté par les tests et il est utilisé pour tester le système plutôt que pour tester le morceau de code en particulier. Nous discuterons plus en détail du BDD et du style décriture des tests BDD.

Cucumber peut être utilisé avec Selenium, Watir et Capybara etc. Cucumber prend en charge de nombreux autres langages comme Perl, PHP, Python, Net etc. ce tutoriel, nous allons nous concentrer sur Cucumber avec Java comme langage.

Concombre Basics

Afin de comprendre le concombre, nous devons connaître toutes les fonctionnalités de concombre et son utilisation.

# 1) Fichiers de fonctionnalités:

Les fichiers de fonctionnalités sont la partie essentielle de concombre qui est utilisée pour écrire des étapes dautomatisation de test ou des tests dacceptation. Cela peut être utilisé comme document en direct. Les étapes sont la spécification de lapplication. Tous les fichiers de fonctionnalités se terminent par lextension .feature.

Exemple de fichier de fonctionnalités:

Fonctionnalité: Fonctionnalité de connexion

Afin de garantir que la fonctionnalité de connexion fonctionne,
Je souhaite exécuter le test du concombre pour vérifier quil fonctionne.

Scénario: Fonctionnalité de connexion

Lutilisateur donné accède à SOFTWARETETINGHELP.COM
Lorsque lutilisateur se connecte en utilisant le nom dutilisateur en tant que « UTILISATEUR » « Et mot de passe » PASSWORD « 
Ensuite, la connexion devrait être réussie

Scénario: Fonctionnalité de connexion

Lutilisateur donné accède à SOFTWARETETINGHELP.COM
Lorsque lutilisateur se connecte en utilisant le nom dutilisateur comme » USER1 « et mot de passe » PASSWORD1 « 
Ensuite, un message derreur devrait être envoyé

# 2) Fonctionnalité:

Cela donne des informations sur la fonctionnalité commerciale de haut niveau (reportez-vous à la page précédente exemple) et le but de lapplication testée. Tout le monde devrait être en mesure de comprendre lintention du fichier de fonctionnalités en lisant la première étape de fonctionnalité. Cette partie est essentiellement brève.

# 3) Scénario:

Fondamentalement, un scénario représente une fonctionnalité particulière qui est en cours de test. En voyant le scénario, lutilisateur doit être en mesure de comprendre lintention derrière le scénario et en quoi consiste le test. Chaque scénario doit suivre donné, quand et ensuite formater. Ce langage est appelé « cornichon ».

  1. Étant donné: comme mentionné ci-dessus, donné spécifie les pré-conditions. Il sagit essentiellement dun état connu.
  2. Quand: Cest utilisé lorsquune action doit être effectuée. Comme dans lexemple ci-dessus, nous avons vu que lorsque lutilisateur tente de se connecter en utilisant le nom dutilisateur et le mot de passe, cela devient une action.
  3. Alors: le résultat attendu doit être placé ici. Par exemple: vérifiez que la connexion est réussie, que la navigation dans la page a réussi.
  4. Contexte: chaque fois quune étape est requise pour chaque scénario, ces étapes doivent être placées en arrière-plan. Par exemple: si un lutilisateur doit effacer la base de données avant chaque scénario, puis ces étapes peuvent être mises en arrière-plan.
  5. Et: et est utilisé pour combiner deux ou plusieurs même type daction.

Exemple:

Fonctionnalité: Fonctionnalité de connexion

Scénario: Fonctionnalité de connexion
Lutilisateur donné accède à SOFTWARETETINGHELP.COM
Lorsque lutilisateur se connecte en utilisant le nom dutilisateur comme « UTILISATEUR »
Et passwo rd comme « mot de passe »
La connexion devrait être réussie
Et la page daccueil devrait safficher

Exemple darrière-plan:

Arrière-plan:

Donné utilisateur connecté en tant quadministrateur de bases de données
Et toutes les valeurs indésirables sont effacées

# 4) Plan du scénario:

Les plans du scénario sont utilisés lorsque le même test doit être effectué avec des base de données. Prenons le même exemple. Nous devons tester la fonctionnalité de connexion avec plusieurs ensembles différents de nom dutilisateur et de mot de passe.

Fonctionnalité: Fonctionnalité de connexion

Afin de garantir le bon fonctionnement de la fonctionnalité de connexion,
Je veux exécuter le test de concombre pour vérifier quil fonctionne

Aperçu du scénario: Fonctionnalité de connexion

Lutilisateur donné accède à SOFTWARETESTINGHELP.COM
Lorsque lutilisateur se connecte en utilisant le nom dutilisateur comme < nom dutilisateur > et mot de passe < password >
La connexion devrait alors réussir

Exemples:
| nom dutilisateur | mot de passe |
| Tom | mot de passe1 |
| Harry | password2 |
| Jerry | password3 |

Remarque:

  1. Comme indiqué dans lexemple ci-dessus, les noms de colonne sont passés en paramètre à linstruction When.
  2. À la place du scénario, vous devez utiliser le plan du scénario.
  3. Des exemples sont utilisés pour transmettre différents arguments au format tabulaire. Les tuyaux verticaux sont utilisés pour séparer deux colonnes différentes. Un exemple peut contenir de nombreuses colonnes différentes.

# 5) Tags:

Concombre par défaut exécute tous les scénarios dans tous les fichiers de fonctionnalités. Dans les projets en temps réel, il peut y avoir des centaines de fichiers dentités qui ne sont pas tenus de sexécuter à tout moment.

Par exemple: Les fichiers dentités liés au test de fumée nont pas besoin dêtre exécutés tout le temps. Donc, si vous mentionnez une balise comme sans fumée dans chaque fichier de fonctionnalités qui est lié au test de fumée et exécute un test de concombre avec la balise @SmokeTest. Cucumber exécutera uniquement les fichiers de fonctionnalités spécifiques aux balises données. Veuillez suivre lexemple ci-dessous. Vous pouvez spécifier plusieurs balises dans un fichier dentités.

Exemple dutilisation de balises uniques:

@SmokeTest

Fonctionnalité: Fonctionnalité de connexion

Afin de massurer que la fonctionnalité de connexion fonctionne,
Je souhaite lancer le test concombre pour vérifier quil fonctionne.

Aperçu du scénario: fonctionnalité de connexion

Lutilisateur donné accède à SOFTWARETESTINGHELP. COM
Lorsque lutilisateur se connecte en utilisant le nom dutilisateur comme < nom dutilisateur > et mot de passe < password >
La connexion devrait alors réussir

Exemple dutilisation de plusieurs balises:

Comme le montre lexemple ci-dessous, même fichier dentités peut être utilisé pour les scénarios de test de fumée ainsi que pour le scénario de test de connexion. Lorsque vous avez lintention dexécuter votre script pour un test de fumée, utilisez @SmokeTest. De même, lorsque vous souhaitez que votre script sexécute pour le test de connexion, utilisez la balise @LoginTest.

Nimporte quel nombre de balises peut être mentionné pour un fichier dentités ainsi que pour un scénario.

@SmokeTest @ LoginTest

Fonctionnalité: Fonctionnalité de connexion

Afin de massurer que la fonctionnalité de connexion fonctionne,
Je souhaite exécuter le test de concombre pour vérifier quil fonctionne

Aperçu du scénario: Fonctionnalité de connexion

Lutilisateur donné accède à SOFTWARETETINGHELP.COM
Lorsque lutilisateur se connecte en utilisant le nom dutilisateur en tant que < nom dutilisateur > et mot de passe < mot de passe >
Ensuite, la connexion devrait réussir

De même, vous pouvez spécifiez des balises pour exécuter le scénario spécifique dans un fichier dentités. Veuillez consulter lexemple ci-dessous pour exécuter un scénario spécifique.

Fonctionnalité: Fonctionnalité de connexion

Afin de massurer que la fonctionnalité de connexion fonctionne,
Je souhaite exécuter le test du concombre pour vérifier quil est travail

@positiveScenario
Scénario: Fonctionnalité de connexion

Lutilisateur donné accède à SOFTWARETETINGHELP.COM
Lorsque lutilisateur se connecte en utilisant le nom dutilisateur comme « USER » et le mot de passe « PASSWORD »
Ensuite, la connexion devrait réussir

@negaviveScenario
Scénario: Fonctionnalité de connexion

Lutilisateur donné accède à SOFTWARETETINGHELP.COM
Lorsque lutilisateur se connecte en utilisant le nom dutilisateur comme « USER1 » et mot de passe « PASSWORD1 »
Ensuite, un message derreur devrait être lancé

# 6) JUnit Runner:

Pour exécuter le fichier de fonctionnalités spécifiques, le concombre utilise le standard JUnit Runner et spécifie les balises dans @Cucumber . Options. Plusieurs balises peuvent être données en utilisant des virgules séparées. Ici, vous pouvez spécifier le chemin du rapport et le type de rapport que vous souhaitez générer.

Exemple de Junit Runner:

De même, vous pouvez donner des instructions à concombre pour exécuter plusieurs balises. Lexemple ci-dessous montre comment utiliser plusieurs balises dans le concombre pour exécuter différents scénarios.

# 7) Rapport sur le concombre:

Le concombre génère son propre format HTML. Cependant, de meilleurs rapports peuvent être réalisés en utilisant Jenkins ou un outil en bambou. Les détails des rapports sont traités dans la rubrique suivante de concombre.

Configuration du projet Cucumber:

Une explication détaillée de la configuration du projet concombre est disponible séparément dans le prochain tutoriel. Veuillez vous référer au tutoriel Cucumber Part2 pour plus dinformations sur la configuration du projet. Noubliez pas quaucune installation de logiciel supplémentaire nest requise pour cucumber.

Implémentation du fichier de fonctionnalités:

Nous devons implémenter ces étapes en Java afin de tester les fichiers de fonctionnalités. Besoin de créer une classe qui contient les instructions données, quand et ensuite. Cucumber utilise ses annotations et toutes les étapes sont intégrées dans ces annotations (données, quand, alors). Chaque phrase commence par « ^ » afin que concombre comprenne le début de létape. De même, chaque étape se termine par « $ ». Lutilisateur peut utiliser des expressions régulières pour transmettre différentes données de test. Les expressions régulières prennent les données des étapes de fonctionnalité et passent aux définitions détape.Lordre des paramètres dépend de la manière dont ils sont transmis à partir du fichier dentités. Veuillez vous reporter au didacticiel suivant pour la configuration du projet et le mappage entre les fichiers dentités et les classes Java.

Exemple:

Lexemple ci-dessous illustre comment les fichiers dentités peuvent être implémentés.

Dans cet exemple, nous navons utilisé aucune API sélénium. Il sagit simplement de montrer comment le concombre fonctionne en tant que cadre autonome. Veuillez suivre le prochain tutoriel pour lintégration du sélénium avec le concombre.

Lorsque vous exécutez le cours de coureur de concombre, le concombre commencera à lire les étapes du fichier de fonctionnalités. Par exemple, lorsque vous exécutez @smokeTest, le concombre lira létape de la fonctionnalité et donné une déclaration de scénario. Dès que le concombre trouve la déclaration donnée, la même instruction donnée sera recherchée pour vos fichiers java. Si la même étape est trouvée dans le fichier java, cucumber exécute la fonction spécifiée pour la même étape, sinon concombre sautera létape.

Conclusion

Dans ce tutoriel, nous avons couvert les fonctionnalités de loutil concombre et son utilisation dans un scénario en temps réel.
Le concombre est un outil préféré pour de nombreux projets car il est facile à comprendre, lisible et contient des fonctionnalités commerciales.

Dans le chapitre suivant, nous aborderons comment mettre en place un projet cucumber – java et comment intégrer Selenium WebDriver avec Cucumber.

Dernière mise à jour: 18 janvier 2021 6h40

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *