Tutoriel de test de charge JMeter



Présentation du Test de Charge avec JMeter

Chaque application web a une capacité de charge maximale, et la dépasser peut entraîner des ralentissements, des erreurs ou une inefficacité globale. Le test de charge est crucial pour évaluer la performance d’une application web. Ce type de test est un élément vital du cycle de vie du développement logiciel et applicatif, surtout lorsqu’il s’agit d’applications web, de sites ou d’API censés gérer un trafic utilisateur important. Pour garantir que vos applications peuvent fonctionner sous des conditions de trafic élevé ou de pointe, il est essentiel d’utiliser des outils de test de performance. Apache JMeter est un choix populaire pour cette tâche, et si vous êtes nouveau dans le test de performance, vous vous demandez peut-être ce qu’est JMeter ? Et comment fonctionne JMeter ? Nous allons examiner JMeter et comment utiliser JMeter pour le test de performance.

Qu’est-ce que le Test de Charge ?

Le test de charge est un type de test de performance visant à déterminer comment votre application web se comporte en conditions de charge normale et maximale, ou même pour trouver le point de rupture. C’est la pratique de simuler une utilisation réelle, ou charge, sur un logiciel, un site web, une application web, une API ou un système afin d’analyser et d’identifier des facteurs tels que la réactivité, la dégradation et la scalabilité.

Outils pour le Test de Charge

Les outils de test de charge sont extrêmement importants pour rationaliser vos besoins en test de charge et améliorer votre performance numérique. Il existe une multitude d’outils et de plates-formes sur le marché aujourd’hui, avec une variété de fonctionnalités. Il y a beaucoup d’outils de test de charge tels que :

    • LoadView
    • Apache JMeter
    • WebLOAD
    • LoadRunner
    • Tricentis NeoLoad
    • LoadNinja

Pour ce guide, nous allons nous concentrer sur le test de charge avec JMeter. Nous répondrons à certaines questions telles que : qu’est-ce que JMeter, comment réaliser un test de charge avec JMeter, et comment utiliser JMeter pour le test de performance des API.

Qu’est-ce que le Test de Charge JMeter ?

Apache JMeter, aussi appelé JMeter, est un logiciel open-source très utilisé, développé entièrement en Java, destiné à réaliser des tests de charge comportementaux fonctionnels et d’évaluation de performance. C’est un outil privilégié par les développeurs et les équipes de développement logiciel pour les tests de performance, grâce à sa documentation abondante, son soutien communautaire solide et ses meilleures pratiques bien établies. De plus, étant gratuit et open-source, il représente un choix économique, mais comme il est entièrement Java, il peut nécessiter plus de temps et de ressources pour initier les processus de test.

JMeter prend en charge une gamme de protocoles, incluant HTTP, HTTPS, FTP, et plus encore, ce qui le rend polyvalent pour tester différents types d’applications. Les utilisateurs peuvent créer et exécuter des plans de test définissant divers scénarios, tels que la simulation d’interactions utilisateur, la surveillance de la performance du serveur et l’analyse des temps de réponse.

Le test de charge JMeter est conçu pour conduire des tests de charge sur le comportement fonctionnel et mesurer sa performance. De nombreuses équipes intègrent également les tests JMeter dans les pipelines CI/CD pour effectuer des contrôles de performance lors des builds et déploiements. Vous pouvez utiliser JMeter pour analyser et mesurer la performance des applications web ou des services. En analysant les données collectées et en générant des rapports, vous pouvez observer le comportement de l’application et identifier les goulets d’étranglement de performance, fournissant des informations précieuses sur les zones où des améliorations sont nécessaires.

Pourquoi utiliser JMeter ?

  • Open source : JMeter est complètement gratuit, et les développeurs peuvent utiliser le code source.
  • Indépendant de la plateforme : JMeter est indépendant de la plateforme et peut fonctionner sur plusieurs plateformes.
  • Support Multi-Protocoles : JMeter supporte à la fois les tests d’applications web et la performance des services de bases de données. Il prend en charge tous les protocoles basiques tels que HTTP, JDBC, LDAP, SOAP, JMS et FTP.
  • Enregistrement & Relecture : JMeter permet d’enregistrer l’activité utilisateur sur un navigateur à simuler, puis de rejouer cet enregistrement.
  • Rapports Personnalisables : Visualisez vos résultats de test dans différents formats tels que graphiques, tableaux, ou fichiers arbres et logs.
  • Soutien Communautaire : Il existe une large communauté offrant aide, conseils et tutoriels.
  • Extensibilité : JMeter peut être étendu avec des plugins pour améliorer ses fonctionnalités, permettant aux utilisateurs d’adapter l’outil à leurs besoins spécifiques.
  • Scalabilité cloud limitée par défaut : JMeter fonctionne généralement localement sauf s’il est configuré pour des tests distribués, ce qui nécessite une configuration supplémentaire.

Avantages du Test de Charge avec JMeter

JMeter est un outil fantastique pour le test de charge qui offre de nombreux avantages le rendant populaire parmi les testeurs. Pour commencer, il est entièrement gratuit et open-source, ce qui signifie que vous n’avez pas à vous soucier des contraintes budgétaires, il est accessible à tous ! De plus, il est suffisamment puissant pour simuler des scénarios réels qui vous donnent une image claire de la performance de votre application sous différents types de charges.

Un des meilleurs atouts de JMeter est sa scalabilité. Que vous exécutiez de petits tests ou simuliez un trafic à grande échelle, il peut tout gérer sans difficulté. Et n’oublions pas ses fonctionnalités détaillées de reporting et d’analyse. Ces outils vous aident à identifier les problèmes de performance tôt, facilitant grandement l’optimisation de votre application et son maintien en bon fonctionnement.

Ce que nous aimons chez JMeter, c’est sa facilité d’utilisation ! Vous n’avez pas besoin d’être un expert en programmation pour créer des scénarios de test complexes car JMeter reste simple et intuitif. De plus, ses fonctionnalités intégrées de reporting et de visualisation facilitent l’analyse des résultats des tests et l’identification des goulets d’étranglement de performance. Globalement, JMeter est un outil fiable et facile à utiliser qui aide à garantir que vos applications peuvent gérer tout ce qui leur arrive !

    Comment Réaliser un Test de Charge avec JMeter

    Voyons quelques-unes des étapes impliquées dans l’utilisation de JMeter pour le test de charge et comment configurer un test de charge de base.
     

    Étape 1 : Vérifier la Compatibilité du Système pour l’Installation de JMeter

    Avant de procéder à l’installation de JMeter, il est crucial de s’assurer que votre système répond aux exigences. JMeter est basé sur Java, donc vous devez avoir Java 8 ou une version supérieure installée sur votre système. Confirmez que votre système d’exploitation est compatible avec JMeter. JMeter est conçu pour fonctionner sur divers systèmes d’exploitation, y compris Windows, Linux et macOS.

    Une fois que vous avez confirmé que votre système répond à ces exigences de base, vous êtes prêt à procéder à l’installation de JMeter. Cela garantit une installation fluide et une performance optimale lors des tests de charge.
     

    Étape 2 : Télécharger et Installer JMeter pour Votre Système

    Après avoir vérifié que votre système répond à toutes les exigences nécessaires, téléchargez la dernière version de JMeter—en choisissant entre les fichiers binaires ou les sources selon vos besoins spécifiques. Les fichiers binaires, contenant des versions précompilées de JMeter, peuvent être exécutés immédiatement, tandis que les fichiers sources offrent une flexibilité pour une configuration et compilation manuelles par des développeurs ou équipes. En général, les versions binaires sont préférées pour leur facilité d’installation. Différents types de fichiers sont disponibles, tels que .zip et .tgz.

    Une fois votre version préférée sélectionnée, téléchargez-la sur votre système. Vous pouvez ensuite ouvrir le fichier, le déplacer vers un emplacement désigné, ou créer un nouveau dossier pour un accès futur. Commencez le processus d’extraction, ce qui peut prendre quelques minutes. Notez que les étapes d’installation peuvent varier selon votre système d’exploitation, mais une fois installé, la fonctionnalité de JMeter reste cohérente.
     

    Étape 3 : Créer un Plan de Test de Charge

    Les utilisateurs de JMeter peuvent commencer à créer leur plan de test de charge à partir de zéro ou choisir parmi divers modèles de plan de test disponibles dans le menu Fichier. Ces modèles incluent le Plan de test SOAP WebService, le plan de test Web de base et avancé, le plan de test FTP, le plan de test fonctionnel, et bien d’autres. Ces modèles contiennent tous les éléments, sections et champs spécifiques nécessaires pour créer et construire votre plan de test de charge.

    Pour créer un plan de test, il suffit d’aller dans Fichier et de sélectionner Nouveau ou cliquer sur le bouton Nouveau dans la barre d’outils. Il est important de noter que vous devez exécuter JMeter en mode GUI pour créer le plan de test. L’interface en ligne de commande (CLI) est utilisée pour exécuter le test de charge. Nous parlerons ensuite de la spécification du nombre d’utilisateurs pour votre test de charge, aussi appelé le Groupe de Threads.
     

    Étape 4 : Ajouter et Configurer un Groupe de Threads dans JMeter

    Pour ajouter un Groupe de Threads, suivez ces étapes : clic droit sur Plan de Test, survolez Threads (Utilisateurs), puis cliquez sur Groupe de Threads.

    Dans la boîte de dialogue Groupe de Threads qui apparaît, vous pouvez modifier différentes propriétés des Threads comme le nombre de Threads (utilisateurs), la période de montée en charge (en secondes) et le nombre de boucles (itérations du test). Vous pouvez aussi spécifier des actions comme des délais, définir les heures de début et d’arrêt du test, et définir les réponses aux erreurs du Sampler. Les propriétés des threads sont :

      • Nombre de Threads : représente la quantité d’utilisateurs virtuels se connectant au serveur.
      • Période de montée en charge : indique le temps que JMeter met pour passer le nombre spécifié de threads à l’état actif.
      • Nombre de boucles : indique combien de fois chaque thread exécute la tâche.
      • Boucle infinie : lorsqu’elle est activée, ignore le nombre de boucles et crée une boucle infinie jusqu’à arrêt manuel.
      • Retarder la création des threads jusqu’à besoin : retarde la création des threads jusqu’à ce qu’une valeur spécifiée (en secondes) soit atteinte.
      • Planificateur : active la configuration d’un planificateur pour lancer les tests à des heures spécifiques.

    Cette étape permet une personnalisation minutieuse des paramètres du test de charge, offrant aux utilisateurs le contrôle sur la simultanéité, la durée et les conditions spécifiques du test.
     

    Étape 5 : Configurer un Sample dans JMeter

    Dans JMeter, les Samplers permettent à JMeter d’envoyer différents types de requêtes. Par exemple, il peut s’agir d’une requête HTTP (pour un site web, une application ou une API), d’une requête FTP, SMTP, TCP, et bien d’autres. Vous saisissez ici des détails complémentaires tels que le Protocole (HTTP/S), le nom du serveur ou l’adresse IP, le chemin (pour une page web spécifique), et le type de requête, comme GET, POST, HEAD, PUT, etc., qui peut être utilisé pour le test de charge des API.
     

    Étape 6 : Configurer les Listeners

    Pour analyser les résultats des Samplers dans JMeter, l’étape suivante consiste à configurer ce que l’on appelle les Listeners. Dans la fenêtre du Plan de Test JMeter, vous pouvez choisir parmi plusieurs Listeners, y compris Rapport Sommaire, Graphique Agrégé, Arbre des Résultats, Table des Résultats, et bien d’autres, afin d’examiner et d’analyser en détail vos résultats de test. Vous pouvez également ajouter plusieurs Listeners à un Plan de Test JMeter. Une fois cela fait, votre Plan de Test est prêt et vous pouvez procéder à l’exécution du test.
     

    Étape 7 : Enregistrer les Scripts de Test de Charge

    Si votre objectif est de réaliser des tests de charge HTTP ou au niveau protocolaire sans configuration approfondie, aucune autre configuration n’est requise. Cependant, si vous souhaitez un test qui ressemble de près aux actions de vos utilisateurs, vous devrez utiliser le HTTP(S) Test Script Recorder dans JMeter.

    Dans le Groupe de Threads, vous devez ajouter le Contrôleur d’Enregistrement. Ce contrôleur vous permet de naviguer sur un site ou une application, enregistrant vos actions via des requêtes HTTP/S. Vous pouvez également inclure plusieurs contrôleurs d’enregistrement par page, ce qui vous fait gagner du temps en évitant d’ajouter manuellement chaque requête.

    L’inconvénient est que l’enregistrement se fait avec des requêtes HTTP/S et ne se fait pas dans un vrai navigateur du point de vue de l’utilisateur. Vous pouvez aussi enregistrer des navigateurs via le serveur proxy JMeter, mais cela peut être un processus fastidieux et difficile. Si vous recherchez une solution plus facile et intuitive, vous pouvez opter pour LoadView avec son EveryStep Web Recorder. Le système d’enregistrement de LoadView offre une création de scripts par pointage et clic utilisant de vrais navigateurs sans configuration complexe et chronophage comme avec JMeter.
     

    Étape 8 : Exécuter le Test de Charge

    Après avoir configuré tous les détails et paramètres de votre test de charge, sauvegardez votre plan de test. Ensuite, cliquez simplement sur le bouton Lancer dans la barre d’outils et votre test commencera. N’oubliez pas d’exécuter le test en mode CLI pour de meilleurs résultats.
     

    Étape 9 : Visualiser les Résultats du Test de Charge

    Vous verrez les résultats du test dans le tableau, mais cela dépendra de votre listener. Vos résultats incluront des métriques supplémentaires, telles que le temps (en millisecondes), le statut (montrant les réponses valides et les erreurs), les octets et octets envoyés, la latence et le temps de connexion. En examinant ces résultats, vous pouvez identifier les endroits où se trouvent les erreurs ou les temps de chargement lents.

    Comment Réaliser un Test de Charge API avec JMeter

    Précédemment, nous avons discuté des instructions étape par étape pour configurer un test de charge basé sur protocole sur un site web ou une application avec JMeter. Nous allons maintenant aborder le test de différentes API, telles que les API SOAP et REST, avec JMeter. Les procédures d’installation et de configuration restent cohérentes avec les étapes déjà mentionnées. Cependant, nous nous concentrerons sur les aspects fondamentaux des tests API et discuterons des considérations importantes lors de la conduite des tests API avec JMeter.
     

    Test API REST avec JMeter

    Les API RESTful, acronyme de Representational State Transfer, jouent un rôle vital dans le développement de divers services web. Contrairement aux API SOAP, REST n’est pas un protocole mais un style architectural s’appuyant sur les URI (Uniform Resource Identifiers) et le protocole HTTP.
     

    Étape 1 : Créer un Plan de Test de Charge

    Pour commencer, ouvrez JMeter. Vous verrez qu’une nouvelle fenêtre Plan de Test s’ouvre. Si vous avez déjà JMeter ouvert, vous pouvez également cliquer sur le bouton Nouveau dans la barre d’outils principale pour créer un nouveau Plan de Test.
     

    Étape 2 : Ajouter et Configurer un Groupe de Threads dans JMeter

    Comme dans la section précédente, la fenêtre Groupe de Threads est l’endroit où vous pouvez ajouter le nombre d’utilisateurs (Threads), définir le temps de montée en charge, le nombre d’itérations de test (nombre de boucles) et modifier bien d’autres propriétés.
     

    Étape 3 : Configurer le Sampler

    Ensuite, nous devons ajouter le Sampler. Vous pouvez choisir parmi certains Samplers pré-configurés dans JMeter ou sélectionner l’un des vôtres. Pour cet exemple, nous utiliserons une option pré-configurée.

    Pour lancer le processus, faites un clic droit sur le Groupe de Threads, ce qui ouvre une fenêtre déroulante. Choisissez Ajouter, puis Sampler. Une liste d’options de Sampler apparaîtra. Pour les tests API, optez pour Requête HTTP, qui ouvre la fenêtre de configuration où vous pouvez nommer votre test et configurer les paramètres pour votre test API REST. Il est utile de mentionner que la fenêtre Requête HTTP est divisée en sections Basique et Avancée. Pour ce test, nous nous concentrerons sur les paramètres Basique. Divers champs, y compris Protocole, Nom du serveur ou IP, numéro de port, Requête HTTP (GET/POST/HEAD/PUT/DELETE, etc.), paramètres, et plus, sont disponibles pour configuration.

    Commencez par entrer l’URL de l’API dans le champ Nom du serveur ou IP (juste le nom de domaine), avec le protocole approprié, et dans le champ Chemin, ajoutez le chemin de l’API.

    Si c’est une requête GET, sélectionnez GET dans la liste des requêtes HTTP.

    Si vous avez certains paramètres, comme une page spécifique, vous pouvez ajouter cette partie de l’URL dans le champ Paramètres.

    Vous pouvez aussi l’ajouter dans le champ Chemin, mais en l’ajoutant dans les Paramètres, vous avez des options supplémentaires telles que Encoder l’URL ?, Type de contenu, et Inclure le signe égal ?

    Pour certaines requêtes, il est nécessaire d’inclure des en-têtes de requête. Pour ce faire, allez dans la fenêtre Requête HTTP dans le Plan de Test. Le clic droit affichera un menu déroulant ; sélectionnez Ajouter, puis Élément de configuration. Cette action ouvrira les options disponibles. Dans ce cas, choisissez Gestionnaire d’en-têtes HTTP. La fenêtre Gestionnaire d’en-têtes HTTP vous permet de saisir les en-têtes de votre API. Après avoir configuré vos paramètres, passez à l’étape suivante.
     

    Étape 4 : Ajouter des Listeners

    Pour ajouter des Listeners, il suffit de faire un clic droit sur le Groupe de Threads, choisir Ajouter, puis Listener. Cela déclenche un menu déroulant proposant plus de 15 options parmi lesquelles choisir. Les choix populaires incluent Arbre des résultats et Table des résultats. Il est important de noter que les Listeners offrant une représentation graphique, comme Arbre des résultats, peuvent consommer plus de mémoire et de CPU. Après avoir ajouté vos Listeners, sauvegardez votre plan de test.
     

    Étape 5 : Exécuter le Test et Voir les Résultats

    Une fois que vous avez configuré et enregistré les détails et paramètres de votre test de charge, lancez le test en cliquant sur le bouton Lancer dans la barre d’outils. La fenêtre affichera vos résultats de Sampler, présentant divers détails, données et métriques — telles que la latence, les codes de réponse, le temps de connexion, etc. — relatifs à votre test API REST.
     

    Test API SOAP avec JMeter

    SOAP (Simple Object Access Protocol) se distingue d’une API REST car il fonctionne sous son propre protocole. Lors des tests de charge des API SOAP, des considérations spécifiques surviennent, incluant la sécurité et la conformité, les besoins en bande passante (les API SOAP nécessitent généralement plus de ressources), et des aspects fonctionnels comme la logique de reprise (retry), absente des API REST.
     

    Étape 1 : Créer un Plan de Test de Charge

    JMeter offre une gamme de modèles de Plan de Test accessibles via le menu ou l’icône Modèles dans la barre d’outils principale. Une des options disponibles est “Création d’un Plan de Test SOAP WebService.” Choisir cette option générera et ouvrira le Plan de Test correspondant. Comme il s’agit d’un modèle, certains champs contiennent des valeurs placemarkers que vous devez compléter avec les données et informations pertinentes.
     

    Étape 2 : Saisir les Données

    Comme discuté dans la configuration des API REST, vous devrez saisir le nombre d’utilisateurs (Threads), la période de montée en charge et le nombre de boucles (itérations) pour le test API SOAP.

    Dans un sous-groupe du Groupe de Threads principal, vous pouvez accéder aux paramètres de la Requête HTTP, similaire à la configuration de l’API REST abordée précédemment. Cependant, la disposition de cette section est différente, affichant par défaut le corps de la requête SOAP. Cette section comprend également des sous-sections pour le Gestionnaire d’en-têtes HTTP et les Assertions de réponse. Comme pour la configuration de l’API REST, vous pouvez ajouter des Élément de configuration supplémentaires, comme le Gestionnaire d’autorisation HTTP, si des détails spécifiques d’autorisation doivent être inclus.
     

    Étape 3 : Ajouter le Sampler Requête HTTP

    Pour un test de charge API SOAP, vous voudrez ajouter le Sampler Requête HTTP. Dans cette fenêtre, vous devrez saisir les détails pertinents, incluant le Nom du serveur ou IP, le Chemin, la Requête HTTP, le numéro de port, et les données du corps de la requête SOAP.
     

    Étape 4 : Ajouter des Listeners

    Une fois que vous avez configuré le Plan de Test, vous devrez ajouter vos Listeners, qui afficheront les résultats de votre test. Encore une fois, vous pouvez ajouter autant de Listeners que vous le souhaitez et que cela est approprié pour le test API SOAP.
     

    Étape 5 : Exécuter Votre Test

    Une fois la configuration et les paramètres de votre Plan de Test définis, vous pouvez enfin lancer votre test de charge API SOAP et examiner les résultats une fois le test terminé.

    Conclusion

    Vous avez maintenant appris ce qu’est JMeter, comment effectuer un test de charge avec JMeter, et comment réaliser des tests de charge pour les API avec JMeter. Comme vous pouvez le voir, la mise en place des tests de charge avec JMeter implique de nombreuses étapes et options de configuration, ce qui implique beaucoup de temps passé à configurer les tests plutôt qu’à les exécuter. Bien que JMeter soit une solution open source et gratuite, vous pourriez avoir besoin de chercher d’autres outils de test de charge offrant de meilleures fonctionnalités et répondant mieux à vos besoins professionnels.

    LoadView : la meilleure alternative à JMeter

    LoadView se démarque comme l’une des meilleures solutions payantes de test de performance disponibles aujourd’hui, offrant une multitude de fonctionnalités. Celles-ci incluent le registreur de scripts point-and-click EveryStep, l’accès à un réseau mondial de serveurs injecteurs de charge, et la possibilité de configurer divers scénarios de courbes de charge pour une flexibilité accrue des tests. Contrairement à JMeter, LoadView ne nécessite aucune infrastructure supplémentaire ou considérations car tout est géré de manière transparente. Là où JMeter se limite aux tests de charge au niveau protocolaire, LoadView utilise de vrais navigateurs, vous permettant d’évaluer la performance réelle de sites, applications et API critiques. De plus, LoadView propose plusieurs options, comme la mise sur liste blanche des IP proxy statiques ou l’utilisation d’un agent sur site, permettant de tester des applications derrière votre pare-feu et offrant une plus grande flexibilité pour les tests de performance.

    LoadView fournit des rapports de performance et des tableaux de bord conviviaux, offrant des pistes claires des facteurs contribuant aux performances sous-optimales. Il inclut également une vidéo de référence pour les tests de pages web et d’applications web, permettant une comparaison directe avec les rapports pour visualiser la perspective de l’utilisateur. LoadView propose des plans flexibles mensuels et annuels, accompagnés d’un support 24h/24 et 7j/7 pour tous les clients, quel que soit leur plan choisi, ce qui le distingue de certains autres outils sur le marché.

    Passez votre test de charge au
    niveau supérieur

    Découvrez des fonctionnalités inégalées avec une scalabilité illimitée. Pas de carte de crédit, pas de contrat.