Exemple de corrélation dans LoadRunner avec web_reg_save_param

⚡ Résumé intelligent

La corrélation dans LoadRunner capture une valeur serveur dynamique, telle qu'un ID de session, et la réinjecte dans les requêtes ultérieures afin qu'un script VuGen enregistré soit rejoué avec succès au lieu d'échouer sur des données obsolètes.

  • (I.e. Définition: La corrélation lie une réponse du serveur à chaque requête suivante qui en dépend.
  • ☑️ Symptôme: La relecture échoue lorsqu'un script renvoie un ID de session enregistrée que le serveur ne reconnaît plus.
  • Automatique: Les règles et la détection automatique de VuGen comparent deux rediffusions, mais ne couvrent qu'une petite partie des cas.
  • 🧪 Manuel: web_reg_save_param enregistre la valeur située entre une limite gauche et une limite droite.
  • Placement: Les fonctions d'enregistrement doivent se situer au-dessus de l'étape dont la réponse contient la valeur.
  • (I.e. Payer: Les scripts corrélés sont réutilisés avec des données actualisées et restent sensiblement plus petits.

Corrélation dans LoadRunner avec web_reg_save_param

Qu'est-ce que la corrélation ?

La corrélation, comme son nom l'indique, est un mécanisme permettant de définir une relation entre deux variables ou entités. Un dictionnaire la définit comme « une relation statistique entre deux ou plusieurs variables telle que des variations systématiques de l'autre variable s'accompagnent de variations systématiques de la valeur de l'une d'entre elles ».

Note de la marque : Cet outil a été commercialisé sous la marque HP, puis Micro Focus LoadRunner, et est maintenant OpenText Ingénierie de la performance professionnelleToutes les fonctions de corrélation ci-dessous restent inchangées, et le fournisseur spécifie le générateur de scripts. VuGen.

Pourquoi avons-nous besoin d’une corrélation ?

Essayons de comprendre la corrélation à l'aide du scénario suivant.

Imaginez que vous enregistrez un script en utilisant LoadRunner.

La communication client-serveur pendant l'enregistrement se déroule comme suit, et le diagramme la résume :

  1. Lors de l'enregistrement, le client envoie une requête au serveur pour démarrer une session.
  2. Un serveur reçoit la requête et attribue un nouvel ID de session ABC
  3. Le client stocke l'identifiant de session ABC dans le script.
  4. Le client démarre la session avec l'identifiant ABC et envoie une requête à un serveur pour l'autoriser à enregistrer.
  5. Le Serveur reconnaît l'ID ABC et permet au client d'enregistrer le script

Échange d'identifiants de session client-serveur lors de l'enregistrement d'un script LoadRunner

À présent, étudions la communication client-serveur pendant la relecture, illustrée après ces étapes :

  1. Pendant le Replay, un client envoie une requête au serveur pour démarrer une session
  2. Un serveur reçoit la demande et attribue un nouvel ID de session XYZ
  3. Un client démarre la session avec l'identifiant de session précédemment enregistré ABC et envoie une requête au serveur pour l'autoriser à enregistrer.
  4. Un serveur n'est pas en mesure d'identifier l'ID ABC car il s'attendait à l'ID XYZ qu'il a alloué et la session échoue.

Incohérence d'identifiant de session lors de la relecture en cas d'absence de corrélation

Nous avons besoin d'une solution capable de capturer et d'analyser la valeur dynamique envoyée lors de l'exécution, puis de la renvoyer au serveur. Voici à quoi ressemblera la communication client-serveur avec cette solution, comme le montre le schéma ci-dessous :

  1. Pendant le Replay, un client envoie une requête au serveur pour démarrer une session
  2. Un serveur reçoit la requête et attribue un nouvel ID de session ZZZ
  3. Un client analyse ce nouvel identifiant de session ZZZ à partir de la demande.
  4. Un client envoie une demande de démarrage de session avec l'identifiant ZZZ
  5. Un serveur reconnaît l'ID ZZZ et permet au client de rejouer le script

La corrélation capture le nouvel identifiant de session et le renvoie au serveur.

Ce n'est rien d'autre que corrélation.

La courte vidéo ci-dessous illustre ce même problème d'enregistrement et de relecture.

Cliquez à nouveau ici si la vidéo n'est pas accessible

Dans le cas de VuGen, la corrélation est une relation contraignante entre une réponse et toute requête précédente.

Il existe diverses situations où une requête dépend d'une réponse précédemment reçue du serveur, comme un identifiant de session ou la date et l'heure du serveur. Ces valeurs changent à chaque exécution d'une application ou enregistrement d'un script. Si l'exécution du script dépend d'une valeur renvoyée par le serveur, il est nécessaire de trouver un mécanisme permettant de « capturer » cette réponse et de l'associer aux requêtes attendues. Dans LoadRunner, cette fonctionnalité est généralement appelée corrélation.

En termes simples, la solution en utilisant la corrélation est :

  1. Capturer la valeur de sortie d'une étape
  2. Utiliser la valeur capturée ci-dessus pour servir d'entrée à toutes les étapes suivantes

Dans VuGen/LoadRunner, la corrélation est classée en 2 catégories :

  • Corrélation automatique
  • Corrélation manuelle

Corrélation automatique

LoadRunner fournit un mécanisme permettant d'effectuer facilement une corrélation de manière automatique.

VuGen vous demandera d'exécuter un script enregistré au moins deux fois afin de pouvoir comparer en interne les différentes valeurs de la réponse du serveur.

La corrélation automatique peut être classée en 3 catégories :

  • Détection automatique de la corrélation
  • Corrélation basée sur des règles
  • Corréler toutes les déclarations
Nom de la règle Quand utiliser
Détection automatique de la corrélation Détecter et corréler les données dynamiques pour les serveurs d'applications pris en charge par LoadRunner
Basé sur des règles Utilisé lorsque vous travaillez avec un serveur d'applications non pris en charge dont le contexte est connu.
Tout corréler Aide à corréler toutes les données dynamiques de manière aveugle.

Bien que la corrélation automatique semble plus simple, elle peut être sujette à des erreurs et ne fonctionne que dans 5 % des cas. Il est toujours conseillé d'utiliser une corrélation manuelle.

Pour configurer la corrélation automatique au moment de l'enregistrement, effectuez la configuration ci-dessous dans Paramètres de durée d'enregistrement après l'enregistrement d'un script.

Cliquez sur Enregistrer => Options d'enregistrement (ou appuyez sur Ctrl + F7), comme indiqué dans le menu ci-dessous.

Menu VuGen Record avec l'option Options d'enregistrement sélectionnée

La fenêtre ci-dessous s'ouvrira :

La fenêtre des options d'enregistrement VuGen liste les nœuds de configuration d'enregistrement.

Cliquez sur Corrélation =>Configuration – la fenêtre ci-dessous s'ouvrira.

Le volet de configuration de corrélation répertorie les ensembles de règles d'application tels que ASP.NET

Ici, vous devez marquer comme vérifié par rapport à toutes les applications (ASPNET), etc., qui sont utilisées dans votre application en question. Sur le côté droit, vous pouvez voir les règles qui détecteront les candidats possibles pour la corrélation, par exemple _VIEWSTATE. Vous pouvez également ajouter plus d'applications ou de règles personnalisées en cliquant sur le bouton Nouvelle règle.

Vous pouvez également cliquer sur RÈGLES, vous verrez comme ci-dessous :

Volet Règles de corrélation avec l'option Analyse des règles disponible

Pour que la corrélation automatique fonctionne, assurez-vous que l'option « Analyse des règles » est cochée. Si vous cliquez sur « Corréler automatiquement les valeurs trouvées », VuGen ne vous proposera pas de choix une fois qu'une corrélation potentielle sera identifiée ; la corrélation sera effectuée automatiquement.

Nous comprendrons l'API utilisée pour la corrélation plus tard. Cependant, il est conseillé d'utiliser la comparaison HTML plutôt que la comparaison de texte.

Une fois que vous avez sélectionné des règles, cliquez sur le bouton OK pour fermer les fenêtres.

Cliquez sur le bouton de la barre d'outils indiqué ici. Le bouton de la barre d'outils VuGen permet de régénérer le script enregistré. Depuis le menu, VuGen régénérera le script (sans enregistrement) avec les nouvelles configurations. VuGen ajoutera automatiquement le code nécessaire à la gestion de la corrélation. Nous examinerons l'exemple plus en détail dans la section « Corrélation manuelle ».

Veuillez noter que si vous effectuez une corrélation manuellement ou utilisez une corrélation automatique, le morceau de code contiendra exactement la même syntaxe et la même fonction.

Étapes pour corréler automatiquement un script :

  1. Enregistrer un script
  2. Script de relecture
  3. Identifier les valeurs à corréler
  4. Sélectionnez les valeurs et cliquez sur le bouton de corrélation automatique
  5. Vérifiez le script en l'exécutant à nouveau. Une exécution réussie signifie une corrélation réussie.

Astuce:

  • La corrélation permet d'exécuter votre script avec différentes valeurs
  • La corrélation réduit également la taille de votre script

Corrélation manuelle

La corrélation manuelle consiste à écrire du code directement dans votre script pour répondre à des valeurs en constante évolution. Nous pouvons le diviser en étapes ci-dessous :

  1. Déterminer la valeur à capturer
  2. Trouver les limites de texte droite et gauche de la valeur à capturer (WEB)
  3. Trouver quelle occurrence des limites du texte doit être utilisée
  4. Ajoutez une fonction web_reg_save_param au script, au-dessus du morceau de code qui demande la page avec la valeur à capturer
  5. Ajoutez un nom de paramètre, une limite gauche, une limite droite et une occurrence à la fonction
  6. Paramétrer la valeur dynamique dans le script à chaque fois qu'elle se produit
  7. Vérifier la bonne exécution
web_reg_save_param (" OracleAppJSESSIONID3",
	"LB/IC=JSESSIONID=",
	"RB/IC=;",
	"Ord=l",
	"Search=headers",
	"RelFrameId=l",
	LAST);

web_reg_save_param("Siebel_Analytic_ViewState2",
	"LB/IC=ViewState\" value=\"",
	"RB/IC=\"",
	"Ord=1",
	"Search=Body",
	"RelFrameId=l",
	LAST);

Code Notes: Les deux extraits apparaissent exactement tels que publiés. Observez les nombres ordinaux : Ord=l et RelFrameId=l Utilisez un L minuscule, et VuGen attend le chiffre 1.

La corrélation manuelle peut être effectuée par VUser Comparison. Les étapes de la méthode de comparaison VUser de corrélation peuvent être divisées comme ci-dessous :

  1. Identifier les valeurs dynamiques qui doivent être corrélées
  2. Trouvez la réponse du serveur contenant la valeur dynamique
  3. Capturer la valeur dynamique dans un paramètre
  4. Remplacez chaque occurrence de la valeur dynamique par le paramètre
  5. Vérifier les modifications

Comprendre la fonction web_reg_save_param

VuGen propose plusieurs fonctions ou API pour corréler les candidats, notamment :

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

Note de version : Les versions actuelles de VuGen traitent web_reg_save_param_ex comme successeur de la fonction originale, et web_reg_save_param_regexp comme un choix possible lorsque les limites elles-mêmes changent. L'exemple original fonctionne toujours.

Bien qu'une brève introduction soit fournie ici, pour une compréhension détaillée des fonctions et de leurs paramètres, ouvrez VuGen, saisissez la fonction (ou utilisez la boîte à outils Steps), déplacez le curseur sur la fonction et appuyez sur F1 – familiarisez-vous avec Aide VuGen et prenez-en l'habitude. Vous y serez souvent confronté dans ce secteur.

C'est parti avec les détails de la fonction :

web_reg_save_param (Nom du paramètre, limite gauche, limite droite)

Liste des attributs

Le tableau ci-dessous répertorie tous les attributs acceptés par la fonction, indique s'ils sont obligatoires et ce qu'ils contrôlent.

Attribut Champs obligatoires? Ce qu'il fait
Convertir Optionnel HTML_À_URL convertit les données encodées en HTML en un URL- Format de données encodées. HTML_TO_TEXT convertit les données encodées en HTML au format texte brut.
Ignorer les redirections Optionnel, valeur par défaut : « Ignorer les redirections = Non » Si cette option est activée et que la réponse du serveur est une information de redirection (code d'état HTTP 300-303, 307), cette réponse n'est pas prise en compte dans la recherche. La requête GET est envoyée à l'emplacement de redirection et la recherche s'effectue sur la réponse reçue.
LB Requis La limite gauche du paramètre ou des données dynamiques. Si vous ne spécifiez pas de valeur LB, la limite est définie par tous les caractères du début des données. Les paramètres de limite sont sensibles à la casse. Pour personnaliser davantage le texte de recherche, utilisez un ou plusieurs indicateurs de texte.
PAS TROUVÉ Optionnel, valeur par défaut « erreur » Gestion des cas où une limite est introuvable et qu'une chaîne vide est générée. « Not found=error » génère une erreur. « Not found=warning » (« Not found=empty » dans les versions précédentes) remet le compteur de paramètres à zéro et poursuit l'exécution, ce qui est idéal pour vérifier si la chaîne a été trouvée sans interrompre le script. Si l'option « Continuer en cas d'erreur » est activée, le script continue même en cas d'erreur, mais celle-ci est consignée dans le journal étendu.
ORD Facultatif, valeur par défaut 1 Indique la position ordinale ou l'instance de la correspondance. Si vous spécifiez « Tous », les valeurs des paramètres sont enregistrées dans un tableau. L'utilisation de « Instance » au lieu de « ORD » est prise en charge pour assurer la compatibilité avec les versions précédentes, mais est déconseillée.
RB Requis La limite droite du paramètre ou des données dynamiques. Si vous ne spécifiez pas de valeur RB, tous les caractères jusqu'à la fin des données sont utilisés comme limite. Les paramètres de limite sont sensibles à la casse. Pour personnaliser davantage le texte de recherche, utilisez un ou plusieurs indicateurs de texte.
RelFrameID Optionnel Le niveau hiérarchique de la page HTML par rapport à la requête URLLes valeurs possibles sont ALL ou un nombre. RelFrameID n'est pas pris en charge dans les scripts d'interface graphique.
EnregistrerLen Optionnel, valeur par défaut -1 Longueur de la sous-chaîne de la valeur trouvée, à partir du décalage spécifié, à enregistrer dans le paramètre. Par défaut, l'enregistrement s'effectue à la fin de la chaîne.
Enregistrer le décalage Facultatif, valeur par défaut 0 Décalage d'une sous-chaîne de la valeur trouvée, à enregistrer dans le paramètre. La valeur du décalage doit être non négative.
Rechercher Optionnel, par défaut TOUS L'étendue de la recherche : où rechercher les données délimitées. Les valeurs possibles sont : En-têtes (recherche uniquement dans les en-têtes), Corps (recherche uniquement dans le corps du document, sans les en-têtes), Aucune ressource (recherche uniquement dans le corps du document HTML, sans les en-têtes ni les ressources), ou TOUT (recherche dans le corps, les en-têtes et les ressources).

Une fois que le script se rejoue correctement, ajoutez paramétrage, transactions et paramètres d'exécution, exécutez-le depuis le Contrôleur, et lisez le résultat dans Analyse dans le cadre d'un projet plus vaste Test de performance et test de charge.

FAQ

Relancez la requête deux fois avec l'authentification étendue et comparez les réponses. Toute valeur renvoyée par le serveur à chaque exécution (identifiants de session, jetons, horodatages) peut être une piste.

web_reg_save_param correspond entre des limites gauche et droite fixes. web_reg_save_param_regexp correspond à une expression régulière, ce qui lui permet de s'adapter aux changements de limites elles-mêmes.

Oui. L'apprentissage automatique peut comparer deux réponses de relecture et classer les champs qui ont changé, bien plus rapidement qu'une analyse manuelle. Ce classement constitue une présélection qui doit encore être validée par un humain.

Copilote GitHub Cette fonction génère l'appel et ses arguments à partir d'un commentaire. Elle ne peut pas voir la réponse du serveur ; par conséquent, chaque limite qu'elle suggère doit être vérifiée par rapport au trafic réel.

Il s'agit d'une fonction d'enregistrement : elle enregistre une recherche par rapport à la prochaine réponse que VuGen recevra. Placée après la requête, elle ne laisse plus rien à analyser et le paramètre reste vide.

Les limites ne correspondaient pas. Les causes habituelles sont une erreur de casse, une limite qui n'apparaît que sur une autre page ou une recherche dans le corps du texte alors que la valeur se trouve dans les en-têtes.

Non. La paramétrisation permet d'alimenter un script avec vos propres données d'entrée à partir d'un fichier de données. La corrélation, quant à elle, capture une valeur générée par le serveur lors de l'exécution et la renvoie. La plupart des scripts nécessitent les deux.

Oui, souvent même davantage. Les jetons d'authentification, les champs CSRF et les identifiants JSON changent à chaque session ; par conséquent, le trafic REST et monopage regorge de candidats potentiels, même sans formulaire HTML.

Résumez cet article avec :