Processeur en JMeter: Préprocesseur et postprocesseur
⚡ Résumé intelligent
Processeur en JMeter modifie les requêtes de l'échantillonneur avant ou après leur exécution. Le préprocesseur prépare les données de la requête, tandis que le postprocesseur les exécute.tracLes valeurs ts et le flux de test de contrôle permettent la corrélation, le paramétrage dynamique et un comportement fiable lors des tests de performance.

Un processeur dans Apache JMeter est un élément du plan de test qui modifie les échantillonneurs dans son périmètre. Il s'exécute automatiquement, soit juste avant qu'une requête ne quitte JMeter ou immédiatement après la réception d'une réponse, ce qui en fait le principal mécanisme de gestion des données dynamiques pendant une test de performance.
Il existe 2 types de processeurs :
- Pré-processeur
- Post-processeur
La portée détermine la distance jusqu'où un processeur peut agir. Un processeur placé directement sous un Plan de test Un groupe de threads s'applique à tous les échantillonneurs qui lui sont subordonnés, tandis qu'un processeur imbriqué dans un échantillonneur n'affecte que la requête en cours. La compréhension de cette règle permet d'éviter les erreurs de configuration décrites dans la section dépannage de cette page.
Pré-processeur
Le préprocesseur exécute une action avant faire une demande d'échantillonneur.
Prenons un exemple simple : disons que vous vouliez JMeter pour « araignée » à travers le site Web testé, analyser lien (vérifiez tous les liens sur la page) et retourner le HTML. Vous ajouteriez une action telle que « analyseur de lien HTML » à votre contrôleur avant de créer une requête HTTP.
Le schéma ci-dessus montre le préprocesseur placé entre le contrôleur et la requête sortante. Comme il s'exécute en premier, c'est l'endroit approprié pour construire les données de la requête : générer un horodatage, lire une valeur à partir d'une colonne CSV, réécrire un identifiant de session dans le fichier. URLou en attribuant des identifiants différents à chaque utilisateur virtuel.
Post-processeur
Le post-processeur exécute une action après avoir effectué une demande d'échantillonneur.
Prenons un exemple simple : JMeter envoie une requête HTTP au serveur Web testé (etc. www.google.com) et obtenez la réponse. Tu veux JMeter Pour interrompre le test si la réponse du serveur est une erreur, vous pouvez utiliser le post-processeur comme suit :
Comme l'illustre le deuxième schéma, le post-processeur lit la réponse une fois l'échantillonneur terminé. C'est également la solution standard pour la corrélation. Lorsqu'un serveur renvoie un jeton, un identifiant de session ou un numéro de commande qui change à chaque exécution, un post-processeur capture cette valeur. JMeter variable afin que le prochain échantillonneur puisse la réutiliser.
Types de préprocesseurs dans JMeter
Apache JMeter Livré avec un ensemble compact de préprocesseurs. Chacun prépare un échantillonneur différemment ; le choix de l’élément approprié permet ainsi de conserver un plan de test lisible et facile à maintenir.
- Exemple de délai d'attente : Définit une durée maximale pour une requête. Tout échantillonneur dont l'exécution dépasse la valeur configurée est considéré comme ayant échoué.
- Paramètres utilisateur: Attribue des valeurs spécifiques aux variables pour chaque utilisateur virtuel, de sorte que chaque thread envoie son propre ensemble de données.
- Analyseur de liens HTML : Il parcourt la page testée, analyse les liens qu'il trouve et les intègre dans la requête HTTP suivante.
- HTTP URL Modificateur de réécriture : Injecte un identifiant de session dans le URL pour les applications qui tracsessions k sans cookies.
- Paramètres utilisateur RegEx : Renseigne les paramètres de la requête à l'aide des valeurs capturées par une expression régulière à partir d'une réponse précédente.
- Préprocesseur JDBC : Exécute une instruction SQL avant l'échantillonneur, ce qui est utile pour initialiser ou réinitialiser les enregistrements de la base de données.
- Préprocesseur JSR223 : Exécute un Groovy or Java Script permettant de gérer toute logique de préparation personnalisée. Il remplace l'ancien préprocesseur BeanShell et offre des performances nettement supérieures en cas de forte charge.
Astuce : Privilégiez le préprocesseur JSR223 avec le Groovy langage via BeanShell. Groovy Les scripts sont compilés et mis en cache, ce qui leur permet de consommer beaucoup moins de ressources CPU lorsque des milliers de threads s'exécutent en parallèle.
Types de post-processeurs dans JMeter
Les postprocesseurs se répartissent en deux groupes : extracLes fonctions qui extraient des valeurs d'une réponse et les gestionnaires qui réagissent au résultat d'un échantillonneur sont deux types de fonctions distinctes. Le tableau ci-dessous associe chaque élément au format de réponse qui lui convient le mieux.
| Postprocesseur | Idéal pour | Utilisation typique |
| Expression régulière Extractor | Toute réponse textuelle | Capture de jetons ou d'identifiants à partir de HTML et de texte brut |
| Limite Extractor | Toute réponse textuelle | Capture d'une valeur à l'aide d'une limite gauche et droite au lieu d'une expression régulière complète |
| JSON Extractor | Réponses JSON | Lecture des champs des charges utiles REST pendant Test d'API |
| CSS/jQuery Extractor | Réponses HTML | Sélectionner un élément par sélecteur CSS |
| Ex XPathtractor | Réponses XML et XHTML | Navigation dans une arborescence de documents structurée |
| Postprocesseur JDBC | Résultats de la base de données | Vérification ou nettoyage des lignes après une requête |
| Postprocesseur JSR223 | Toute réponse | Analyse et assertions personnalisées par script |
| Gestionnaire d’actions d’état du résultat | Toute réponse | Arrêterping un thread ou l'ensemble du test lorsqu'un échantillonneur échoue |
La frontière Extractor est arrivé en JMeter 4.0 et est souvent l'option la plus rapide à utiliser, car elle ne demande que le texte situé immédiatement à gauche et à droite de la valeur. L'expression régulière Extractor reste le choix le plus flexible lorsque le balisage environnant varie d'une réponse à l'autre.
Différence entre préprocesseur et postprocesseur
Ces deux éléments partagent les mêmes règles de portée, mais ils résolvent des problèmes opposés. La comparaison ci-dessous résume cette distinction avant l'exemple détaillé.
| Paramètres | Préprocesseur | Postprocesseur |
| Temps d'exécution | S'exécute avant que l'échantillonneur n'envoie sa requête | S'exécute après que l'échantillonneur a reçu sa réponse |
| Objectif principal | Prépare et modifie les données de requête | Lit les données de réponse et y réagit. |
| Éléments typiques | Paramètres utilisateur, analyseur de liens HTML, préprocesseur JSR223 | Expression régulière Extractor, JSON Extractor, Gestionnaire d'actions d'état de résultat |
| Effet sur le débit | Impossible d'arrêter le test, cela ne fait que modifier la requête. | Peut interrompre un thread ou l'exécution complète du test. |
| Objectif commun | Paramétrage | Gestion des corrélations et des erreurs |
En pratique, ces deux éléments fonctionnent de concert. Un postprocesseur récupère un jeton de session à partir de la réponse de connexion, et un préprocesseur, lors de la requête suivante, injecte ce jeton avant l'envoi de l'appel. L'exemple qui suit illustre le rôle du postprocesseur dans ce modèle.
Exemple de post-processeur
Ce didacticiel vous montrera des instructions étape par étape sur la façon d'utiliser le post-processeur dans JMeter. Commençons par le simple script de test.
- JMeter envoie une requête HTTP au serveur Web testé www.google.com.
- JMeter obtient une réponse de la Google serveur.
- Si la réponse du serveur est une erreur, JMeter vont Arrêtez le test.
- Si la réponse du serveur OK (pas d'erreur), JMeter vont continuer le test.
Voici la feuille de route de cet exemple :
Condition préalable:
We réutilisation les étapes 1 et 2 de l'article JMeter Test de performance. Si JMeter n'est pas encore installé, suivez les instructions JMeter guide d'installation d'abord.
Étape 1) Ajouter un groupe de threads
Faites un clic droit sur l' Plan de test et ajoutez un nouveau groupe de threads : Ajouter -> Sujets (utilisateurs) -> Groupe de discussion
Mais dans le panneau de configuration du groupe de threads, entrez les propriétés du fil comme suit :
Ce paramètre permet JMeter créer des 10 demande de l'utilisateur de http://www.google.com 10 fois.
Étape 2) Ajouter JMeter éléments
- Ajouter une requête HTTP par défaut
- Ajouter une requête HTTP
Nous faisons encore JMeter envoyer une demande http://www.google.com à Google serveur.
Étape 3) Ajouter un élément de post-processeur
Clic droit Groupe de discussion -> Ajouter -> Post-processeur -> Gestionnaire d’actions d’état du résultat
Gestionnaire d’actions d’état du résultat permet à l'utilisateur d'arrêter le thread ou l'ensemble du test si la demande de l'utilisateur a échoué.
Dans le volet Poignée d’action d’état du résultat, choisissez Arrêter le test maintenant. Cette sélection arrêtera le test si JMeter obtenez l'erreur de la réponse du serveur.
Étape 4) Configurez la requête HTTP
Ouvrez le panneau de requête HTTP. Entrer "abc" au champ Chemin.
Quand vous entrez "abc" au chemin, JMeter va créer un URL demande à Google Serveur : http://www.google.com/abc. Ceci URL n'existe pas sur Google serveur. C'est mal URL demande donc Google Le serveur renverra une erreur.
Étape 5) Ajouter une arborescence de résultats
Clic droit Groupe de discussion -> Ajouter -> Auditeur -> Afficher l'arborescence des résultats
Étape 6) Exécuter le test
Sélectionnez Afficher l'arborescence des résultats, appuyez sur le bouton Exécuter dans la barre de menu. Vous verrez le erreur réponse de Google Le serveur et le test s'arrêteront. sans pour autant compléter 100 fils.
Revenez maintenant à l'étape 4, ouvrez le volet Requête HTTP, saisissez «calendrier» au volet. Cela fait JMeter créer des URL demandez https://calendar.google.com/calendar/u/0/r à la Google serveur. Ceci est correct URL demande donc Google Le serveur renverra OK (aucune erreur).
Sélectionnez Afficher l'arborescence des résultats, appuyez sur le bouton Exécuter dans la barre de menu. Vous verrez le OK réponse de Google Le serveur et le test se poursuivront jusqu'à ce que les 100 threads soient terminés.
Ajout d'un affirmation L'utilisation conjointe du gestionnaire d'actions d'état de résultat rend la vérification plus stricte, car une assertion peut échouer pour un échantillonneur qui a renvoyé un code HTTP 200 mais a fourni un contenu incorrect.
Dépannage
Si vous rencontrez le problème lors de l’exécution du scénario ci-dessus… procédez comme suit :
- Vérifiez si vous vous connectez à Internet via un proxy. Si oui, supprimez le proxy.
- Ouvrir une nouvelle instance de Jmeter
- Ouvrez le ProcesseurTestPlan.jmx dans Jmètre
- Double-cliquez sur Groupe de discussions -> Afficher l'arborescence des résultats
- Exécutez le test
Si un post-processeur semble inactif, vérifiez d'abord sa position. Un post-processeur placé en dehors du périmètre de l'échantillonneur qu'il cible ne s'exécute jamais, ce qui est la cause la plus fréquente d'un résultat vide.tracvariable ted. Éléments associés tels que le Edge Controllers et tests distribués Suivre la même logique de portée.









.gif)

.gif)