Recherche…


Introduction

Dans les tests de performances de JMeter, les corrélations permettent de récupérer des données dynamiques à partir de la réponse du serveur et de les publier dans les requêtes suivantes. Cette fonctionnalité est essentielle pour de nombreux aspects des tests, tels que les applications protégées basées sur des jetons.

Corrélation à l'aide de l'extracteur d'expression régulière dans Apache JMeter

Si vous devez extraire des informations d'une réponse textuelle, le plus simple est d'utiliser des expressions régulières. Le modèle de correspondance est très similaire à celui utilisé dans Perl. Supposons que nous voulons tester un flux de travail d'achat de billets d'avion. La première étape consiste à soumettre l'opération d'achat. L'étape suivante consiste à s'assurer que nous sommes en mesure de vérifier tous les détails en utilisant l'ID d'achat, qui doit être retourné pour la première demande. Imaginons que la première requête renvoie une page HTML avec ce type d’identifiant que nous devons extraire:

<div class="container">
  <div class="container hero-unit">
    <h1>Thank you for you purchse today!</h1>
       <table class="table">
           <tr>
             <td>Id</td>
             <td>Your purchase id is 1484697832391</td>
           </tr>
           <tr>
             <td>Status</td>
             <td>Pending</td>
           </tr>
           <tr>
             <td>Amount</td>
             <td>120 USD</td>
            </tr>
         </table>
    </div>
</div>

Ce type de situation est le meilleur candidat pour utiliser l’extracteur JMeter Regular Expression. Regular Expression est une chaîne de texte spéciale permettant de décrire un modèle de recherche. De nombreuses ressources en ligne aident à écrire et à tester les expressions régulières. L'un d'eux est https://regex101.com/ .

entrer la description de l'image ici

Pour utiliser ce composant, ouvrez le menu JMeter et: Ajouter -> Post-processeurs -> Extracteur d’expression régulière

entrer la description de l'image ici

Le Regular Expression Extractor contient les champs suivants:

  • Nom de référence - le nom de la variable pouvant être utilisée après l'extraction
  • Expression régulière - une séquence de symboles et de caractères exprimant une chaîne (motif) qui sera recherchée dans le texte
  • Template - contient des références aux groupes. Comme une regex peut avoir plusieurs groupes, elle permet de spécifier la valeur de groupe à extraire en spécifiant le numéro de groupe: $ 1 $ ou $ 2 $ ou $ 1 $$ 2 $ (extrayez les deux groupes)
  • N ° de correspondance - spécifie quelle correspondance sera utilisée (la valeur 0 correspond à des valeurs aléatoires / tout nombre positif N signifie que la valeur N / match doit être utilisée avec le contrôleur ForEach)
  • Par défaut - la valeur par défaut qui sera stockée dans la variable en cas de non-correspondance est stockée dans la variable.

La case à cocher «Appliquer à» traite des exemples de demandes de ressources incorporées. Ce paramètre définit si une expression régulière sera appliquée aux exemples de résultats principaux ou à toutes les demandes, y compris les ressources incorporées. Il y a plusieurs options pour ce paramètre:

  • Échantillon principal et sous-échantillons
  • Échantillon principal seulement
  • Sous-échantillons uniquement
  • JMeter Variable - l'assertion est appliquée au contenu de la variable nommée, qui peut être remplie par une autre requête

La case à cocher «Champ à vérifier» permet de choisir le champ auquel l'expression régulière doit être appliquée. Presque tous les paramètres sont auto-descriptifs:

  • Corps - le corps de la réponse, par exemple le contenu d'une page Web (à l'exclusion des en-têtes)
  • Body (non échappé) - le corps de la réponse, avec tous les codes d'échappement HTML remplacés. Notez que les échappements HTML sont traités sans tenir compte du contexte, de sorte que certaines substitutions incorrectes peuvent être effectuées (* cette option a une forte incidence sur les performances)
  • Body - Body as a Document - le texte extrait de différents types de documents via Apache Tika (* peut également avoir un impact sur les performances)
  • Corps - En-têtes de demande - peut ne pas être présent pour les exemples non HTTP
  • Corps - En-têtes de réponse - peut ne pas être présent pour les exemples non HTTP
  • Corps - URL
  • Code de réponse - par exemple 200
  • Corps - Message de réponse - par exemple OK

Une fois l'expression extraite, elle peut être utilisée dans les requêtes suivantes à l'aide de la variable $ {purchaseId}.

entrer la description de l'image ici

Cette table contient toutes les contractions prises en charge par les expressions régulières JMeter:

entrer la description de l'image ici entrer la description de l'image ici

Corrélation à l'aide de XPath Extractor dans JMeter

XPath peut être utilisé pour parcourir des éléments et des attributs dans un document XML. Cela peut être utile lorsque les données de la réponse ne peuvent pas être extraites à l'aide de l'extracteur d'expression régulière. Par exemple, dans le cas d'un scénario où vous devez extraire des données de balises similaires avec les mêmes attributs, mais de valeurs différentes. XPath Extractor est similaire à CSS / JQuery Extractor, mais XPath Extractor doit être utilisé pour le contenu XML alors que CSS / JQuery Extractor doit être utilisé pour le contenu HTML. Supposons que dans la réponse, nous avons une table avec des valeurs différentes où nous devons extraire la valeur de la deuxième ligne de la table.

<div id="weeklyPrices">
    <tr>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$60.00</td>
        <td>$70.00</td>
        <td>$70.00</td>
    </tr>
</div>

À l'avenir, le bon XPath pour ce cas sera: // div [@ id = 'weeklyPrices'] / tr / td 1

Pour utiliser ce composant, ouvrez le menu JMeter et: Ajouter -> Post-processeurs -> XPath Extractor

entrer la description de l'image ici

XPath Extractor contient plusieurs éléments de configuration communs qui sont mentionnés dans la section «Corrélation à l'aide de l'extracteur d'expression régulière». Cela inclut Nom, Appliquer à, Nom de référence, Correspondance n ° (depuis JMeter 3.2) et Valeur par défaut.

Il existe de nombreuses ressources Web avec des aide-mémoire et des éditeurs en ligne pour créer et tester votre xpath créé (comme celui-ci ). Mais sur la base des exemples ci-dessous, nous pouvons trouver le moyen de créer les localisateurs de xpath les plus courants.

entrer la description de l'image ici

Si vous voulez analyser HTML dans XHTML, nous devons cocher l'option «Use Tidy». Après avoir choisi le statut «Utiliser Tidy», il existe également des options supplémentaires:

Si 'Use Tidy' est coché:

  • Quiet - définit le drapeau Tidy Quiet
  • Signaler les erreurs - si une erreur de rangement se produit, définissez l'assertion en conséquence
  • Show Warnings (Afficher les avertissements): définit l'option d'avertissement Show Show (Tidy show)

Si 'Use Tidy' est décoché:

  • Utiliser les espaces de noms - si coché, l'analyseur XML utilisera la résolution d'espace de noms
  • Valider XML - vérifie le document par rapport à son schéma spécifié
  • Ignorer les espaces - ignore les espaces blancs
  • Récupérer des DTD externes - si cette option est sélectionnée, les DTD externes sont récupérées

"Renvoyer l'intégralité du fragment XPath au lieu du contenu du texte" est auto-descriptif et doit être utilisé si vous souhaitez non seulement renvoyer la valeur xpath, mais également la valeur dans son localisateur xpath. Cela peut être utile pour les besoins de débogage.

Il convient également de mentionner qu'il existe une liste de plug-ins de navigateur très pratiques pour tester les localisateurs XPath. Pour Firefox, vous pouvez utiliser le plug-in « Firebug », tandis que pour Chrome, « XPath Helper » est l'outil le plus pratique.

entrer la description de l'image ici

Corrélation à l'aide de l'extracteur CSS / JQuery dans JMeter

L'extracteur CSS / JQuery permet d'extraire des valeurs d'une réponse du serveur en utilisant une syntaxe de sélecteur CSS / JQuery, qui aurait pu être difficile à écrire en utilisant une expression régulière. En tant que post-processeur, cet élément doit être exécuté pour extraire les nœuds, les valeurs de texte ou d'attribut requis d'un échantillonneur de requête et pour stocker le résultat dans la variable donnée. Ce composant est très similaire à XPath Extractor. Le choix entre CSS, JQuery ou XPath dépend généralement des préférences de l'utilisateur, mais il convient de mentionner que XPath ou JQuery peuvent traverser et traverser le DOM, tandis que CSS ne peut pas parcourir le DOM. Supposons que nous souhaitons extraire tous les sujets de la documentation Stack Overflow liée à Java. Vous pouvez utiliser le plug-in Firebug pour tester vos sélecteurs CSS / JQuery dans Firefox ou le testeur de sélecteur CSS dans Chrome.

entrer la description de l'image ici

Pour utiliser ce composant, ouvrez le menu JMeter et: Ajouter -> Post-processeurs -> Extracteur CSS / JQuery

entrer la description de l'image ici

Presque tous les champs de cet extracteur sont similaires aux champs d'extraction de l'expression régulière, vous pouvez donc obtenir leur description à partir de cet exemple. Une différence est cependant le champ «Implémentation CSS / JQuery Extractor». Depuis JMeter 2.9, vous pouvez utiliser l'extracteur CSS / JQuery basé sur deux implémentations différentes: l'implémentation jsoup (description détaillée de sa syntaxe ici ) ou le Lagarto JODD (la syntaxe détaillée peut être trouvée ici ). Les deux implémentations sont presque identiques et ne présentent que de petites différences de syntaxe. Le choix entre eux est basé sur les préférences de l'utilisateur.

entrer la description de l'image ici

En fonction de la configuration mentionnée ci-dessus, nous pouvons extraire tous les sujets de la page demandée et vérifier les résultats extraits à l'aide de l'échantillonneur de débogage et de l'écouteur de vue des résultats.

Corrélation à l'aide de l'extracteur JSON

JSON est un format de données couramment utilisé dans les applications Web. JMeter JSON Extractor permet d'utiliser des expressions JSON Path pour extraire des valeurs de réponses basées sur JSON dans JMeter. Ce post-processeur doit être placé en tant qu'enfant de l'échantillonneur HTTP ou de tout autre échantillonneur ayant des réponses.

Pour utiliser ce composant, ouvrez le menu JMeter et: Ajouter -> Post-processeurs -> Extracteur JSON.

entrer la description de l'image ici

Le JSON Extractor est très similaire au Regular Expression Extractor. Presque tous les domaines principaux sont mentionnés dans cet exemple. Il n'y a qu'un seul paramètre JSON Extractor spécifique: 'Compute concatenation var'. Si plusieurs résultats sont trouvés, cet extracteur les concaténera en utilisant le séparateur ',' et en les stockant dans une variable nommée _ALL.

Supposons cette réponse du serveur avec JSON:

{ 
    "store": {
        "book": [ 
          { "category": "reference",
            "author": "Nigel Rees",
            "title": "Sayings of the Century",
            "price": 8.95
          },
          { "category": "fiction",
            "author": "Evelyn Waugh",
            "title": "Sword of Honour",
            "price": 12.99
          },
          { "category": "fiction",
            "author": "Herman Melville",
            "title": "Moby Dick",
            "isbn": "0-553-21311-3",
            "price": 8.99
          },
          { "category": "fiction",
            "author": "J. R. R. Tolkien",
            "title": "The Lord of the Rings",
            "isbn": "0-395-19395-8",
            "price": 22.99
          }
        ],
        "bicycle": {
        "color": "red",
        "price": 19.95
    }
  }
}

Le tableau ci-dessous fournit un excellent exemple de différentes manières d'extraire des données d'un JSON spécifié:

entrer la description de l'image ici

Grâce à ce lien, vous pouvez trouver une description plus détaillée du format du chemin JSON, avec des exemples connexes.

Corrélation automatisée à l'aide du «SmartJMX» de BlazeMeter

Lorsque vous écrivez manuellement vos scripts de performance, vous devez vous occuper de la corrélation. Mais il existe une autre option pour créer vos scripts - l'enregistrement de scripts d'automatisation. D'une part, l'approche manuelle aide vos scripts d'écriture structurés et vous pouvez ajouter tous les extracteurs requis en même temps. En revanche, cette approche prend beaucoup de temps.

L'enregistrement de scripts d'automatisation est très simple et vous permet de faire le même travail, mais beaucoup plus rapidement. Mais si vous utilisez des méthodes d'enregistrement communes, les scripts seront peu structurés et nécessiteront généralement l'ajout de paramètres supplémentaires. La fonctionnalité «Smart JMX» de l'enregistreur Blazemeter combine les avantages des deux méthodes. Il peut être trouvé à ce lien: [ https://a.blazemeter.com/app/recorder/index.html][1]

Après l'enregistrement, allez à la section «Enregistreur».

entrer la description de l'image ici

Pour démarrer l'enregistrement de script, vous devez d'abord configurer le proxy de votre navigateur ( couvert ici ), mais cette fois, vous devriez obtenir un hôte proxy et un port fournis par l'enregistreur BlazeMeter.

entrer la description de l'image ici

Une fois le navigateur configuré, vous pouvez poursuivre l’enregistrement du script en appuyant sur le bouton rouge en bas. Vous pouvez maintenant accéder à l'application testée et effectuer des flux de travail utilisateur pour l'enregistrement.

entrer la description de l'image ici

Une fois le script enregistré, vous pouvez exporter les résultats dans un fichier JMX «SMART». Un fichier jmx exporté contient une liste d'options qui vous permettent de configurer votre script et de le paramétrer, sans efforts supplémentaires. L'une de ces améliorations est que le JMX «SMART» recherche automatiquement les candidats à la corrélation, le remplace par l'extracteur approprié et fournit un moyen facile de paramétrer davantage.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow