Voici un billet pour parler de l’extracteur d’expressions régulières dans JMeter.
Commençons par le plan de test : très simple, une requête avec en élément fils un extracteur d’expression régulière.
La requête HTTP est simplement la page d’accueil de ce blog.
On place un échantillon Débogage après la requête HTTP qui possède l’extracteur d’expression régulière, il permet d’afficher différentes informations internes à JMeter. Ici, on s’intéresse aux valeurs des variables de JMeter.
Ensuite (enfin) vient l’extracteur d’expression régulière, on commence par un « simple ».
Quelques explications :
- Champs réponse à cocher : Corps. La portée de l’extracteur regexp sera le corps de la réponse (le texte html en général)
- Nom de référence : le nom de la variable dans laquelle JMeter va déposer les données récupérée par l’expression régulière
- Expression régulière : ici « (milamber) », qui signifie : « je recherche le mot milamber, et je voudrais récupérer la valeur ». Il n’y a pas à proprement parler d’expression régulière ici, car aucun caractères de correspondance de caractères n’est utilisé (par exemple « * »).
- Canevas : $1$ correspondant au premier « couple » de parenthèses dans l’expression régulière. Donc ici « milamber »
- Correspond au num. : 0. Parmi « tous les milamber » qui vont être trouvés, JMeter en choisi un au hasard et le place dans la variable JMeter NOM_VARIABLE
- Valeur par défaut : correspond à la valeur que va prendre la variable NOM_VARIABLE si jamais l’expression régulière n’est pas trouvée (autrement si il n’y a pas de milamber dans le corps de la réponse)
On exécute (on lance) le test JMeter. Avec le récepteur Arbre de résultats, on peut déjà voir les données de réponse de la page d’accueil de ce site. On voit qu’il y a plusieurs occurrences de « milamber ».
Dans l’échantillon Débogage, dans l’onglet Données de réponse, on retrouve la variable NOM_VARIABLE.
Quelques explications sur les différents « NOM_VARIABLExxx » que l’on trouve.
- NOM_VARIABLE=milamber, correspond bien entendu à la valeur recherchée (et donc trouvée par JMeter) à partir de l’expression régulière
- NOM_VARIABLE_g=1, c’est le nombre de variables $x$ trouvées
- NOM_VARIABLE_g0=milamber, c’est la chaine correspondant à l’expression régulière entière
- NOM_VARIABLE_g1=milamber, correspond à ce qu’a trouvée l’expression régulière dans la partie entre parenthèses
Ici, la variable NOM_VARIABLE_g0 est la même que NOM_VARIABLE_g1 car l’expression régulière est (milamber), et est très simple. Dans le dernier exemple de ce billet, ce n’est pas le cas, voir plus bas.
Changeons l’expression régulière en mettant simplement un M majuscule à Milamber :
Le résultat dans l’échantillon Débogage, c’est « Milamber » en majuscule. Donc l’extracteur d’expression régulière est sensible à la casse.
Changeons l’expression régulière par (Milember), donc volontairement avec une faute.
Ici, comme il n’y a pas de mot Milember dans les données de réponse de la page HTML retournée, la valeur de NOM_VARIABLE est la valeur par défaut (ici le message d’erreur).
Revenons à (milamber) comme expression régulière. Comme je sais qu’il y a plusieurs « milamber » dans la page HTML, et que j’aimerais bien tous les retrouver, on change la valeur du champ Correspond au num par « -1 ». Cette valeur va indiquer à JMeter d’aller chercher toutes les occurrences de l’expression régulière.
Dans la vue données de réponses de l’échantillon Débogage, on a maintenant une suite de NOM_VARIABLE_x où x correspond au numéro de « milamber » trouvé. La variable NOM_VARIABLE se retrouve avec la valeur par défaut.
Quand on regarde à la fin des variables affichées par l’echantillon Débogage, on trouve une variable spéciale NOM_VARIABLE_matchNr = 195. Ce dernier correspond au nombre de « milamber » trouvé.
On a vu que l’extracteur d’expression régulière était sensible à la casse. Pour le rendre « insensible », il suffit de faire précéder l’expression régulière par « (?i) ».
Dans la liste des variables trouvées, on a maintenant à la fois des « milamber » et des « Milamber ».
La dernière expression régulière va indiquer que l’on recherche exclusivement les « milamber » suivi de quelque chose et suivi de « .net ». C’est à dire les milamber dans « milamberspace.net ».
Le « quelque chose » est symbolisé par « .+ »
Le suivi de « .net » est symbolisé par « ?\.net » où la barre oblique inversée (l’anti-slash) sert à désactiver la propriété particulière du point dans une expression régulière.
Dans les résultats, on a donc que les « milamber » dans la chaîne « milamberspace.net ».
Voici pour ce billet montrant quelques cas d’utilisation de l’extracteur d’expression régulière. Bien entendu, ce dernier n’est pas limité à ces cas, il ne tient qu’à vous de faire de belles expressions régulières pour extraire des chaînes à partir des réponses à vos requêtes.
Bonnes regexps !
Deux liens :
- La page du manuel JMeter sur l’extracteur d’expression régulière
- La page du manuel JMeter sur les expressions régulières
./