automation testing using cucumber tool
Dans le dernier tutoriel Selenium, nous vous avons présenté Grille de sélénium lequel est à exécution de test distribuée environnement pour accélérer l'exécution d'un test réussi .
Maintenant, à la fin de cette série complète de formations Selenium, nous apprenons Test de sélénium et concepts connexes.
Dans ce didacticiel et le prochain, nous vous présenterons le Concombre - un Cadre de développement basé sur le comportement (BDD) qui est utilisé avec Selenium pour effectuer des tests d'acceptation.
Ce que vous apprendrez:
- Introduction au concombre
- Notions de base sur le concombre
- Configuration du projet concombre:
- Conclusion
- lecture recommandée
Introduction au concombre
Un concombre est un outil basé sur le framework BDD (Behavior Driven Development) qui est utilisé pour écrire des tests d'acceptation pour l'application Web. Il permet l'automatisation de la validation fonctionnelle dans un format facilement lisible et compréhensible (comme un anglais simple) pour les analystes d'affaires, les développeurs, les testeurs, etc.
Les fichiers de caractéristiques 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 prennent en charge 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 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. Dans ce tutoriel, nous nous concentrerons sur Cucumber avec Java comme langage.
Notions de base sur le concombre
Afin de comprendre le concombre, nous devons connaître toutes les caractéristiques du concombre et son utilisation.
quelles sont les phases de sdlc
# 1) Fichiers de fonctionnalités:
Les fichiers de caractéristiques sont la partie essentielle de concombre qui est utilisée pour écrire les étapes d'automatisation des tests ou les tests d'acceptation. Cela peut être utilisé comme document en direct. Les étapes sont la spécification de l'application. Tous les fichiers de fonctionnalités se terminent par l'extension .feature.
Exemple de fichier de fonctionnalités:
Fonctionnalité : Fonctionnalité de connexion
Afin de garantir le bon fonctionnement de la fonctionnalité de connexion,
Je veux exécuter le test du concombre pour vérifier qu'il fonctionne
Scénario : Fonctionnalité de connexion
Donné l'utilisateur accède à SOFTWARETETINGHELP.COM
Lorsque l'utilisateur se connecte en utilisant le nom d'utilisateur comme «UTILISATEUR» et le mot de passe «PASSWORD»
Puis la connexion doit réussir
Scénario : Fonctionnalité de connexion
Donné l'utilisateur accède à SOFTWARETETINGHELP.COM
Lorsque l'utilisateur se connecte en utilisant le nom d'utilisateur comme «USER1» et le mot de passe «PASSWORD1»
Puis le message d'erreur doit être émis
# 2) Caractéristique:
T Il donne des informations sur la fonctionnalité métier de haut niveau (reportez-vous à l'exemple précédent) et le but de l'application testée. Tout le monde devrait être en mesure de comprendre l'intention 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, l'utilisateur doit être en mesure de comprendre l'intention derrière le scénario et en quoi consiste le test. Chaque scénario doit suivre donné, quand et ensuite formater. Cette langue est appelée «cornichon».
- Donné: Comme mentionné ci-dessus, donné spécifie les conditions préalables. C'est fondamentalement un état connu.
- Lorsque : Ceci est utilisé lorsqu'une action doit être effectuée. Comme dans l'exemple ci-dessus, nous avons vu que lorsque l'utilisateur tente de se connecter en utilisant le nom d'utilisateur et le mot de passe, cela devient une action .
- Puis: Le résultat attendu ou le résultat doit être placé ici. Pour l'instance: vérifiez que la connexion est réussie, navigation réussie dans la page.
- Fond: Chaque fois qu'une étape est requise dans chaque scénario, ces étapes doivent être placées en arrière-plan. Par exemple: si un utilisateur a besoin d'effacer la base de données avant chaque scénario, ces étapes peuvent être mises en arrière-plan.
- Et : Et est utilisé pour combiner deux ou plusieurs même type d'action.
Exemple:
Fonctionnalité : Fonctionnalité de connexion
Scénario : Fonctionnalité de connexion
Donné l'utilisateur accède à SOFTWARETETINGHELP.COM
Lorsque l'utilisateur se connecte en utilisant le nom d'utilisateur en tant que «UTILISATEUR»
Et mot de passe comme «mot de passe»
Puis la connexion doit réussir
Et La page d'accueil doit être affichée
comment passer un tableau comme paramètre en java
Exemple de contexte:
Fond:
Donné utilisateur connecté en tant qu'administrateur de bases de données
Et toutes les valeurs indésirables sont effacées
# 4) Aperçu du scénario:
Les contours de scénario sont utilisés lorsque le même test doit être effectué avec un ensemble de données différent. Prenons le même exemple. Nous devons tester la fonctionnalité de connexion avec plusieurs ensembles différents de nom d'utilisateur 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 du concombre pour vérifier qu'il fonctionne
Aperçu du scénario : Fonctionnalité de connexion
Donné l'utilisateur accède à SOFTWARETESTINGHELP.COM
Lorsque l'utilisateur se connecte en utilisant le nom d'utilisateur comme< Nom d'utilisateur > et mot de passe< le mot de passe >
Puis la connexion doit réussir
Exemples:
| nom d'utilisateur | mot de passe |
| Tom | mot de passe1 |
| Harry | mot de passe2 |
| Jerry | mot de passe3 |
Remarque:
- Comme indiqué dans l'exemple ci-dessus, les noms de colonne sont passés en paramètre à Lorsque déclaration.
- À la place du scénario, vous devez utiliser le plan du scénario.
- Des exemples sont utilisés pour passer 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) Mots clés:
Cucumber exécute par défaut 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 d'entités qui ne sont pas tenus de s'exécuter à tout moment.
Par exemple : Les fichiers de fonctionnalités liés au test de fumée ne doivent pas ê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 le test de concombre avec la balise @SmokeTest. Cucumber exécutera uniquement les fichiers de fonctionnalités spécifiques aux balises données. Veuillez suivre l'exemple ci-dessous. Vous pouvez spécifier plusieurs balises dans un fichier d'entités.
Exemple d'utilisation de balises uniques:
@Test de fumée
Fonctionnalité : Fonctionnalité de connexion
Afin de garantir le bon fonctionnement de la fonctionnalité de connexion,
Je veux exécuter le test du concombre pour vérifier qu'il fonctionne
Aperçu du scénario : Fonctionnalité de connexion
Donné l'utilisateur accède à SOFTWARETESTINGHELP.COM
Lorsque l'utilisateur se connecte en utilisant le nom d'utilisateur comme< Nom d'utilisateur > et mot de passe< le mot de passe >
Puis la connexion doit réussir
Exemples:
| nom d'utilisateur | mot de passe |
| Tom | mot de passe1 |
| Harry | mot de passe2 |
| Jerry | mot de passe3 |
Exemple d'utilisation de plusieurs balises:
Comme indiqué dans l'exemple ci-dessous, le même fichier de fonctionnalité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 l'intention d'exécuter votre script pour un test de fumée, utilisez @SmokeTest. De même, lorsque vous souhaitez que votre script s'exécute pour le test de connexion, utilisez la balise @LoginTest.
N'importe quel nombre de balises peut être mentionné pour un fichier d'entités ainsi que pour un scénario.
@SmokeTest @LoginTest
Fonctionnalité : Fonctionnalité de connexion
Afin de garantir le bon fonctionnement de la fonctionnalité de connexion,
Je veux exécuter le test du concombre pour vérifier qu'il fonctionne
Aperçu du scénario : Fonctionnalité de connexion
Donné l'utilisateur accède à SOFTWARETETINGHELP.COM
Lorsque l'utilisateur se connecte en utilisant le nom d'utilisateur et le mot de passe
Puis la connexion doit réussir
Exemples:
| nom d'utilisateur | mot de passe |
| Tom | mot de passe1 |
| Harry | mot de passe2 |
| Jerry | mot de passe3 |
De même, vous pouvez spécifier des balises pour exécuter le scénario spécifique dans un fichier d'entités. Veuillez vérifier l'exemple ci-dessous pour exécuter un scénario spécifique.
Fonctionnalité : Fonctionnalité de connexion
Afin de garantir le bon fonctionnement de la fonctionnalité de connexion,
Je veux exécuter le test du concombre pour vérifier qu'il fonctionne
@positiveScenario
Scénario : Fonctionnalité de connexion
Donné l'utilisateur accède à SOFTWARETETINGHELP.COM
Lorsque l'utilisateur se connecte en utilisant le nom d'utilisateur comme «UTILISATEUR» et le mot de passe «PASSWORD»
Puis la connexion doit réussir
@negaviveScenario
Scénario : Fonctionnalité de connexion
Donné l'utilisateur accède à SOFTWARETETINGHELP.COM
Lorsque l'utilisateur se connecte en utilisant le nom d'utilisateur comme «USER1» et le mot de passe «PASSWORD1»
Puis le message d'erreur devrait jeter
# 6) JUnit Runner:
Pour exécuter le fichier de fonctionnalités spécifiques, cucumber utilise JUnit Runner standard et spécifie des balises dans @Cucumber. Options. Plusieurs balises peuvent être attribué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:
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith; @RunWith (Cucumber.class) @ Cucumber.Options (format = {'SimpleHtmlReport: report / smokeTest.html'}, tags = {'@ smokeTest'}) Classe publique JUnitRunner {} De même, vous pouvez donner des instructions au concombre pour exécuter plusieurs balises. L'exemple ci-dessous illustre comment utiliser plusieurs balises dans le concombre pour exécuter différents scénarios.
import cucumber.api.junit.Cucumber; import org.junit.runner.RunWith; @RunWith(Cucumber.class) @Cucumber.Options(format={'SimpleHtmlReport:report/smokeTest.html'},tags={'@smokeTest',”@LoginTest”}) Public class JUnitRunner { }
# 7) Rapport sur le concombre:
Cucumber 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 le sujet suivant du concombre.
Configuration du projet concombre:
Une explication détaillée de la configuration du projet de concombre est disponible séparément dans le prochain tutoriel. Veuillez vous référer au Tutoriel Cucumber Part2 pour plus d'informations sur la configuration du projet. N'oubliez pas qu'aucune installation de logiciel supplémentaire n'est requise pour le concombre.
Implémentation du fichier d'entités:
logiciel d'extraction de DVD gratuit pour Windows 10
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 «^» pour que concombre comprenne le début de l'étape. De même, chaque étape se termine par «$». L'utilisateur 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. L'ordre des paramètres dépend de la manière dont ils sont transmis à partir du fichier d'entités. Veuillez vous reporter au didacticiel suivant pour la configuration du projet et le mappage entre les fichiers d'entités et les classes Java.
Exemple:
L'exemple ci-dessous illustre la manière dont les fichiers de fonctionnalités peuvent être implémentés.
Dans cet exemple, nous n'avons utilisé aucune API sélénium. Il s'agit simplement de montrer comment le concombre fonctionne en tant que cadre autonome. Veuillez suivre le prochain tutoriel pour l'intégration du sélénium avec le concombre.
public class LoginTest { @Given('^user navigates to SOFTWARETETINGHELP.COM$') public void navigatePage() { system.out.println(“Cucumber executed Given statement”); } @When('^user logs in using Username as '(.*)' and Password '(.*)'$') public void login(String usename,String password) { system.out.println(“Username is:”+ usename); system.out.println(“Password is:”+ password); } @When('^click the Submit button$') public void clickTheSubmitButton() { system.out.println(“Executing When statement”) } @Then('^Home page should be displayed$') public void validatePage() { system.out.println(“Executing Then statement”) } @Then('^login should be successful$') public void validateLoginSuccess() { system.out.println(“Executing 2nd Then statement”) } }
Lorsque vous exécutez la classe de coureur de concombre, le concombre commence à lire les étapes du fichier de fonctionnalités. Par exemple, lorsque vous exécutez @smokeTest, le concombre lira Fonctionnalité étape et Donné une déclaration de scénario . Dès que le concombre trouve Compte tenu de la déclaration, même Donné instruction sera recherchée pour vos fichiers java. Si la même étape est trouvée dans le fichier java, concombre exécute la fonction spécifiée pour la même étape, sinon le concombre sautera l'étape.
Conclusion
Dans ce didacticiel, nous avons couvert les fonctionnalités de l'outil concombre et son utilisation dans un scénario en temps réel.
Le concombre est un outil très apprécié pour de nombreux projets car il est facile à comprendre, lisible et contient des fonctionnalités commerciales.
Dans le chapitre suivant , nous verrons comment mettre en place un projet cucumber - java et comment intégrer Selenium WebDriver avec Cucumber.
lecture recommandée
- Tutoriel Cucumber Selenium: Intégration Cucumber Java Selenium WebDriver
- 30+ meilleurs tutoriels sur Selenium: Apprenez le sélénium avec de vrais exemples
- Tutoriel Selenium Grid: configuration et exemple de test de navigateur croisé
- Spock pour l'intégration et les tests fonctionnels avec sélénium
- Utilisation de Maven Build Automation Tool et Maven Project Setup for Selenium - Selenium Tutorial # 24
- Introduction à Selenium WebDriver - Tutoriel Selenium # 8
- Tutoriels Eclipse détaillés pour les débutants
- Tutoriel sur l'outil de test d'accessibilité WAVE