REST Assured vs JMeter : une comparaison des outils de test REST

Publié: 2022-03-11

Les tests automatisés sont un élément essentiel du processus d'assurance qualité des logiciels. Mais tester les API REST (Representational State Transfer) peut être une tâche délicate. Beaucoup de ceux qui ont recours aux tests manuels des API REST négligent les détails et passent à côté des moyens de gagner du temps.

Tout service API REST testé correctement couvrira les domaines suivants :

  • Test de conformité du service API aux normes REST
  • Test des codes de réponse du service API
  • Assertion du contenu de la réponse du service API
  • Analyse comparative des performances du service API

Outils pour le test REST

Pour cela, il vous faut les bons outils. Apache JMeter et REST Assured sont deux outils de test REST populaires pour tester les services de l'API REST. Vous pouvez en savoir plus sur la façon dont vous pouvez les utiliser dans la pratique ici et ici.

Dans cet article, vous découvrirez les avantages et les inconvénients de ces deux outils et où ils s'intègrent le mieux dans vos projets d'API REST existants.

Facilité de configuration

Il y a une condition préalable : JMeter et REST Assured nécessitent Java, vous devez donc avoir Java installé sur votre ordinateur pour exécuter JMeter ou REST Assured.

L'installation d'Apache JMeter est très simple : accédez à la page de téléchargement, choisissez le ZIP ou le TAR, téléchargez l'archive, décompressez-la et vous êtes prêt à partir.

Accédez au dossier dans lequel vous avez décompressé l'archive, accédez au sous-dossier bin et exécutez jmeter.bat (ou similaire pour votre système d'exploitation, si autre que Windows). Pour plus d'informations sur la configuration d'Apache JMeter, consultez cette page.

L'installation de REST Assured est une expérience un peu différente. REST Assured n'est pas un outil autonome. C'est une bibliothèque Java. Pour l'utiliser, vous devez configurer un nouveau projet Java et l'inclure en tant que bibliothèque pour votre projet. Bien sûr, de nombreux outils de construction sont pris en charge, vous pouvez donc simplement pointer votre résolveur de dépendances vers un référentiel public (Maven). Vous pouvez trouver des informations plus détaillées sur la configuration de REST Assured ici.

Documentation

La documentation Apache JMeter est disponible sur le site officiel de JMeter. Il fournit une documentation assez complète, du démarrage aux fonctionnalités complexes telles que les écouteurs. De plus, sur le site officiel de JMeter, vous pouvez trouver des liens vers des ressources très riches telles que des didacticiels vidéo. Si vous aimez moins lire et plus regarder, c'est définitivement un plus pour vous.

La documentation REST Assured, tout comme l'outil/la bibliothèque elle-même, se trouve dans le référentiel Github. Il a une grande liste de fonctionnalités répertoriées dans la documentation en ligne avec des explications très détaillées sur la façon de réaliser quelque chose. Cependant, l'ensemble de la documentation est une énorme page Web, ce qui n'est pas la manière la plus conviviale d'explorer un outil.

Création et maintenance automatisées de tests REST

Apache JMeter, en tant qu'application autonome avec une interface utilisateur graphique (GUI), vous permet de créer vos tests à partir de l'interface graphique. Cela peut être pratique, en particulier en raison de la hiérarchie des entités introduite à partir de JMeter - tout ce que vous créez dans votre test sera affiché dans une représentation arborescente dans l'interface graphique de JMeter.

Pour créer un test, il n'est pas nécessaire d'avoir des compétences en codage. Cependant, l'interface graphique ne limite aucune des possibilités concernant la planification des tests. Si vous souhaitez toujours ajouter une programmation / un flux personnalisé, le ou les composants BeanShell vous permettront de le faire.

Capture d'écran de l'interface graphique JMeter

Lorsque vous enregistrez votre projet JMeter, tout ce que vous avez créé sera enregistré dans un énorme fichier XML (avec l'extension .jmx ). Généralement, même pour un petit changement dans l'un des tests, vous devrez (très probablement) rouvrir le projet dans l'interface graphique afin d'effectuer le changement.

Si vous avez besoin de collaborer avec d'autres sur le même fichier de projet JMeter, cet énorme fichier XML ne sera pas facile à maintenir à l'aide de l'un des systèmes de gestion de contrôle de source (SCM) (tels que Git, SVN, Perforce, etc.).

REST Assured, en revanche, nécessite des compétences en codage Java pour créer les tests. Il n'y a pas d'interface graphique conviviale pour la création de tests. Cependant, REST Assured vous permet d'écrire les tests en utilisant le langage Gherkin (syntaxe Given-When-Then) donc même si vous avez besoin de quelques compétences en codage Java, les tests sont assez lisibles par l'homme.

 given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));

Étant donné que REST Assured est une bibliothèque et que les tests sont en fait écrits en Java, vous pouvez organiser vos tests dans des fichiers Java séparés. Ainsi, lorsque vous devez modifier un test, il vous suffit d'ouvrir un fichier. Vous n'avez pas besoin d'une interface graphique, vous pouvez donc modifier facilement le test même via un terminal SSH. La collaboration avec d'autres est assez simple car il est facile de maintenir des fichiers Java à l'aide de n'importe quel SCM.

Types de tests REST

JMeter est bien connu comme un outil de test de performance pour tester des applications et des services Web. Prêt à l'emploi, il propose de belles options de rapport avec différents types de graphiques que vous pouvez utiliser pour afficher les métriques de test de performance.

Capture d'écran des temps de réponse JMeter

D'un autre côté, ce n'est pas non plus le scénario d'utilisation principal de JMeter. Vous pouvez créer des tests fonctionnels pour les API REST avec JMeter, y compris l'assertion de réponse.

Le principal scénario d'utilisation de REST Assured concerne les tests fonctionnels des services de l'API REST. Il est même livré avec son propre mécanisme d'assertion de réponse (la syntaxe Gherkin). Étant donné que REST Assured est une bibliothèque Java, elle peut facilement être intégrée aux tests unitaires.

En ce qui concerne les tests de performances, REST Assured ne prend pas en charge les tests de performances prêts à l'emploi. Toutefois, si vous souhaitez l'utiliser pour des tests de performances, vous devrez développer votre propre framework personnalisé pour les tests de performances autour de REST Assured.

Exécution des tests

Les tests JMeter peuvent être invoqués de deux manières.

Depuis l'interface utilisateur en cliquant sur le bouton Exécuter :

Capture d'écran du bouton Exécuter JMeter

Depuis la ligne de commande :

 jmeter -n -t your_script.jmx

La recommandation officielle de JMeter est de ne pas exécuter les tests de performances à l'aide de l'interface graphique, car les tests s'exécuteront plus lentement (en termes de nombre de requêtes par seconde) par rapport à leur exécution à partir de la ligne de commande.

REST Assured, en revanche, nécessite un exécuteur de test séparé, par exemple jUnit ou TestNG (ou tout autre moyen d'exécuter du code Java).

Depuis Eclipse avec TestNG :

Capture d'écran REST Assured Eclipse

À partir de la ligne de commande en utilisant, par exemple, l'outil de génération Ant :

 ant run-tests

Types de rapports

Apache JMeter, en raison de son objectif principal, dispose d'un grand nombre de types de rapports que vous pouvez créer à partir des résultats de vos tests. Comme vous pouvez exécuter des tests de performances à partir de JMeter, les métriques de performances sont généralement affichées à l'aide de graphiques comme celui-ci :

Rapport de performances JMeter

Vous pouvez en savoir plus sur les rapports JMeter et les types de rapports que vous pouvez créer à partir d'ici.

REST Assured lui-même ne crée aucun rapport, c'est donc à vous et à un framework de test que vous avez choisi. Cependant, lorsqu'il est intégré à un framework de test unitaire, vous pouvez obtenir des rapports assez utilisables aux formats HTML, texte ou XML.

Rapport HTML assuré par REST

Intégration avec Jenkins

En ce qui concerne l'intégration continue des produits en cours de test, il est très important d'intégrer votre cadre d'automatisation des tests aux outils CI pour exécuter les tests et rendre compte des résultats.

Les tests automatisés JMeter peuvent être facilement intégrés à Jenkins à l'aide du plugin Performance qui vous permet de configurer des actions post-construction et d'obtenir une belle page de tableau de bord à partir d'une page de travail Jenkins.

JMeter Jenkins Capture d'écran

REST Assured peut également être facilement intégré à Jenkins car Jenkins dispose de plugins pour presque tous les frameworks de test ; par exemple, le plugin TestNG qui peut à nouveau créer un graphique de tendance solide pour les résultats des tests.

REST assuré Jenkins Capture d'écran

Activité communautaire

C'est une catégorie qui ne peut pas être mesurée facilement. L'activité de la communauté dépend d'un certain nombre de facteurs tels que la maturité de l'outil ou le nombre de contributeurs.

Apache JMeter a une plus grande communauté de nos jours. Cela est principalement dû au fait que JMeter est apparu sur le marché il y a longtemps et est considéré comme la norme de l'industrie en matière de test de performance des applications et des services Web. JMeter publie des versions officielles tous les 5 à 6 mois. Son référentiel GitHub est très actif, avec de nouveaux commits quotidiennement. JMeter utilise Bugzilla comme outil de suivi des problèmes et dispose d'une liste de problèmes ouverts fréquemment modifiés. Il y a plus de 23 000 résultats pour JMeter dans la recherche StackOverflow. Depuis les sites de réseaux sociaux, JMeter a un compte Twitter officiel. Sur Facebook et LinkedIn, il n'y a pas de compte officiel pour JMeter, mais il existe quelques groupes, dont le plus important est ce groupe Facebook et ce groupe LinkedIn.

REST Assured se fraie un chemin vers la scène principale et est devenu le premier choix, une recommandation de plusieurs sources, lorsqu'il s'agit d'automatiser les tests fonctionnels du service REST API. REST Assured publie des versions officielles tous les 6 mois depuis deux ans. Le référentiel GitHub compte de nombreux contributeurs et est un peu moins actif que celui de JMeter, mais il est également très actif. REST Assured suit les problèmes dans le référentiel GitHub, donc tout est au même endroit. Dans StackOverflow, il y a plus de 2000 résultats de recherche pour REST Assured, nous pouvons donc dire qu'il est nettement inférieur par rapport aux résultats de recherche JMeter. En ce qui concerne les groupes de réseaux sociaux, seul le groupe LinkedIn a été trouvé avec un nombre de membres significativement inférieur à celui de JMeter. La communauté REST Assured n'est peut-être pas aussi grande que la communauté JMeter, mais elle est très active.

Sommaire

JMeter et REST Assured ont tous deux leurs avantages les uns par rapport aux autres. Mais en fonction du projet sur lequel vous travaillez, l'un conviendra mieux que l'autre à l'automatisation des tests de votre API REST. Les deux sont très robustes, disposent d'options de test utiles, offrent de belles capacités de création de rapports et peuvent facilement être intégrés à des cadres de test personnalisés.

Voici un résumé de tous les critères de comparaison explorés dans cet article pour ces deux outils de test REST populaires :

Apache JMeter Repos assuré
Nécessite des compétences en codage Non Oui (Java)
Documents approfondis Oui Oui
Test fonctionel Oui (mais exagéré) Oui
Test de performance Oui Non (prêt à l'emploi)
Convient pour SCM (Git, P4...) Non Oui
Rapports d'essai Oui Non
Intégration avec les outils CI Oui Oui
Intégration avec les tests unitaires Non Oui
Tester la parallélisation Oui Oui
Activité communautaire Oui Oui