Exécuter son scénario de tir de charges
JMeter : Exécuter son scénario de tir de charges
Le scénario fonctionnel est donc enfin dans JMeter, nous y avons apporté des affinages, et également personnalisé les tests d’assertion de chaque requête. Pour finir, nous avons contrôlé que l’exécution d’une passe (1 utilisateur virtuel qui exécute 1 fois le scénario) se déroule correctement.
Il nous reste à passer à la vitesse supérieure : stresser un peu plus son serveur Tomcat… Pour cela nous allons jouer sur les paramètres de l’item Thread Group.
Allez donc sur l’item Thead Group pour ajouter les utilisateurs virtuels (disons 10), sur une période de montée en charge de 10 secondes, et chaque utilisateur virtuel va exécuter 100 fois le scénario de tir.

On relance le tir de charges (Ctrl+E, puis Ctrl+R).
On notera pendant l’exécution du tir de charges, en haut à droite de la fenêtre JMeter, il y a :
- Un petit carré qui est vert, ce qui signifie que le tir est en cours, quand il est terminé, il deviendra gris
- Le premier chiffre (4) indique le nombre d’utilisateurs virtuels en train de “travailler”
- Le deuxième chiffre (10) indique le nombre d’utilisateurs virtuels prévus pour ce test de charges (la valeur du champ Number of Threads (users) dans l’item Thread Group)

Voici le résultat de l’exécution de ce petit tir de charges :

Et voilà, au total, 6000 requêtes. Chaque cas de test a été demandé 1000 fois (10 utilisateurs virtuels X 100 boucles).
Quelques explications sur les colonnes :
- Average (ms) : Moyenne de temps de réponse pour l’élément
- Min (ms) :Valeur minimum de temps de réponse pour l’élément
- Max (ms) : Valeur maximum de temps de réponse pour l’élément
- Std. Dev. : La déviation standard pour l’élément.
- Error % : Pourcentage de résultat en erreur pour l’élément.
- Throughput : Bande passante exprimée en sec ou min ou heure. En d’autres termes, combien de fois on peut avoir l’élément en 1 sec ou 1 min ou 1 heure
- KB/sec : Vitesse de transfert en Kilo-octets par seconde
- Avg. Bytes : Moyenne des octets. Indique le nombre d’octets moyenne transférés pour chaque requête
Ceci conclut cette petite introduction aux tests de charges d’un site Web avec Apache JMeter.
Quelques remarques :
- Ceci est une petite introduction à l’utilisation de JMeter pour faire un tir de charge sur un “site Web”. C’est modeste, il faut en effet, faire plusieurs types de tests de charges pour avoir une bonne idée des performances d’un environnement (par exemple, de bande passante, de transactions/sec, de vitesse de croisière, par paliers de VU (utilisateurs virtuels), par période Normale/Pic/Normale, etc.)
- Par ailleurs, l’item Summary Report est insuffisant pour avoir un bon aperçu des performances d’une plateforme, il faut en effet regarder l’évolution des temps de réponses durant le tir, par exemple à travers un item Graph Results dans JMeter, ou à travers un tableau croisé dynamique (table pivot) dans OpenOffice Calc ou Microsoft Excel (ou Access). Le table pivot récupérant les données depuis le fichier d’enregistrement des résultats de JMeter (champ Write All Date to a File). Le travail sur les données d’un résultat de test de charges sera l’un des prochains articles sur mon blog, patience donc. MAJ: L’article est fait, clic ici.
- N’allez pas mettre 100 VU, et lancer un nouveau tir de charge… vous allez surcharger la bande passante de votre carte réseau, votre CPU, et vous aurez peut-être même un OutOfMemory de la JVM exécutant JMeter. Si vous devez simuler beaucoup d’utilisateurs, il est préférable d’utiliser plusieurs “injecteurs” (station JMeter) qui seront pilotés par une station JMeter principale. La aussi, il faut que j’en fasse un article.
- Pour terminer, il faut aussi que je fasse un article pour montrer comment “variabiliser” les données saisies dans les formulaires Web, histoire que le robot ne fasse pas la même transaction à chaque appel du scénario. MAJ: l’article est fait, clic ici
- Ah! et il faut aussi que je vous parle des “think time” dans un article… Il y a en effet une grande différence entre le comportement d’un être humain et un robot. Ce dernier exécute les requêtes les unes à la suite des autres sans délai, alors que nous (pauvres humains) mettons quelques ms/secs/min pour faire une action sur notre navigateur.
- Bon je m’arrête là. J’ai beaucoup de choses à dire, mais à chaque jour suffit sa peine
./End
Laisser un commentaire