“Jmeteriser” son scénario fonctionnel
Ecrire son scénario fonctionnel dans JMeter
Avec JMeter, on peut bien sur définir manuellement chaque appel de page avec le ou les paramètres… cela sera long et pénible, et surtout cela va donner lieu à une phase de vérification de son scénario « jmeterisé » importante car il risque d’y avoir des « bugs » normal, c’est du travail « manuel ».
JMeter propose une fonctionnalité « proxy » qui peut enregistrer une session de navigation directement dans des items de HTTP Request. Du coup, la « jmeterisation » devient plus facile et rapide. Après l’enregistrement de la session de navigation, on aura juste des petits ajustements à faire.
La session de navigation sera donc une exécution du scénario fonctionnel sur son navigateur, session qui sera enregistrée par JMeter en même temps.
Comment faire ?
Lancer JMeter, (sous Windows, on utilisera le fichier JMETER_HOME/bin/jmeterw.cmd)

Sélectionner l’item Workbench, clic droit sur la souris, et ajouter un item HTTP Proxy Server.

Puis aller sur l’item Test Plan, un clic droit sur la souris, et ajouter un item Thread Group.

Ensuite, sélectionner l’item Thread Group, un clic droit sur la souris, et ajouter un item Recording Controller.

Le HTTP Proxy Server et le Recording Controller sont les deux seuls éléments que sont nécessaires pour l’enregistrement d’une session de navigation. Cependant nous allons y ajouter néanmoins quelques autres items pour répondre à quelques contraintes ou pour nous faciliter le travail.
L’item HTTP Requests Defaults qui va nous permettre de variabiliser le nom du serveur web, son port, etc.

Ensuite on paramétrera les champs suivants :

ATTENTION : si vous utilisez un Tomcat sur la même machine que votre JMeter, il y aura certainement un conflit sur le port 8080 (car Tomcat par défaut utilise le 8080 et l’élément HTTP Proxy Server de JMeter également). Il convient donc de mettre des ports différents. Par exemple mettre 8081 sur le HTTP Proxy (et dans le configuration du navigateur au niveau du proxy (cf plus bas).
L’item HTTP Cookie Manager qui va nous permettre de faire du suivi de cookie (en particulier le suivi de session)

On va cocher l’option Clear cookies each iteration afin d’avoir une nouvelle session pour chaque itération lors du test de charges

Le listener View Results Tree qui va enregistrer les échanges HTTP, et si besoin, nous permettre de les consulter plus tard lors de l’affinage du scénario de tir de charges.

Au final, on a donc les items suivants :

Avant de faire le démarrage du serveur Proxy de JMeter, on ira cocher le paramètre Add Assertions dans l’item HTTP Proxy Server. Ce paramètre ajoutera pour chaque requête HTTP (HTTP Sampler) un item d’assertion qui nous servira pour vérifier la validité de la réponse reçue lors du test de charges.
On va ensuite exclure les images GIF de l’enregistrement. Pour cela, dans la partie URL Patterns to Exclude on va ajouter la valeur suivant « .*\.gif » qui est l’expression régulière pour les URL qui contiennent un fichier GIF.
A noter : l’exclusion des éléments associés à une page, c’est-à-dire les images, feuilles de style, etc. est un choix à faire en fonction du type de test de charge voulu. Par exemple pour un test de charges dont l’objectif est la validation de la tenue de performance du serveur d’applications et des temps de réponses, il est préférable de ne pas inclure les images dans le scénario de tir. Par contre, si l’objectif est la validation de la bande passante, les images et autres éléments sont à inclure.

Démarrage du serveur Proxy JMeter
Pour cela, on se place sur l’item HTTP Proxy Server, on clique sur le bouton Start situé en bas.

Configuration du navigateur
Il faut ensuite configurer le navigateur pour qu’il utilise JMeter comme proxy. Par exemple avec le navigateur SeaMonkey, menu Edition > Préférences.
On renseigne les champs suivants :

Également on configurera le navigateur pour ne pas avoir de cache et on videra son cache de navigateur avant la session d’enregistrement. Si on ne fait pas cela, on aura pour certains éléments des codes de retours HTTP 304 (i.e. Déjà dans le cache du navigateur) lors de leur premier appel. Et donc le test de charges sera faussé, car le robot ne récupéra pas « réellement » les éléments.

Et hop, tout est maintenant prêt pour démarrer sa navigation en suivant le scénario fonctionnel établi.
On prend donc son navigateur Internet (ici SeaMonkey) et on reproduit le scénario fonctionnel étape par étape, en étant calme et concentré, car tout ce l’on fait est enregistré par JMeter.
Pendant cette navigation, on remarquera dans la fenêtre JMeter que de nouveaux items viennent s’ajouter en sous-items de Recording Controller.

Une fois sa session de navigation finie, on clique sur le bouton Stop de l’item HTTP Proxy Server

Et voilà le résultat de l’enregistrement au niveau de JMeter

Passons à l’étape suivante, l’affinage du scénario.
Laisser un commentaire