jMeter - Expressions régulières
Les expressions régulières sont utilisées pour rechercher et manipuler du texte, sur la base de modèles. JMeter interprète les formes d'expressions régulières ou de modèles utilisés tout au long d'un plan de test JMeter, en incluant le logiciel de correspondance de modèles Apache Jakarta ORO .
Avec l'utilisation d'expressions régulières, nous pouvons certainement gagner beaucoup de temps et obtenir une plus grande flexibilité lorsque nous créons ou améliorons un plan de test. Les expressions régulières fournissent une méthode simple pour obtenir des informations à partir de pages lorsqu'il est impossible ou très difficile de prédire un résultat.
Un exemple d'utilisation standard d'expressions consiste à obtenir un ID de session à partir de la réponse du serveur. Si le serveur renvoie une clé de session unique, nous pouvons facilement l'obtenir en utilisant des expressions dans notre script de chargement.
Pour utiliser des expressions régulières dans votre plan de test, vous devez utiliser l'extracteur d'expressions régulières de JMeter. Vous pouvez placer des expressions régulières dans n'importe quel composant d'un plan de test.
Il convient de souligner la différence entre contains et matches, tel qu'utilisé sur l'élément de test d'assertion de réponse -
containssignifie que l'expression régulière correspond à au moins une partie de la cible, donc "alphabet" "contient" "ph.b." car l'expression régulière correspond à la sous-chaîne «phabe».
matchessignifie que l'expression régulière correspond à l'ensemble de la cible. Par conséquent, «l'alphabet» est «mis en correspondance» par «al. * T».
Supposons que vous souhaitiez faire correspondre la partie suivante d'une page Web -
name = "file" value = "readme.txt"
Et vous voulez extraire readme.txt. Une expression régulière appropriée serait -
name = "file" value = "(.+?)">
Les caractères spéciaux ci-dessus sont -
( et ) - ceux-ci entourent la partie de la chaîne de correspondance à renvoyer
. - correspond à n'importe quel caractère
+ - une ou plusieurs fois
? - arrêter quand le premier match réussit
Créer un plan de test JMeter
Laissez-nous comprendre l'utilisation des expressions régulières dans l'extracteur d'expressions régulières - un élément de post-processeur en écrivant un plan de test. Cet élément extrait le texte de la page actuelle à l'aide d'une expression régulière pour identifier le modèle de texte auquel un élément souhaité se conforme.
Nous écrivons d'abord une page HTML contenant une liste de personnes et leurs identifiants de messagerie. Nous le déployons sur notre serveur tomcat. Le contenu de html (index.html) est le suivant -
<html>
<head>
</head>
<body>
<table style = "border: 1px solid #000000;">
<th style = "border: 1px solid #000000;">ID</th>
<th style = "border: 1px solid #000000;">name</th>
<th style = "border: 1px solid #000000;">Email</th>
<tr>
<td id = "ID" style = "border: 1px solid #000000;">3</td>
<td id = "Name" style = "border: 1px solid #000000;">Manisha</td>
<td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
</tr>
<tr>
<td id = "ID" style = "border: 1px solid #000000;">4</td>
<td id = "Name" style = "border: 1px solid #000000;">joe</td>
<td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
</tr>
</table>
</body>
</html>
En le déployant sur le serveur tomcat, cette page ressemblerait à celle illustrée dans la capture d'écran suivante -
Dans notre plan de test, nous sélectionnerons la personne dans la première ligne du tableau des personnes dans la page de liste des personnes ci-dessus. Pour capturer l'ID de cette personne, nous allons d'abord déterminer le modèle où nous trouverons la personne dans la deuxième ligne.
Comme on peut le voir dans l'instantané suivant, l'ID de la deuxième personne est entouré de <td id = "ID"> et </ td>, et c'est la deuxième ligne de données ayant ce modèle. Nous pouvons l'utiliser pour correspondre au modèle exact dont nous voulons extraire les informations. Comme nous voulons extraire deux informations de cette page, l'ID de la personne et le nom de la personne, les champs sont définis comme suit -
Démarrez JMeter, ajoutez un groupe de threads Test Plan → Add→ Threads(Users)→ Thread Group.
Ensuite, ajoutez une requête HTTP d'échantillonneur, sélectionnez le plan de test, faites un clic droit Add → Sampler → HTTP Request et entrez les détails comme indiqué ci-dessous -
Name - Gérer
Server Name or IP - localhost
Port Number - 8080
Protocol - Nous garderons ce champ vide, ce qui signifie que nous voulons HTTP comme protocole.
Path - jmeter / index.html
Ensuite, ajoutez un extracteur d'expressions régulières. Sélectionnez l'échantillonneur de requête HTTP (Gérer), faites un clic droitAdd → Post Processor → Regular Expression Extractor.
Le tableau suivant fournit une description des champs utilisés dans la capture d'écran ci-dessus -
Sr. Non | Champ et description |
---|---|
1 | Reference Name Le nom de la variable dans laquelle le test extrait sera stocké (refname). |
2 | Regular Expression Le modèle par rapport auquel le texte à extraire sera mis en correspondance. Les groupes de texte qui seront extraits sont encadrés par les caractères «(» et «)». Nous utilisons ". +?" pour indiquer une seule instance du texte entre les balises <td ..> .. </td>. Dans notre exemple, l'expression est - <td id = "ID"> (+?) </td> \ s * <td id = "Name"> (+?) </td> \ s * |
3 | Template Chaque groupe de texte extrait est placé en tant que membre de la variable Personne, en suivant l'ordre de chaque groupe de motif entouré par '(' et ')'. Chaque groupe est stocké sous le nom refname_g #, où refname est la chaîne que vous avez entrée comme nom de référence et # est le numéro du groupe. $ 1 $ to fait référence au groupe 1, $ 2 $ to se réfère au groupe 2, etc. $ 0 $ fait référence à ce que l'expression entière correspond. Dans cet exemple, l'ID que nous extrayons est conservé dans Person_g1, tandis que la valeur Name est stockée dans Person_g2. |
4 | Match No. Puisque nous prévoyons d'extraire seulement la deuxième occurrence de ce modèle, correspondant au deuxième volontaire, nous utilisons la valeur 2. La valeur 0 ferait une correspondance aléatoire, tandis qu'une valeur négative doit être utilisée avec le contrôleur ForEach. |
5 | Default Si l'élément n'est pas trouvé, ce sera la valeur par défaut. Ce champ n'est pas obligatoire. Vous pouvez le laisser vide. |
Ajoutez un écouteur pour capturer le résultat de ce plan de test. Cliquez avec le bouton droit sur le groupe de threads et sélectionnez l'option Ajouter → Écouteur → Afficher l'arborescence des résultats pour ajouter l'écouteur.
Enregistrez le plan de test sous reg_express_test.jmx et exécutez le test. La sortie serait un succès comme indiqué dans la capture d'écran suivante -