rest api testing with cucumber using bdd approach
Ce didacticiel explique les tests de l'API REST avec le concombre à l'aide de l'approche BDD. Il couvre l'installation du logiciel, la configuration du projet, l'exécution de TestScript et les rapports.
Dans cet article, nous verrons comment démarrer avec REST API Testing dans le style BDD avec le framework Cucumber.
Avant de plonger profondément dans le sujet, laissez-nous comprendre les concepts importants qui y sont impliqués.
Commençons!!
Ce que vous apprendrez:
comment ouvrir un fichier .bin windows 10
- Concepts importants de l'API REST
- Comment fonctionne le concombre?
- Configuration du framework de test de concombre sous Windows
- Conclusion
- lecture recommandée
Concepts importants de l'API REST
DU REPOS
Il s'agit d'un style d'architecture logicielle. La forme complète de REST est le transfert d'état de représentation . Il définit un ensemble de contraintes à utiliser pour créer des services Web. Les services Web conformes au style architectural REST sont appelés services Web RESTful.
Test de l'API REST
Les tests de l'API REST testent l'API à l'aide de 4 méthodes principales, à savoir POST, GET, PUT et DELETE.
Modèle REST
RestTemplate est une classe de framework Spring open source qui fournit un moyen pratique de tester les services Web reposants basés sur HTTP en fournissant des méthodes surchargées pour les méthodes HTTP.
Remarque : Pour en savoir plus sur le concept de test des API REST, vous pouvez vous référer à notre précédent tutoriel ' Test de l'API REST avec Spring RestTemplate et TestNG 'Où nous avons expliqué comment effectuer manuellement des tests d'API REST avec le concept de JSON.
BDD
BDD est l'approche du développement axé sur le comportement. C'est l'une des techniques de développement logiciel qui a émergé du développement piloté par les tests, c'est-à-dire du style TDD.
Le principe des tests BDD est que les cas de test sont écrits dans un langage naturel qui est également facilement lisible par les non-programmeurs.
Concombre
Cucumber est un outil qui prend en charge le développement axé sur le comportement
Comment fonctionne le concombre?
Voyons comment fonctionne le concombre.
Cucumber se compose de fichiers d'entités, de fichiers de définition d'étape et de classe Runner.
Fichiers d'entités
Les fichiers de fonctionnalités sont rédigés par votre Business Analyst ou peut-être votre Sponsor. Celles-ci sont rédigées au format en langage naturel avec des spécifications décrites et valident que l’application fonctionne conformément aux spécifications.
Ces spécifications ont plusieurs scénarios ou exemples mentionnés. Chaque scénario est une liste de certaines étapes à suivre par Cucumber.
Prenons un scénario dans lequel l'utilisateur souhaite se connecter au système.
Pour vérifier si cela fonctionne selon les spécifications, ce scénario doit être décrit. Voici les étapes à effectuer avec le résultat souhaité selon les spécifications.
Juste pour avoir une idée, voici à quoi ressemblera un exemple de scénario:
Scenario: Login to the system Given User launches Login screen When User enters username, password and submit Then Login Successful message appears
Vous pouvez voir que chaque scénario est une sorte de liste des étapes à suivre par Cucumber. Pour que Cucumber comprenne les scénarios, il doit suivre certaines règles de syntaxe de base, appelées Cornichon .
Fichiers de définition d'étape
Les fichiers de définitions d'étape mappent chaque étape Gherkin mentionnée dans un fichier d'entités au code d'implémentation. Cela permet à Cucumber d'exécuter l'action qui doit être effectuée par l'étape.
Le framework Cucumber prend en charge de nombreux langages de programmation pour écrire des définitions d'étape telles que Java, .net et Ruby.
Remarque : Dans l'article ' Test de l'API REST avec Spring RestTemplate et TestNG », Nous avons développé le projet de test TestNG avec le modèle Spring.
Maintenant, nous allons développer le cadre de test pour le même service REST et RestTemplate, mais en utilisant Cucumber pour un style de test de développement basé sur le comportement.
Commençons par la configuration de notre cadre de test d'automatisation avec Cucumber!
Configuration du framework de test de concombre sous Windows
# 1) Installation
(je) Nous allons utiliser Java pour le développement de la définition des étapes. Alors, téléchargez d'abord le programme d'installation JDK pour Windows à partir de Oracle et installez Java sur votre machine.
(ii) IDE (environnement de développement intégré) : J'ai utilisé Eclipse comme IDE pour le développement de mon Automation Test Suite. Vous pouvez le télécharger sur Éclipse
(iii) Obtenez le plug-in Eclipse pour Cucumber:
Suivez ces étapes dans Eclipse:
- Sélectionnez Aide -> Installer un nouveau logiciel dans l'option de menu.
- Entrer «Eclipse de concombre» dans la zone de texte de recherche.
- Clique sur le Installer bouton.
Installation du plug-in Cucumber dans Eclipse
- Continuez à cliquer sur le bouton Suivant jusqu'à ce que vous atteigniez le Vérifier la licence écran.
Enfin, cliquez sur la case à cocher pour accepter le contrat de licence et cliquez sur le Finir bouton. Cela terminera l'installation. Maintenant, redémarrez l'IDE Eclipse. Cela est nécessaire pour que l'installation du plug-in soit effective.
(iv) Pots de printemps: Comme nous allons utiliser la classe RestTemplate qui appartient au framework Spring, vous devez avoir des jars de framework Spring. Vous pouvez télécharger des pots de printemps à partir du Cadre de printemps et enregistrez-le dans le dossier local. Par exemple, C: / projectJar
(v) Jars simples JSON: Nous devons effectuer une analyse JSON. Par conséquent, nous utiliserons une API JSON simple et légère. Alors, téléchargez JSON-simple-1.1.jar et enregistrez-le dans C: / projectJar
logiciel gratuit de récupération de données windows 10
(vi) Pots de concombre:
Vous auriez besoin des pots de concombre suivants pour exécuter le projet Cucumber:
- noyau de concombre
- concombre-java
- concombre-JUnit
- concombre-JVM-deps
- déclaration de concombre
- cornichon
- JUnit
- mockito-tout
- couverture
- cucumber-HTML (Pour les rapports au format html)
Vous pouvez télécharger ces fichiers à l'aide du fichier pom.xml. Mais le moyen le plus simple consiste à télécharger ces fichiers jar à partir du Dépôt central et enregistrez ces fichiers jar dans le dossier local, Par exemple, C: / projectJar
Maintenant, avec cela, nous avons terminé toutes les installations nécessaires. Alors, créons notre projet BDD Test Automation.
# 2) Configuration du projet
- Créer un fichier -> Nouveau -> Projet Java -> Nommez-le comme ‘ CRUD_Cucumber ».
- Maintenant, créez un nouveau package Java démo.
- Configurez BuildPath du projet:
- Comme vous l'avez vu dans la section précédente, nous avons installé le plug-in Cucumber, téléchargé Spring et des fichiers JSON simples. Il est donc temps d’ajouter un chemin de compilation dans notre projet pour les utiliser. Pour cela, créez un lib dossier dans Dossier de CRUD_Cucumber et copiez maintenant tous les fichiers JAR du C: / projectJar vers lib / concombre, lib / printemps dossier.
- Faites un clic droit sur ' CRUD_Cucumber » -> Chemin de construction -> Configurer le chemin de construction.
- Clique sur le Bibliothèques languette.
- Cliquer sur Ajouter des pots bouton-> Sélectionnez tous les pots dans le lib / concombre dossier et lib / printemps dossier. Cela ajoutera tous les pots de concombre, les pots de printemps et les pots JSON-simple au chemin de construction de votre projet.
La structure de votre projet sera affichée comme suit dans l'explorateur de packages Eclipse.
Structure de package du projet de test
# 3) Fichier d'entités
Maintenant, construisons notre fichier de fonctionnalités DémoFeature.feature ayant la fonction Exécution d'opérations CRUD sur le service des employés.
Dans notre exemple, j'ai utilisé un exemple de service REST http://dummy.restapiexample.com/api.
Ce fichier de fonctionnalités décrit les scénarios pour effectuer les opérations CRUD, c'est-à-dire pour couvrir CRUD (Create-Read-Update-Delete).
- Définissons d'abord la fonctionnalité, dans notre cas, il s'agit de tester les méthodes CRUD, qui peuvent être décrites comme suit.
Feature: Test CRUD methods in Sample Employee REST API testing
- Maintenant, cela a différents scénarios comme créer, mettre à jour, lire et supprimer l'enregistrement d'employé. Alors jetez un œil au scénario POST:
Scenario: Add Employee record
- Décrivez les prérequis pour le test qui définit l'URL du service employé.
Given I Set POST employee service api endpoint
- Spécifiez l'étape de test réelle d'envoi d'une demande de publication.
When I Set request HEADER And Send a POST HTTP request
- Maintenant, décrivez la vérification du corps de la réponse.
Then I receive valid Response
Ainsi, dans notre fichier de fonctionnalités, le scénario ressemblera à ceci:
Scenario: Add Employee record Given I Set POST employee service api endpoint When I Set request HEADER And Send a POST HTTP request Then I receive valid Response
De même, vous pouvez écrire les scénarios restants comme indiqué ci-dessous.
DémoFeature.feature
# 4) Mise en œuvre de la définition des étapes
Pour les étapes de fonctionnalité utilisées dans les scénarios ci-dessus, vous devez écrire des implémentations par programme, dans ce cas, il s'agit de Java.
Une définition d'étape est une méthode écrite en Java ayant une expression. Il lie sa méthode à une ou plusieurs étapes. Ainsi, lorsque Cucumber exécute les étapes décrites dans un scénario du fichier d'entités, il recherche d'abord une correspondance définition de l'étape éxécuter.
Par exemple, lorsque la définition de l'étape pour Ajouter un employé à l'aide du POST peut être écrite comme suit.
Pour l'étape donnée, l'implémentation s'écrit comme suit:
@Given('^I Set POST employee service api endpoint$') public void setPostEndpoint(){ addURI = 'http://dummy.restapiexample.com/api/v1/create'; System.out.println('Add URL :'+addURI); }
De même, pour l'étape When, voici la méthode de définition:
@When ('^Send a POST HTTP request$') public void sendPostRequest(){ doublename_id = Math.random(); emp_name = 'zozo_'+name_id;//Just to avoid Duplicate Name entry String jsonBody'{'name':''+emp_name+'','salary':'123','age':'23'}'; System.out.println('
' + jsonBody); HttpEntityentity = new HttpEntity(jsonBody, headers); //POST Method to Add New Employee restTemplate = newRestTemplate (); response = restTemplate.postForEntity(addURI, entity, String.class); }
Maintenant, voici la partie de l'étape de vérification, c'est-à-dire l'implémentation de l'étape Then:
@Then ('^I receive valid Response$') Public void verifyPostResponse(){ responseBodyPOST = response.getBody(); // Write response to file responseBody = response.getBody().toString(); System.out.println('responseBody --->' + responseBody); // Get ID from the Response object employeeId = getEmpIdFromResponse(responseBody); System.out.println('empId is :' + employeeId); // Check if the added Employee is present in the response body. Assert.hasText(responseBody,employeeId); // Check if the status code is 201 Assert.isTrue(response.getStatusCode()==HttpStatus.OK); System.out.println('Employee is Added successfully employeeId:'+employeeId); }
Noter: Ici, nous utilisons la méthode RestTemplate pour envoyer une requête. Ceci est identique à la méthode utilisée dans « Test de l'API REST avec Spring RestTemplate et TestNG ' . Pour en savoir plus sur les méthodes de modèle de repos, vous pouvez vous référer au tutoriel.
Ainsi, votre définition d'étape ressemblera à ceci.
StepDefinition.java
Vous pouvez implémenter les définitions d'étape pour les scénarios restants Mettre à jour, Lire et Supprimer l'employé de la même manière.
# 5) Exécution des tests
Nous avons maintenant terminé notre tâche de développement de scénario et de script d’étape, alors exécutons nos tests. Pour cela, nous devons écrire une classe runner JUnit.
publicclassRunner { }
Ici, vous devez ajouter les annotations suivantes au-dessus du nom de la classe:
@RunWith (Cucumber.class): À exécuter en tant que classe de testeur pour Cucumber.
@CucumberOptions: Ici, vous spécifiez l'emplacement du fichier de fonctionnalités et l'emplacement du fichier de définition d'étape que le framework Cucumber doit examiner pendant l'exécution.
features='' glue=''
Brancher: Ceci est utilisé pour spécifier différentes options de mise en forme pour le rapport qui est généré en sortie.
Par conséquent, votre classe de coureurs ressemblera à ceci.
TestRunner.java
Faites un clic droit sur TestRunner.java et sélectionnez l'option « Exécuter en tant que test JUnit » . Cela affichera le résultat de l'exécution du test comme suit.
Sortie de l'onglet Junit
comment ouvrir un fichier dat sous windows
Vous verrez les messages suivants sur la console.
Sortie de la console
# 6) Rapports
Nous avons vu le résultat sur la console. Cependant, Cucumber fournit les résultats des tests dans un format HTML plus présentable qui peut être partagé avec vos parties prenantes.
Ouvert cible -> rapports de concombre dans le navigateur.
Remarque : Vous vous souvenez de la classe de coureurs Junit CucucmberOptions?
@CucumberOptions (features='Features',glue={'demo'},plugin={'pretty', 'html:target/cucumber-reports'})
Ici, le plugin est l'option que nous spécifions pour les rapports au format HTML avec le dossier.
target/cucumber-reports
Ouvrez maintenant la page target cucumber-reports index.html. La page de rapport est la page HTML où vous pouvez voir le nom de la fonctionnalité avec les scénarios qui ont été exécutés avec succès.
Ainsi, votre rapport ressemblera à ceci.
Résultat du test Cucumber au format Html
Conclusion
Pour conclure ce tutoriel, résumons ce que nous avons appris jusqu'à présent.
Nous avons vu toutes les étapes depuis le début pour mettre en place le cadre d'automatisation de test de l'API BDD Cucumber REST.
Dans ce processus, nous avons appris ce qui suit:
- Pour l'automatisation des tests, nous avons sélectionné Java comme langage de programmation.
- Nous avons choisi Cucumber comme cadre de test pour créer une suite de tests dans le cadre du test Behavior Driven Development.
- Pour envoyer des requêtes HTTP réelles au serveur, nous avons utilisé la classe RestTemplate du framework Spring.
- Pour consommer ces API, nous avons installé le plug-in Cucumber, téléchargé les fichiers jar des dépendances Cucumber, les jars Spring et JSON-simple jar pour l'API parser.
- Nous avons créé le fichier Feature pour décrire les scénarios en anglais simple, le fichier de définition d'étape pour mapper les étapes et la classe JUnit Runner pour exécuter le fichier Feature.
- Enfin, nous avons exécuté la classe Test Runner et vu le résultat sur la console dans un format HTML plus présentable et lisible.
En bref, cet article explique comment démarrer avec l'automatisation des tests de l'API REST avec Cucumber. Nous avons couvert la configuration de notre cadre d'automatisation des tests dès l'installation de tous les logiciels essentiels, la configuration du projet, le développement de TestScript jusqu'à l'exécution des tests et la visualisation des rapports générés.
Cela suffit pour que tout contrôle qualité d'automatisation démarre avec le cadre d'automatisation des tests. Mais si quelqu'un veut comprendre en détail comment fonctionne Cucumber en interne, comment fonctionne le langage Gherkin, alors il peut être exploré sur Concombre.
J'espère que vous êtes prêt à commencer avec le test de l'API REST dans le style BDD avec du concombre !!
lecture recommandée
- 10 meilleurs outils de test d'API en 2021 (outils de test d'API SOAP et REST)
- Meilleurs outils de test de logiciels 2021 (Outils d'automatisation des tests QA)
- Test de l'API REST avec Spring RestTemplate et TestNG
- Téléchargement de l'e-book 'Testing Primer'
- Les 20 questions et réponses les plus importantes pour les entretiens de test d'API
- Test SaaS: défis, outils et approche de test
- Simplifier les tests d'API avec Katalon Studio
- Test d'automatisation à l'aide de l'outil Cucumber et du sélénium - Tutoriel Selenium # 30