Partage de technologie

Une brève discussion sur les paramètres utilisateur des expressions régulières du préprocesseur

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Une brève discussion sur les paramètres utilisateur des expressions régulières du préprocesseur

Les paramètres utilisateur d'expression régulière (RegEx User Parameters) sont un pré-processeur (Pre-Processor) qui permet aux utilisateurs d'extraire des valeurs des données de réponse en fonction d'expressions régulières et de les appliquer, et de transmettre ces valeurs en tant que paramètres aux paramètres suivants.Requête HTTP ou d'autres endroits nécessaires. Cette fonctionnalité est très flexible pour gérer le contenu dynamique, les identifiants de session, les jetons, etc. et constitue un élément clé pour la mise en œuvre de scripts de test automatisés.

scènes à utiliser

  1. Traitement des paramètres dynamiques : lorsque le système cible génère différents paramètres dynamiques (tels que l'ID de session, l'horodatage, etc.) dans chaque requête, il doit extraire les paramètres suivants et utiliser ces paramètres pour poursuivre les requêtes suivantes.
  2. Personnalisation des données de test : personnalisez les paramètres des demandes ultérieures en fonction du contenu de la réponse, par exemple en extrayant l'ID utilisateur de la réponse de connexion pour les demandes de requête de profil ultérieures.
  3. Itération des données : si la réponse contient plusieurs ensembles de correspondances, vous pouvez configurer le processeur pour parcourir l'extraction et l'appliquer à plusieurs requêtes, adaptées aux listes de tests ou aux pages de résultats de recherche.

Étapes de configuration

  1. Ajoutez des paramètres utilisateur d'expression régulière :
    ○ Dans l'atelier ou le plan de test de JMeter, sélectionnez une requête HTTP ou un autre échantillonneur qui doit être paramétré.
    ○ Cliquez avec le bouton droit et sélectionnez « Ajouter » > « Préprocesseur » > « Paramètres utilisateur des expressions régulières ».
  2. Paramètres de configuration :
    ○ Nom de référence de l'expression régulière : le nom de la variable dans l'extracteur d'expression régulière. Le nom ici doit être cohérent avec l'expression régulière.
    ○ Numéro de groupe d'expression rationnelle des noms de paramètres : numéro de groupe du nom de paramètre, comme détaillé dans les exemples suivants.
    ○ Numéro de groupe d'expressions régulières des valeurs des paramètres : la valeur correspondante du groupe de noms de paramètres, comme détaillé dans les exemples suivants.

Exemples

Nous utilisons SpringBoot pour écrire le code d'interface suivant

 @PostMapping(value = "/login",produces = "application/json;charset=UTF-8")
    public String authenticate(@RequestBody JSONObject request) {

        String validUsername = "admin";
        String validPassword = "password";
        String response = "{"total":2,"data":[{"id":123,"name":"John Doe","email":"[email protected]","phone":"123-456-7890","address":{"street":"123 Main St","city":"New York","state":"NY","zip":"10001"},"interests":["sports","music","travel"]},{"id":456,"name":"Jane Smith","email":"[email protected]","phone":"987-654-3210","address":{"street":"456 Elm St","city":"Los Angeles","state":"CA","zip":"90001"},"interests":["reading","cooking","hiking"]}]}";


        if (request.getString("username").equals(validUsername) && request.getString("password").equals(validPassword)) {
            return response;
        } else {
            return response;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Ensuite, nous écrivons le script suivant
Insérer la description de l'image ici
Groupe de discussions : Conserver la valeur par défaut
Requête HTTP 1 : protocole http, nom du serveur ou IP127.0.0.1, numéro de port 8091, méthode POST, chemin/login, encodage du contenu utf-8, données du corps du message

{
    "username": "admin",
    "password": "password"
    }
  • 1
  • 2
  • 3
  • 4

Extraction d'expressions régulières器:设置的参数为引用名称var,正则表达式"id"😦.?),"nom":"(.?)", "email" (peut être connu grâce au contenu de l'exemple de code), et notre objectif est d'extraire l'identifiant et le nom, le numéro correspondant est défini sur -1 et la valeur par défaut est NotFound
À ce stade, nous pouvons d'abord désactiver la requête HTTP 2 et les paramètres utilisateur de l'expression régulière, puis exécuter le script et afficher l'échantillonneur de débogage de l'arborescence des résultats. Vous pouvez voir les résultats suivants dans le corps de réponse des données de réponse.

Variables JMeter :
JMeterThread.last_sample_ok=false
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@4fa1cf1
DÉMARRER.HMS=165132
DÉMARRER.MS=1720515092259
DÉBUT.YMD=20240709
TESTSTART.MS=1720578466746
_jm__threadgroup__idx=0
_jmeter.U_T
=groupe de threads 1-1
var=Introuvable
var_1=
var_1_g=2
var_1_g0=“id”:123,“nom”:“John Doe”,“email”
var_1_g1=123
var_1_g2=Jean Dupont
var_2=
var_2_g=2
var_2_g0=“id”:456,“nom”:“Jane Smith”,“email”
var_2_g1=456
var_2_g2=Jane Smith
var_matchNr=2

À partir du contenu ci-dessus, nous pouvons voir la valeur de la variable var extraite par l'expression régulière correspondante. À ce stade, nous pouvons continuer à vérifier l'application du préprocesseur de paramètres utilisateur de l'expression régulière et continuer à définir d'autres paramètres de composant.
Requête HTTP 2 : protocole http, nom du serveur ou IP127.0.0.1, numéro de port 8091, méthode POST, chemin/login, encodage du contenu utf-8, puis ajoutez deux paramètres aux paramètres, renseignez respectivement les noms 123, 456, ne les utilisez pas maintenant. Quelle que soit la signification spécifique, essayons d'abord.
Paramètres utilisateur de l'expression régulière : le nom de référence de l'expression régulière est défini sur var, le nom du paramètre ici doit être cohérent avec le nom du paramètre dans l'expression régulière ci-dessus, le numéro de groupe d'expression régulière des noms de paramètres est défini sur 1, le numéro de groupe d'expression régulière des valeurs des paramètres est défini à 2, pourquoi Comment le configurer comme ça ? Nous pouvons le comprendre de cette façon. N'avons-nous pas défini 123 et 456 dans la requête HTTP 2 ? Définir le numéro de groupe d'expressions régulières des noms de paramètres sur 1 peut être compris comme prendre les paramètres de var_1_g1 et var_2_g1 dans les paramètres var. dans la requête HTTP 2 Une fois que les paramètres sont cohérents avec les paramètres ici, nous correspondrons à la relation entre les paramètres et les données, ouvrant la voie à ce que le numéro de groupe regex des valeurs des paramètres soit défini sur 2. Nous pouvons bien comprendre que lorsque les valeurs des paramètres ​​le numéro de groupe regex est défini sur 2, ce qui est obtenu Les paramètres deviennent var_1_g2 et var_2_g2.
L'étape suivante consiste à vérifier nos résultats. Exécutez le script pour afficher les données de publication du corps de la requête dans la requête HTTP 2 dans l'arborescence des résultats. Dans l'ensemble, notre requête a échoué, mais cela n'a pas d'importance. à vérifier. Le résultat n'est pas pertinent

POSTER http://127.0.0.1:8091/login
Données POST :
123=John+Doe et 456=Jane+Smith
[pas de cookies]

À partir des données POST ci-dessus, vous pouvez voir que les données correspondantes ont été reflétées dans la demande.

Précautions

● Portée : les paramètres utilisateur d'expression régulière ne prennent effet que sur la requête HTTP ou l'échantillonneur suivant. Si vous devez les appliquer globalement, pensez à utiliser "l'extracteur d'expression régulière" en conjonction avec les variables.
● Débogage : utilisez l'écouteur "Afficher l'arborescence des résultats" pour vérifier la correspondance des expressions régulières afin de garantir une extraction correcte des données.

Résumer

Les paramètres utilisateur des expressions régulières sont une fonctionnalité puissante de JMeter, qui simplifie le traitement des données dynamiques et améliore la flexibilité et l'automatisation des scripts de test. Correctement configurée et utilisée, cette fonction peut répondre efficacement aux besoins de tests de performances des systèmes complexes.