Tutoriel sur les tests d'API REST Assured

⚡ Résumé intelligent

REST Assured s'impose comme une JavaBibliothèque open source basée sur [nom de la bibliothèque] qui simplifie les tests d'automatisation des API REST. Ce framework permet aux ingénieurs qualité de valider des réponses JSON complexes, des en-têtes, des codes d'état et des temps de réponse grâce à une syntaxe BDD claire et une intégration Maven transparente.

  • ⚙️ Foundation Installer: Configurer Java, Eclipseet les dépendances Maven avant d'écrire votre premier script de test REST Assured.
  • (I.e. Maîtrise de la syntaxe : Appliquez le modèle Given-When-Then pour exprimer les requêtes API dans un format lisible et adapté aux besoins des entreprises.
  • 🔍 Validation granulaire : Extract corps de réponse, codes d'état, en-têtes, type de contenu et synchronisation à travers une chaîne fluide.
  • 🧩 Navigation dans le chemin : Parcourir des valeurs JSON imbriquées en utilisant la notation pointée similaire à XPath dans Selenium pour des affirmations précises.
  • 🛡️ Intégration CI/CD : Combinez REST Assured avec TestNG or JUnit pour intégrer directement les vérifications d'API dans les pipelines de construction automatisés.

Tutoriel REST Assured

Qu’est-ce que Rassurez-vous ?

Repos assuré vous permet de tester les API REST à l'aide des bibliothèques Java et s'intègre bien à Maven. Il dispose de techniques de correspondance très efficaces, donc affirmer les résultats attendus est également assez simple. Rest Assured dispose de méthodes pour récupérer les données de presque toutes les parties de la demande et de la réponse, quelle que soit la complexité des structures JSON.

Pour la communauté des tests, les tests d’automatisation des API sont encore nouveaux et de niche. Les complexités de JSON maintiennent les tests d'API inexplorés. Mais cela ne le rend pas moins important dans le processus de test. Le framework Rest Assured.io l'a rendu très simple en utilisant les bases de Java, ce qui en fait une chose très souhaitable à apprendre.

Pourquoi avoir besoin de Rest-Assuré ?

Imaginez que vous ouvrez votre Google Consultez la carte et recherchez l'endroit où vous souhaitez vous rendre. Vous voyez immédiatement les restaurants à proximité, les options de transport proposées par les principaux opérateurs de transport et de nombreux choix à portée de main. Nous savons tous que ce ne sont pas des options. Google produits, alors comment ça marche Google Comment les afficher ? Cela utilise les API exposées de ces fournisseurs. Or, si l’on vous demande de tester ce type de configuration, avant même que l’interface utilisateur ne soit conçue ou en cours de développement, tester les API devient primordial. Les tester de manière répétée avec différentes combinaisons de données en fait un cas d’utilisation idéal pour l’automatisation.

Auparavant, les équipes utilisaient des langages dynamiques tels que Groovy et Ruby pour y parvenir, ce qui s'avérait complexe. C'est pourquoi les tests d'API n'ont pas été largement explorés par les testeurs fonctionnels.

Cependant, avec Rest Assured, les tests automatisés d'API et l'envoi de requêtes HTTPS simples avec des personnalisations conviviales deviennent simples si l'on possède des connaissances de base en la matière. JavaRest Assured facilite la compréhension des tests d'API et des tests d'intégration. Il offre une grande fiabilité côté serveur, permettant aux testeurs front-end de se concentrer sur l'interface utilisateur et les opérations côté client. Open source, Rest Assured s'enrichit constamment de nouvelles méthodes et bibliothèques, ce qui en fait un excellent choix pour l'automatisation des API.

#1 Meilleur GLOBALTest d'application global
9.8/ 10
★★★★★
Obtenez une démo gratuite
PractiTest
9.5/ 10
★★★★★
Visiter PractiTest
Testiny
9.3/ 10
★★★★★
Visiter Testiny
Meilleur pourTests participatifs et assurance qualitéGestion des tests ; Petites et moyennes équipes d'assurance qualité
Élément clé✓Tests d'intégration tiers✓Gestion centralisée des tests✓Cas de test manuels et automatisés
intégrations✓Jira, Slack, TestRail✓Jira, Jenkins, Slack✓Jira, GitHub, GitLab
Essai gratuitTest GratuitEssai Gratuit de 14 joursTest Gratuit
Obtenez une démo gratuiteVisiter PractiTestVisiter Testiny

REST Assured vs Postman: Principales différences

À la fois REST Assured et Postman Les outils de validation des API REST sont tous adaptés à une étape différente du cycle de vie des tests. Le choix de l'outil approprié dépend des compétences de votre équipe, de la portée de votre projet et de vos besoins d'intégration.

Aspect Repos assuré Postman
Type Java bibliothèque pour l'automatisation basée sur le code Client API basé sur une interface graphique avec prise en charge des scripts
Meilleur cas d'utilisation pipelines d'intégration continue et suites de régression Exploration manuelle et vérifications rapides de l'API
Exigence de compétence Core Java connaissances requises Programmation minimale ; utilise JavaExtraits de script
Reporting S'intègre avec TestNG, JUnitet Allure Résumés d'exécution intégrés via l'interface de ligne de commande Newman

De nombreuses équipes utilisent Postman pour les premiers prototypesping et passez à REST Assured pour la régression automatisée une fois que l'API est prête.tract se stabilise.

Comment configurer Rest Assured.io avec Eclipse

La mise en place de REST Assured implique trois dépendances essentielles : JavaVous aurez besoin d'un IDE et de Maven. Suivez les étapes ci-dessous pour éviter les erreurs de compilation ultérieures.

Étape 1) Installez Java. Référez-vous à ceci guide

Étape 2) Téléchargez un IDE pour commencer : éclipse

Étape 3) Installez Maven et configurez votre éclipse. Référer ici.

Configuration Soyez assuré

  1. Créez un projet Maven dans votre IDE. Nous utilisons IntelliJ, mais la structure sera similaire quel que soit l'IDE que vous utilisez.
  2. Ouvrez votre fichier POM.xml.

Structure du projet pour la configuration Maven REST Assured

Structure de projet pour un espace de travail Maven REST Assured

Pour Soyez assuré.io : Pour Java version < 9 utilisateurs :

Ajoutez la dépendance ci-dessous à votre POM.xml :

<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>xml-path</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>

Pour Soyez assuré.io : Pour Java Utilisateurs de la version 9 et suivantes :

<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured-all</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>

Dépannage:

Si vous rencontrez des erreurs et que vous n'êtes pas sûr que les dépendances aient été téléchargées correctement, suivez ces étapes :

  1. Effectuez une compilation Maven pour importer toutes les dépendances. Vous trouverez de l'aide sur la configuration de Maven sur Guru99.
  2. Si les erreurs persistent, exécutez un nettoyage Maven suivi d'une installation Maven. La compilation devrait se terminer sans erreur.
  3. Ajoutez les importations ci-dessous à votre Java Vérifiez la classe et confirmez qu'il n'y a pas d'erreurs de compilation.
import io.restassured.RestAssured.*;
import io.restassured.matcher.RestAssuredMatchers.*;
import org.hamcrest.Matchers.*;

Premier script simple Rassurez-vous

Les dépendances étant désormais en place, vous pouvez écrire votre premier script. Le framework suit une approche de développement pilotée par le comportement (BDD) dont le style est très proche de l'anglais.

syntaxe:

La syntaxe de Rest Assured.io est la partie la plus lisible du framework, car elle ressemble beaucoup à celle de BDD et est compréhensible.

Given().
        param("x", "y").
        header("z", "w").
when().
Method().
Then().
        statusCode(XXX).
        body("x", "y", equalTo("z"));

Explication:

Code Explication
Donné() Le mot-clé « Given » permet de définir un arrière-plan. Vous pouvez y transmettre les en-têtes de requête, les paramètres de requête et de chemin, le corps de la requête et les cookies. Ces éléments sont facultatifs s'ils ne sont pas nécessaires à la requête.
Quand() Le mot-clé « quand » marque la condition de départ de votre scénario. Par exemple, « quand » vous recevez/publiez/mettez quelque chose, faites autre chose.
Méthode() Remplacez ceci par n'importe laquelle des opérations CRUD (get/post/put/delete).
Alors() Vos conditions d'assertion et de correspondance doivent être placées ici.

Maintenant que vous avez la configuration et les bases de la syntaxe, créons notre premier test simple. Si la structure vous paraît nouvelle, c'est normal ; vous la maîtriserez rapidement en codant et en interprétant chaque ligne.

Qu'allez-vous chercher ?

Ouvrez votre navigateur et appuyez sur – https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1. Assurez-vous de voir quelque chose comme ci-dessous.

Exemple de réponse API de script Rest Assured

Exemple de réponse d'API capturée par REST Assured

Si vous obtenez une erreur dans votre navigateur lorsque vous essayez d'obtenir une réponse à votre requête :

  1. Vérifiez si vous avez utilisé HTTPS ou HTTP. Votre navigateur peut avoir des paramètres qui bloquent les sites web non sécurisés.
  2. Vérifiez si un proxy ou un pare-feu empêche votre navigateur d'ouvrir le site web.

*Note – Vous n'avez utilisé aucun en-tête, ni corps, ni cookie. C'était un URLVous récupérez du contenu depuis l'API au lieu de publier ou de mettre à jour du contenu existant. Il s'agit donc d'une requête GET. Gardez cela à l'esprit pour mieux comprendre notre premier test.

L'objectif de votre test :

Le but du script est d'imprimer la même sortie sur votre console IDE que celle que vous avez reçue sur le navigateur via Rest Assured.

Codons cela avec les étapes ci-dessous :

Obtenir la réponse Corps

Étape 1) Créez une classe nommée « myFirstRestAssuredClass ».

Étape 2) Créez une méthode appelée « getResponseBody ».

Étape 3) De manière similaire à la structure apprise précédemment (given, when, and then), saisissez le code ci-dessous :

donné(). -> Aucun en-tête requis, aucune requête ou paramètre de chemin.

when(). -> Aucune condition spécifique n'est définie.

obtenir('https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1'). -> seulement le URL doit être fourni.

puis(). -> Aucune assertion spécifique n'est requise.

log().all() -> Une fois que toute la réponse est récupérée, enregistrez la réponse, les en-têtes et essentiellement tout ce que la requête vous renvoie.

public static void getResponseBody(){
   given().when().get("https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1").then().log()
  .all();

}

Remarquez maintenant que le URL La requête utilisée est longue et moins lisible. En y regardant de plus près, vous remarquerez que trois paramètres de requête sont utilisés :

  1. N ° de client
  2. Mot de passe
  3. N ° de compte

Rest Assured nous permet de transmettre chaque élément (requête, chemin, paramètre d'en-tête) séparément, ce qui rend le code plus lisible et plus facile à maintenir. De plus, nous pouvons paramétrer les données à partir d'un fichier externe selon les besoins.

Pour utiliser les paramètres de requête, nous revenons à notre définition de la syntaxe et voyons que tous sont transmis dans le cadre de donné.

public static void getResponseBody(){

   given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1")
           .when().get("https://demo.guru99.com/V4/sinkministatement.php").then().log()
           .body();
}

**Notez que nous avons utilisé « corps » au lieu de « tous » ; cela nous aide à…**tracseulement le corps de la réponse.

Sortie :

Obtenir le code d'état de la réponse

La prochaine méthode que nous allons scripter consiste à obtenir le code d'état et à effectuer une assertion pour le valider.

Étape 1) Créez une méthode appelée getResponseStatus().

Étape 2) Utilisez la même structure de requête que celle utilisée ci-dessus. Copiez-le et collez-le.

Étape 3) Au lieu de l'enregistrer, utilisez 'getStatus'Code' Méthode intégrée de Rest Assured pour récupérer la valeur du code d'état.

Étape 4) Pour vérifier que votre code d'état est 200, utilisez les mots-clés : assertThat().statusCode(attenduCode).

**Note - URL est une variable utilisée par souci de simplicité. URL contient l'intégralité de la requête API URL.

public static void getResponseStatus(){
   int statusCode= given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1") .when().get("https://demo.guru99.com/V4/sinkministatement.php").getStatusCode();
   System.out.println("The response status is "+statusCode);

   given().when().get(url).then().assertThat().statusCode(200);
}

Sortie :

Besoin commercial

L'une des règles de base de l'automatisation est que nous devons mettre en place des points de contrôle pour que le test ne se déroule que si toutes les conditions requises sont remplies. Dans les tests API, la validation la plus élémentaire consiste à vérifier si le code d'état de la demande est au format 2XX.

Le code complet, jusqu'à présent :

import java.util.ArrayList;
import static io.restassured.RestAssured.*;
import static java.util.concurrent.TimeUnit.MILLISECONDS;

public class myFirstRestAssuredClass {

   final static String url="https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1";

   public static void main(String args[]) {

      getResponseBody();
     getResponseStatus();

; }

   //This will fetch the response body as is and log it. given and when are optional here
   public static void getResponseBody(){
       given().when().get(url).then().log()
      .all();

  given().queryParam("CUSTOMER_ID","68195")
               .queryParam("PASSWORD","1234!")
               .queryParam("Account_No","1") .when().get("https://demo.guru99.com/V4/sinkministatement.php").then().log().body();
   }

public static void getResponseStatus(){
   int statusCode= given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1")
           .when().get("https://demo.guru99.com/V4/sinkministatement.php").getStatusCode();
   System.out.println("The response status is "+statusCode);

   given().when().get(url).then().assertThat().statusCode(200);
}

}

* Remarque:

  1. Le code 200 indique une réponse positive dans ce cas. Il peut arriver que la requête doive échouer ; dans ce cas, utilisez les codes 4XX ou 5XX. Essayez de modifier le code d'état en fournissant des paramètres invalides et vérifiez le résultat.
  2. Lorsque nous affirmons une condition, il n'y aura pas d'impression sur la console sauf en cas d'erreur.

Script pour récupérer différentes parties d'une réponse

Outre le corps de la réponse et le code d'état, REST Assured expose également les en-têtes, le temps de réponse et le type de contenu via des exemples chaînables.tracméthodes tor. Le mot-clé 'extrac« t » est essentiel pour récupérer ces pièces spécifiques.

En-tête

Rest Assured est un langage très simple, et la récupération des en-têtes est tout aussi simple. Le nom de la méthode est headers(). Comme précédemment, nous allons créer une méthode autonome pour faire de même.

public static void getResponseHeaders(){
   System.out.println("The headers in the response "+
                   get(url).then().extract()
           .headers());
}

Veuillez noter que `given().when()` est omis ici et que la ligne de code commence par `get()`. En effet, aucune condition préalable ni vérification n'est effectuée avant l'envoi de la requête et la réception de la réponse. Dans ce cas, son utilisation est facultative.

Sortie:

Besoin commercial :

Bien souvent, vous devrez utiliser le jeton d'autorisation ou un cookie de session pour la requête suivante, et ces informations sont généralement renvoyées en tant qu'en-têtes de la réponse.

Temps de réponse

Pour obtenir le temps nécessaire pour récupérer la réponse du backend ou d'autres systèmes en aval, Rest Assured fournit une méthode appelée « timeIn » avec une timeUnit appropriée pour obtenir le temps nécessaire pour renvoyer la réponse.

public static void getResponseTime(){
  System.out.println("The time taken to fetch the response "+get(url)
         .timeIn(TimeUnit.MILLISECONDS) + " milliseconds");
}

Sortie :

Besoin commercial :

Un aspect essentiel des tests d'API est leur temps de réponse, qui mesure les performances de l'application. La durée de votre appel peut varier en fonction de votre connexion internet, des performances de l'API au moment de l'appel, de la charge du serveur et d'autres facteurs.

Content-Type

Vous pouvez obtenir le type de contenu de la réponse renvoyée à l'aide de la méthode « contentType() ».

public static void getResponseContentType(){
   System.out.println("The content type of response "+
           get(url).then().extract()
              .contentType());
}

Sortie

Besoin commercial :

Il est parfois essentiel de connaître le type de contenu pour s'assurer qu'il n'existe aucune faille de sécurité face aux menaces inter-origines et pour confirmer que le contenu transmis est conforme aux normes de l'API.

Récupérer un élément JSON individuel

À partir de la réponse fournie, vous devez calculer le montant total. Vous devez donc extraire chaque montant et les additionner.

Étape:

Étape 1) Le champ « amount » se trouve dans un tableau dont la clé est « statement », qui se trouve lui-même dans la liste dont la clé est « result ».

Étape 2) Rest Assured fournit un mécanisme permettant d'accéder aux valeurs de l'API via le paramètre « path ».

Étape 3) Le chemin pour accéder aux montants est « result.statements.AMOUNT ». Considérez cela comme une expression XPath. Selenium.

Étape 4) Récupérez tous les montants d'une collection, puis parcourez toutes les valeurs pour calculer la somme.

public static void getSpecificPartOfResponseBody(){

ArrayList<String> amounts = when().get(url).then().extract().path("result.statements.AMOUNT") ;
int sumOfAll=0;
for(String a:amounts){

    System.out.println("The amount value fetched is "+a);
    sumOfAll=sumOfAll+Integer.valueOf(a);
}
System.out.println("The total amount is "+sumOfAll);

}

Remarque : La valeur du montant étant de type chaîne de caractères, nous la convertissons en entier pour le calcul de la somme.

Sortie :

Meilleures pratiques pour l’automatisation des tests REST Assured

Une fois les bases acquises, l'application de bonnes pratiques garantit la fiabilité de votre suite de tests à mesure que la surface d'API s'étend. Les pratiques décrites ci-dessous aident les équipes à éviter les tests instables et les surcharges de maintenance.

  1. Centraliser la base URL: Stockez l'URI de base et les jetons d'authentification dans une seule classe de configuration ou un seul fichier de propriétés. Cela évite les doublons et simplifie le changement d'environnement.
  2. Utilisez les spécifications de requête et de réponse : Créez des objets RequestSpecBuilder et ResponseSpecBuilder réutilisables. Ils permettent de réduire le code répétitif lorsque de nombreux tests partagent des en-têtes ou des assertions communs.
  3. Valider le schéma JSON : Combinez REST Assured avec le module json-schema-validator pour confirmer la conformitétracL'intégrité de l'information est assurée. Les contrôles de schéma permettent de détecter les modifications incompatibles avant qu'elles n'atteignent les consommateurs en aval.
  4. Externaliser les données de test : Stockez les données utiles dans des fichiers JSON ou utilisez des fournisseurs de données à partir de TestNGLes données codées en dur deviennent rapidement obsolètes.
  5. Exécuter des tests indépendants : Chaque test doit configurer et supprimer ses propres données. Les suites de tests dépendantes de l'ordre peuvent échouer de manière imprévisible lors d'exécutions CI parallèles.
  6. Capture sélective des journaux : Utilisez `log().ifError()` dans les environnements stables et `log().all()` lors du débogage. Les journaux détaillés ralentissent les pipelines d'intégration continue et masquent les problèmes réels.
  7. Se connecter à CI/CD : Déclenchez des suites REST Assured via Maven Surefire ou Failsafe dans Jenkins, GitHub Actions ou GitLab. Effectuez des tests de non-régression sur chaque commit et une régression complète pendant la nuit.

Adopter ces habitudes dès le début transforme l'automatisation des API en un atout à long terme plutôt qu'en un goulot d'étranglement fragile.

FAQ

Oui. Les assistants IA modernes tels que ChatGPT et GitHub Copilot peuvent générer des modèles de tests REST Assured à partir de spécifications d'API. Les ingénieurs doivent néanmoins vérifier le code généré afin de s'assurer de la validité des assertions, du traitement des données et de la prise en compte des cas limites avant l'intégration.

Les outils basés sur l'IA analysent les modèles de réponse et suggèrent des localisateurs ou des assertions auto-réparatrices. Ils signalent les dérives de schéma, recommandent des refactorisations et mettent à jour automatiquement les données de test, ce qui réduit la maintenance manuelle lorsque les API évoluent fréquemment.

REST Assured est un Java Bibliothèque conçue pour l'automatisation pilotée par le code dans les pipelines CI. Postman est un client GUI permettant l'exploration manuelle et la création rapide de scripts. Les équipes combinent souvent les deux tout au long du cycle de vie des tests.

REST Assured est optimisé pour REST et JSON. Il peut envoyer des charges utiles XML brutes pour SOAP, mais des outils dédiés comme SoapUI offrir une prise en charge plus riche de l'analyse WSDL et des assertions spécifiques à SOAP.

REST Assured s'associe naturellement à TestNG et JUnit Pour les assertions, les hooks de cycle de vie et la génération de rapports, Allure, Extent Reports et Maven Surefire ajoutent la visualisation et l'intégration CI.

Résumez cet article avec :