Mini tutoriel JMeter : Enregistrer le champ Commentaires des éléments de test dans le fichier de résultats

Suite à une question sur le groupe de discussion JMeter en français, voici un mini-tutoriel sur comment enregistrer le champ Commentaires des éléments de test dans le fichier de résultats de JMeter.

On commence avec une vue d’un arbre de test très simple :

Dans l’échantillon Requête HTTP, on définit un commentaire :

En fils de l’échantillon Requête HTTP, on a donc un Pré-Processeur BeanShell :

Le script (Java) du BeanShell est :

vars.put("COMMENTAIRE", sampler.getComment());

Cela récupére la valeur du champ Commentaires (sampler.getComment()) et  la dépose (var.put()) dans une variable JMeter donnée (ici COMMENTAIRE).

Ensuite on a un récepteur Enregistreur de données (par exemple), dans lequel on définit un chemin et nom de fichier de résultats.

Toujours dans l’enregistreur de données, on clique sur le bouton Configurer afin de changer le format par défaut (CSV depuis JMeter 2.9) en XML. Pourquoi ? car le champ Commentaires est multi-ligne, et donc le format CSV n’est pas adapté au multi-ligne (sauf si le commentaire tient sur 1 seule ligne ;-))

On clique sur la case Enregistrer au format XML, puis on clique sur le bouton Fait.

Ensuite il faut éditer le fichier suivant :

JMeter_Home/bin/jmeter.properties

Vers la ligne n°444, vous allez retrouver la propriété sample_variables en commentaire :

Ajouter la ligne suivante pour demander à JMeter de mettre dans le fichier de résultat (csv ou jtl) la valeur de la variable COMMENTAIRE lors de l’enregistrement du résultat de l’élément dans le fichier. (doc de sample_variables)

sample_variables=COMMENTAIRE

Enregistrer le fichier et fermer.

(Re-)démarrer JMeter pour la prise en compte du changement, puis lancer le test.

A la fin du test, si vous regardez le fichier des résultats, vous avez maintenant la valeur du champ Commentaires dans un couple attribut-valeur COMMENTAIRE :

<?xml version="1.0" encoding="UTF-8"?>
<testResults version="1.2">
<httpSample t="307" lt="206" ts="1369674390669" s="true" lb="Requête HTTP" rc="200" 
       tn="Groupe d&apos;unités 1-1" by="9944" ng="1" na="1" hn="ender" COMMENTAIRE="Commentaire de ma requête HTTP"/>
</testResults>

 

Et voilà!

 

 

En bonus, voici comment enregistrer le champ Commentaires du Groupe d’unités au début du fichier de résultat de JMeter :

La capture d’écran ci-dessous montre les éléments ajoutés en bonus :

On note donc l’utilisation du moteur d’utilisateurs Groupe d’unités de début, qui a la particularité de s’éxécuter avant les Groupes d’unités ‘normaux’, au début du tir.

Dans ce Groupe d’unités de début on place un commentaire pour, par exemple, décrire son scénario :

Ensuite, en fils du Groupe d’unités de début, on place une Requête Java (par exemple, mais un échantillon Débogage fait aussi bien, voir mieux, l’affaire).

Volontairement, j’ai changé le Nom de l’élément afin de bien distinguer la ligne « Caractérisques du scénario » dans mon futur fichier de résultat.

En fils, toujours un Pré-Processeur BeanShell :

Le script (Java) du BeanShell est :

vars.put("COMMENTAIRE", (ctx.getThreadGroup()).getComment());

Cela récupére la valeur du champ Commentaires de Groupe d’unités rattaché à l’élement – ici le groupe d’unités de début – (ctx.getThreadGroup()).getComment()) et  la dépose (var.put()) dans une variable JMeter donnée (ici COMMENTAIRE).

On enregistre, et on lance de nouveau le tir.

 

Et voilà, une nouvelle ligne s’ajoute au début du fichier :

<?xml version="1.0" encoding="UTF-8"?>
<testResults version="1.2">
<sample t="154" lt="0" ts="1369677569228" s="true" lb="Caratéristiques du scénario" rc="" 
 tn="Groupe d&apos;unités de début 1-1" by="0" ng="1" na="1" hn="ender" COMMENTAIRE="Scénario A avec 2 écrans de validation"/>
<httpSample t="312" lt="210" ts="1369677569505" s="true" lb="Requête HTTP" rc="200" 
         tn="Groupe d&apos;unités 1-1" by="9944" ng="1" na="1" hn="ender" COMMENTAIRE="Commentaire de ma requête HTTP"/>
</testResults>

 

Bon continuation dans vos aventures JMeter.

./