Nous revoilà dans la deuxième partie de ce tutoriel. Pour rappel, nous étions dans la mise en œuvre d’un test de charges, dont les données injectées proviennent directement d’une base de données et ont été récupérées par JMeter, le tout expliqué dans cette partie.
Le schéma ci-dessous montre les deux parties. Dans les lignes suivantes, on s’occupera donc de la deuxième partie.
Tout d’abord, la deuxième partie débute par un Contrôleur Simple, puis on attache directement un élément de configuration Paramètres HTTP par défaut dans lequel on configure l’adresse du serveur à tester. Pour moi, cela sera un simple serveur Tomcat avec ses applications d’exemples. Ce tutoriel détaille le scénario fonctionnel.
Ensuite vient un élément de configuration Compteur, que l’on initialise (Lancer) à 1 avec un incrément de 1. Son nom de référence sera CPT.
La requête HTTP arrive ensuite. Il y a bien entendu l’URL à appeler, mais également les paramètres à envoyer dans ce formulaire pour avoir le Prénom et Nom en résultat.
C’est ici, que nous allons utiliser les variables récupérées du billet précédent. Pour cela nous allons utiliser une fonction JMeter bien pratique puisqu’elle va évaluer une chaîne de caractères générée en tant que nom de variable. La fonction est __V() (deux soulignés et V)
Nous avons ainsi :
${__V(VAR_PRENOM_${CPT})}
qui va faire pour un CPT à 1, le nom de variable VAR_PRENOM_1 (et compris comme ${VAR_PRENOM_1})
Et comme le compteur va s’incrémenter de 1 à chaque itération, nous allons avoir ${VAR_PRENOM_1}, ${VAR_PRENOM_2}, ${VAR_PRENOM_3}, etc.
En élément fils que la requête HTTP, on peut placer de manière optionnelle, une Assertion Réponse qui vient vérifier que l’envoi du formulaire a bien fonctionné (car l’application affiche le nom et prénom qui ont été envoyés).
Il ne reste plus qu’a faire une exécution (en gardant le paramétrage en 1-1-10 du groupe d’unités)
Voici les résultats dans l’élément Arbre de résultats :
Génial, cela marche ! (vous en doutiez ? ;-))
Ah mais que ce passe-t-il à partir de la septième itération ?
L’explication est simple, ma requête SQL ne renvoie que 6 éléments, donc JMeter ne trouvant plus d’éléments, envoi le nom de la variable… Allez, c’est facile à régler, il suffit de mettre dans le champ Maximum du Compteur CPT, la variable suivante : ${VAR_ID_#} qui, je vous le rappelle, correspond au nombre d’éléments retournés pour le champ VAR_ID. Donc ici pour nous c’est 6.
Ainsi lors de l’exécution, le compteur va re-boucler de 1 à 6 (min à max) indéfiniment.
Et voilà, vous avez donc maintenant un script JMeter qui attaque une table dans une base de données pour ensuite faire un test de charges avec ces données.
Une petite remarque pour la fin :
Si jamais vous voulez utiliser un plan de test similaire à celui du tutoriel pour un test de charge avec 1 million de lignes remontées par la requête SQL, il y a de forte chance pour qu’il y ait des problèmes de mémoire dans votre JMeter, car cela va faire 1 million de variables en mémoire (ouille!)
./