JMeter : le testeur d’expression régulière

Depuis la version 2.4 de JMeter, un nouvel sous-élément du récepteur Arbre de résultats est apparu, il s’agit du Testeur de RegExp.

Avant de vous montrer comment le trouver et l’utiliser, parlons-en un peu.

Comme vous le savez peut-être, JMeter dispose d’un élément Extracteur Expression régulière dans la catégorie Post-processeurs. La vocation de cet élément Extracteur Expression régulière est d’extraire à partir d’une expression régulière une ou plusieurs chaînes de caractères depuis la réponse reçue d’un échantillon de test. La puissance en termes d’extraction de données de cet élément est très forte, cependant, il est parfois peu aisée de trouver du premier coup la bonne expression régulière qui fera ce que vous voulez. En effet, vous devez jouer et rejouer le scénario pour tester votre expression régulière tant qu’elle n’est pas au point.

C’est là qu’intervient le Testeur de RegExp.

Vous l’avez déjà compris avec son nom, cet élément est un testeur d’expression régulière « au format JMeter ». Ce testeur ne se branche pas sur un échantillon, mais est un type de visualiseur du récepteur Arbre de résultats, ce qui signifie que vous allez pouvoir effectuer des tests d’expression régulière directement sur les résultats d’échantillons se trouvant dans un Arbre de résultats.

Par exemple, si vous avez suivi ce petit billet sur l’enregistrement de votre scénario fonctionnel pour une réutilisation à froid, ou bien que vous avez exécuté une fois votre scénario de test et qu’il y a un problème sur une expression régulière, le tout avec un Arbre de résultats, vous pourrez utiliser le Testeur d’expression régulière (de RegExp) pour créer ou valider votre expression régulière.

La capture d’écran ci-dessous montre le menu permettant d’accéder au testeur depuis un Arbre de résultats.

Ensuite dans le champ Expression régulière, il suffit de saisir son expression régulière (en suivant le format de JMeter, à savoir Jakarta ORO).

Dans l’exemple ci-dessous, l’expression régulière est « debian(.+?).html », signifiant : tout ce qui commence par debian et se termine par .html avec au milieu n’importe quoi. Les parenthèses indiquant que l’on souhaite récupérer ce « n’importe quoi » (dans une variable JMeter dans le cas d’un Extracteur RegExp)

Dans le champ texte de la réponse du Testeur de RegExp, on trouve les éléments de réponses suivants :

Match count: 6
Match[1][0]=debian-squeeze-772.html
Match[1][1]=-squeeze-772.
Match[2][0]=debian-squeeze-772.html
Match[2][1]=-squeeze-772.
Match[3][0]=debian-squeeze-6-0-762.html
Match[3][1]=-squeeze-6-0-762.
Match[4][0]=debian.org/releases/testing/index.fr.html
Match[4][1]=.org/releases/testing/index.fr.
Match[5][0]=debian-squeeze-6-0-762.html
Match[5][1]=-squeeze-6-0-762.
Match[6][0]=debian-squeeze-6-0-762.html
Match[6][1]=-squeeze-6-0-762.

La première ligne signifie qu’il y a eu 6 correspondances trouvées pour l’expression régulière.

Ensuite, on a des groupements « matrice », les correspondances sont indiquées sur deux lignes (ou plus, c’est en fonction du nombre de parenthèses indiquant les sections à récupérer). Pour les lignes 2 et 3 :

  • la première donne la chaîne complète de correspondance de l’expression régulière
  • la deuxième donnant la valeur voulant être récupérée (le n’importe quoi des parenthèses)

Les lignes suivantes indiquant les autres correspondances en suivant le même modèle.

Si l’élément Testeur de RegExp ne vous donne pas de réponse (écran blanc), c’est qu’il y a un problème dans le format de votre expression régulière.

Si vous êtes satisfait de votre expression régulière, il ne vous reste plus qu’à la copier/coller dans un élément Extracteur Expression régulière.

Pour plus d’aide sur les expressions régulières, j’ai fait les quelques billets suivants :

Je profite de ce billet, pour remercier Jean-Louis et Jean-Luc, deux métrologues, qui m’ont suggéré l’idée d’ajouter ce tester d’expression régulière dans JMeter. Et Jean-Louis, de nouveau, pour m’avoir fourni un exemple de code Java avec le moteur d’expression régulière du JDK.

./