Comment utiliser JMeter pour les tests de performances et de charge
Le JMeter Load Testing est un processus de test effectué à l'aide d'un outil de test de charge nommé Apache JMeter, étant une application de bureau open source basée sur Java. JMeter pour les tests de charge est un outil crucial déterminant si l'application Web testée peut ou non satisfaire aux exigences de charge élevée. Il permet également d'analyser l'ensemble du serveur sous forte charge.
Tests de performances JMeter
Le test de performance JMeter est une méthode de test effectuée à l'aide d'Apache JMeter pour tester les performances d'une application Web. JMeter pour les tests de performances aide à tester les ressources statiques et dynamiques, aide à découvrir les utilisateurs simultanés sur le site Web et fournit une variété d'analyses graphiques pour les tests de performances. Les tests de performances JMeter incluent le test de charge et le test de stress de l'application Web.
L'outil de test Apache JMeter offre les avantages suivants dans les tests de performances :
- JMeter peut être utilisé pour tester les performances des ressources statiques telles que JavaScript et HTML, ainsi que des ressources dynamiques, telles que JSP, Servlets et AJAX.
- JMeter peut découvrir le nombre maximum d'utilisateurs simultanés que votre site Web peut gérer.
- JMeter fournit une variété d'analyses graphiques des rapports de performances.
Les tests de performances JMeter incluent :
- Test de charge : Modélisation de l'utilisation prévue en simulant l'accès simultané de plusieurs utilisateurs aux services Web.
- Stress Testing : Chaque serveur Web a une capacité de charge maximale. Lorsque la charge dépasse la limite, le serveur Web commence à répondre lentement et produit des erreurs. Le but des tests de résistance est de trouver la charge maximale que le serveur Web peut gérer.
Créer un plan de test de performance dans JMeter
Dans cette page, nous effectuons une analyse des performances de Google.com pour 1 000 utilisateurs à l'aide de divers outils de test de performances afin de garantir que le site Web peut gérer la charge et offrir une expérience utilisateur transparente.
Avant de tester les performances de l'application Web cible, nous devons déterminer :
- Charge normale : nombre moyen d'utilisateurs visitant votre site Web
- Heavy Load : le nombre maximum d'utilisateurs qui visitent votre site Web
- Quelle est votre cible dans ce test ?
Voici la feuille de route de cet exemple pratique :
Étape 1 : Ajouter un groupe de processus léger (Add Thread Group)
- Démarrer JMeter en cliquant sur jmeter.bat sous Windows ou jmeter sous UNIX.
- Sélectionnez Plan de test dans l'arborescence
- Ajouter un groupe de processus léger (Add Thread Group)
Faites un clic droit sur le "Test Plan" et ajoutez un nouveau groupe de processus léger : Add → Threads (Users) → Thread Group.
Dans le panneau de configuration Thread Group, entrez les propriétés du Thread Properties comme suit :
- Number of Threads : 100 (Nombre d'utilisateurs se connectant au site Web cible : 100)
- Ramp-Up Period : 100 (Période de montée en puissance)
- Loop Count : 10 (Nombre de temps pour exécuter les tests)
Le Thread Count et The Loop Counts sont différents.
La Ramp-Up Period indique à JMeter combien de temps attendre avant de démarrer l'utilisateur suivant. Par exemple, si nous avons 100 utilisateurs et une période de montée en puissance de 100 secondes, le délai entre les utilisateurs débutants serait de 1 seconde (100 secondes/100 utilisateurs).
Étape 2 : Ajouter des éléments JMeter
Maintenant, nous déterminons quels éléments JMeter dans ce test. Les éléments sont :
- HTTP request Default : Cet élément peut être ajouté en cliquant avec le bouton droit sur le Thread Group et en sélectionnant : Add → Config Element → HTTP Request Defaults.
- HTTP Request : Cliquez avec le bouton droit sur Thread Group et sélectionnez : Add → Sampler → HTTP Request
Dans le panneau de configuration HTTP Request Defaults, entrez le nom du site Web testé (dans notre exemple http://www.google.com)
Dans le panneau de configuration HTTP Request, le champ Path indique la requête URL que vous souhaitez envoyer au serveur Google :
Par exemple, si vous entrez "calendar" dans le champ Path. JMeter créera la demande d'URL http://www.google.com/calendar au serveur Google :
Si vous laissez le champ Path vide, JMeter créera la demande d'URL http://www.google.com au serveur Google. Dans ce test, vous laissez le champ Path vide pour que JMeter crée la demande d'URL http://www.google.com au serveur Google.
Étape 3 : Ajout du résultat du graphique (Graph result)
JMeter peut afficher le résultat du test au format graphique.
Cliquez avec le bouton droit sur Test Plan, Add → Listener → Graph Results.
Étape 4 : Exécutez le test et obtenez le résultat du test
Appuyez sur le bouton Exécuter (Ctrl+R) de la barre d'outils pour démarrer le processus de test du logiciel. Vous verrez le résultat du test s'afficher sur le graphique en temps réel.
L'image ci-dessous présente un graphique d'un plan de test, où nous avons simulé 100 utilisateurs ayant accédé au site Web www.google.com.
En bas de l'image, il y a les statistiques suivantes, représentées en couleurs :
- Noir : Le nombre total d'échantillons actuels envoyés.
- Bleu : La moyenne actuelle de tous les échantillons envoyés.
- Rouge : L'écart type actuel.
- Vert : débit représentant le nombre de requêtes par minute traitées par le serveur.
Pour analyser les performances du serveur Web testé, vous devez vous concentrer sur 2 paramètres :
- Débit
- Déviation
Le débit est le paramètre le plus important. Il représente la capacité du serveur à gérer une charge importante. Plus le débit est élevé, meilleures sont les performances du serveur.
Dans ce test, le débit du serveur Google est de 591 999/minute. Cela signifie que le serveur Google peut gérer 591 999 requêtes par minute. Cette valeur est assez élevée, nous pouvons donc conclure que le serveur Google a de bonnes performances.
L'écart est affiché en rouge - il indique l'écart par rapport à la moyenne. Plus c'est petit, mieux c'est.
Remarque : Les valeurs ci-dessus dépendent de plusieurs facteurs tels que la charge actuelle du serveur chez Google, votre vitesse Internet, la puissance de votre microprocesseur,... Par conséquent, il est très peu probable que vous obteniez les mêmes résultats que ci-dessus.