Transactions LoadRunner, Contrôles de Texte et d’Image, Commentaires et Points de Rendez-Vous
Introduction aux améliorations de base du Script VuGen:
Nous avons exploré la corrélation dans LoadRunner en détail dans notre tutoriel précédent dans ce Didacticiel de formation LoadRunner complet.
Dans les deux derniers tutoriels, nous avons travaillé sur la gestion des données dans un script VuGen (Corrélation et paramétrage).
Dans ce tutoriel LoadRunner, nous verrons les autres améliorations de base (énumérées ci-dessous) nécessaires à notre script:
- Transactions – Pour mesurer le taux et le temps de réponse des actions de l’utilisateur.
- Contrôles texte et image – Pour s’assurer que la réponse renvoyée est correcte.
- Points de rendez-vous – Pour que les utilisateurs exécutent une tâche simultanément.
=> Cliquez ici Pour une Série complète de Tutoriels LoadRunner
Transactions en script VuGen
La simple relecture des scripts de performance ne fera que charger l’application mais ne mesurera rien. L’objectif final de tout script de performance est d’injecter la charge et de mesurer le taux et le temps de réponse des actions de l’utilisateur sur l’application.
Par exemple, combien de temps une recherche de produit a pris lorsque 100 utilisateurs sont sur l’application, combien de rapports sont générés en un temps de 15 minutes, etc. Pour les mesurer, nous devons insérer des transactions dans un script VuGen (après le test, nous pouvons voir le taux et le temps de réponse de ces transactions dans les résultats).
‘Une transaction est une mesure de bout en bout d’une action utilisateur (ou d’un groupe d’actions utilisateur) sur une application’.
Les transactions peuvent être insérées de deux manières:
- Pendant l’enregistrement
- Après l’enregistrement (où nous insérons manuellement les fonctions de transaction dans le script)
Insérons la transaction pour l’action utilisateur “Connexion” sur notre application “Visites Web”.
Dans notre premier tutoriel, nous avons vu comment enregistrer les actions de l’utilisateur. Pendant l’enregistrement, après avoir entré le “Nom d’utilisateur” et le “mot de passe” sur la page de connexion, juste avant de cliquer sur le bouton “Connexion”, cliquez sur l’icône “Insérer Démarrer la transaction” dans la barre d’enregistrement flottante.
VuGen demande le nom de la transaction. Entrez un nom significatif. Nous avons donné “Login” ici mais c’est une bonne pratique de suivre une convention comme celle-ci (numéro de transaction, nom du scénario, action de l’utilisateur, etc.): 01_WebTours_Launch 02_WebTours_Login (et ainsi de suite).
Maintenant, cliquez sur le bouton de connexion.
Une fois que nous atteignons la page d’accueil (page principale), cliquez sur l’icône “Insérer une transaction de fin” sur la barre d’enregistrement flottante.
Sélectionnez la transaction que nous voulons terminer (transaction ‘Login’ ici).
Arrêtez l’enregistrement et voyez le script généré. Nous pouvons voir que les fonctions de début et de fin de transaction sont insérées dans le script (surlignées en jaune) et que toutes les requêtes correspondant à l’action utilisateur ‘Login’ sont enfermées entre ces fonctions.
lr_start_transaction("Login");web_submit_data("login.pl","Action=http://127.0.0.1:1080/cgi-bin/login.pl","Method=POST","TargetFrame=","RecContentType=text/html","Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home","Snapshot=t3.inf","Mode=HTML",ITEMDATA,"Name=userSession", "Value=123530.624949372zDftVAzpfcAiDDDDDiVctpzDQVcf", ENDITEM,"Name=username", "Value=jojo", ENDITEM,"Name=password", "Value=bean", ENDITEM,"Name=JSFormSubmit", "Value=off", ENDITEM,"Name=login.x", "Value=69", ENDITEM,"Name=login.y", "Value=8", ENDITEM,LAST);lr_end_transaction("Login",LR_AUTO);
La syntaxe des fonctions ‘début de transaction’ et ‘fin de transaction’ est assez simple. Les deux ont le nom de la transaction comme premier argument. La fonction ‘fin de transaction’ a un autre attribut – ‘LR_AUTO’, cela demande à VuGen de passer ou d’échouer une transaction automatiquement (au lieu de spécifier explicitement une condition pour une réussite ou un échec).
Si le coureur de charge rencontre des erreurs lors de l’exécution de requêtes dans une transaction, il échoue la transaction sinon il passe la transaction.
Contrôles de texte et d’image dans le script VuGen
Les contrôles de texte sont utilisés pour vérifier si la réponse renvoyée pour la demande est correcte ou non. Dans le tutoriel ‘Corrélation’, nous avons vu que parfois VuGen peut ne pas afficher d’erreur, mais la réponse renvoyée peut ne pas être la bonne. Donc, pour nous assurer que la réponse est correcte, nous utilisons des vérifications de texte.
Par exemple, lorsque nous nous connectons à l’application web Tours, nous accédons à la page d’accueil. Vérifions dans le script que nous obtenons la bonne réponse (page d’accueil) ou non lorsque nous nous connectons.
Pour ce faire, nous devons identifier un texte dans la réponse (page d’accueil ici) qui peut dire si la réponse est correcte ou non. “Bienvenue” est l’un de ces textes.
Pour la vérification de texte, nous utilisons la fonction ‘web_reg_find’ juste avant la demande.
La syntaxe de cette fonction est:
web_reg_find("Text=","SaveCount=","Fail=",LAST);
Ici, nous avons trois attributs (reportez-vous à l’aide de VuGen pour obtenir la liste complète des attributs):
‘Text’ – Utilisé pour spécifier le texte à rechercher.
‘SaveCount– – Enregistre le nombre d’occurrences du texte spécifié dans un paramètre que nous spécifions.
‘Fail’ – Prend l’une des deux valeurs – ‘Found’ et ‘NotFound’ et échoue le script en conséquence.
Ainsi, la fonction web_reg_find(“Text=Welcome”, “SaveCount=WelcomeCount”, “Fail=NotFound”, LAST) recherche le texte ‘Welcome’ dans la réponse et enregistre le nombre d’occurrences dans le paramètre ‘WelcomeCount’ (et échoue le script si le texte n’est pas trouvé).
Le script ressemble à ceci:
web_reg_find("Text=Welcome","SaveCount=WelcomeCount","Fail=NotFound",LAST);web_submit_data("login.pl","Action=http://127.0.0.1:1080/cgi-bin/login.pl","Method=POST","TargetFrame=body","RecContentType=text/html","Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home","Snapshot=t2.inf","Mode=HTML",ITEMDATA,"Name=userSession", "Value=123531.149939247zDftVDDpfcfDiVctpiAVVf", ENDITEM,"Name=username", "Value=jojo", ENDITEM,"Name=password", "Value=bean", ENDITEM,"Name=JSFormSubmit", "Value=off", ENDITEM,"Name=login.x", "Value=66", ENDITEM,"Name=login.y", "Value=12", ENDITEM,LAST);
Maintenant, si nous rejouons le script, nous obtiendrons une erreur pour la demande de connexion (voir dans le journal du relais) car VuGen n’a pas trouvé le texte que nous avons spécifié, dans la réponse. En effet, nous n’avons pas obtenu la bonne page d’accueil (comme indiqué dans la ‘visionneuse d’exécution’).
Maintenant corrigeons notre script (corrélons la session utilIsateur) et rejouons le script à nouveau.
web_reg_find("Text=Welcome","SaveCount=WelcomeCount","Fail=NotFound",LAST);web_submit_data("login.pl", "Action=http://127.0.0.1:1080/cgi-bin/login.pl", "Method=POST", "TargetFrame=body", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home", "Snapshot=t2.inf", "Mode=HTML", ITEMDATA, "Name=userSession", "Value={corUserSession}", ENDITEM, "Name=username", "Value=jojo", ENDITEM, "Name=password", "Value=bean", ENDITEM, "Name=JSFormSubmit", "Value=off", ENDITEM, "Name=login.x", "Value=66", ENDITEM, "Name=login.y", "Value=12", ENDITEM, LAST);
Cette fois, nous ne voyons aucune erreur dans le journal de relecture mais voyons un message indiquant que notre vérification du texte a réussi. Nous avons donc obtenu la bonne réponse cette fois (comme elle est corroborée par le ‘runtime viewer’).
Nous pouvons combiner des vérifications de texte avec des transactions et faire en sorte que VuGen passe une transaction si la vérification de texte réussit et échoue une transaction si une vérification de texte échoue.
Ceci est illustré ci-dessous:
lr_start_transaction("Login");web_reg_find("Text=Welcome","SaveCount=WelcomeCount",LAST);web_submit_data("login.pl", "Action=http://127.0.0.1:1080/cgi-bin/login.pl", "Method=POST", "TargetFrame=body", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home", "Snapshot=t2.inf", "Mode=HTML", ITEMDATA, "Name=userSession", "Value={corUserSession}", ENDITEM, "Name=username", "Value=jojo", ENDITEM, "Name=password", "Value=bean", ENDITEM, "Name=JSFormSubmit", "Value=off", ENDITEM, "Name=login.x", "Value=66", ENDITEM, "Name=login.y", "Value=12", ENDITEM, LAST);if(atoi(lr_eval_string("{WelcomeCount}"))>0){lr_end_transaction("Login",LR_PASS);}else{lr_end_transaction("Login",LR_FAIL);}
Nous avons utilisé ‘if statement’ ici avec l’attribut ‘SaveCount’. Le paramètre ‘WelcomeCount’ (qui enregistre le nombre d’occurrences du texte) est utilisé comme condition pour réussir /échouer la transaction. Les attributs ‘LR_PASS’ et ‘LR_FAIL’ des fonctions de transaction sont utilisés pour passer et échouer explicitement (respectivement) une transaction.
Remarque: Nous avons utilisé deux nouvelles fonctions ici – ‘atoi’ et ‘lr_eval_string’. Nous parlerons de ces fonctions plus tard.
Plus d’informations sur la combinaison des attributs de fonction ‘web_reg_find’:
#1) Si seul l’attribut ‘Text’ est utilisé – Exemple
: web_reg_find(“Text=Welcome”, LAST) –
VuGen recherche le texte et échoue le script si la recherche échoue.
#2) Si seuls les attributs ‘Text’ et ‘SaveCount’ sont utilisés –
Exemple: web_reg_find(“Text=Welcome”, “SaveCount=WelcomeCount”, LAST) – VuGen recherche le texte et enregistre le nombre d’occurrences (même s’il est nul) dans le paramètre spécifié (n’échoue pas le script si la recherche échoue).
#3) Si seuls les attributs ‘Text’ et ‘Fail’ sont utilisés – Exemple
: web_reg_find(“Text=Welcome”, “Fail=NotFound”, LAST) – VuGen recherche le texte et échoue le script si le texte est trouvé / introuvable.
Des vérifications de texte peuvent également être insérées pendant l’enregistrement à l’aide de l’icône “Insérer une vérification de texte” sur la barre d’enregistrement flottante. Cela insérera la même fonction ‘web_reg_find’ dans le script.
Mais il vaut mieux que nous insérions cette fonction manuellement car nous aurons un meilleur contrôle principalement sur les attributs.
Nous avons bien compris la vérification du texte, passons maintenant à la vérification des images.
La vérification d’image est utilisée pour vérifier la présence d’une image spécifiée dans une réponse. la fonction ‘web_image_check’ est utilisée pour la vérification de l’image. Cette fonction doit être placée après la requête (dans la réponse de laquelle nous attendons l’image).
Exemple de cette fonction:
web_image_check("Image","Src=/WebTours/images/flights.gif",LAST)
Où le premier attribut est un nom significatif et le deuxième attribut (‘Src’) est le nom / lien de l’image (reportez-vous à l’aide de VuGen pour obtenir la liste complète des attributs).
Commentaires dans le script VuGen
Les commentaires dans un script VuGen peuvent être saisis pendant l’enregistrement et également manuellement après l’enregistrement du script.
Pendant l’enregistrement, cliquez sur l’icône “Insérer un commentaire” dans la barre d’enregistrement flottante.
Entrez le commentaire (dites ‘Login’ ici).
Après l’enregistrement, nous pouvons voir les commentaires dans le script comme indiqué ci-dessous.
/* Login */web_submit_data("login.pl", "Action=http://127.0.0.1:1080/cgi-bin/login.pl", "Method=POST", "TargetFrame=body", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home", "Snapshot=t6.inf", "Mode=HTML",
Dans VuGen, une seule ligne peut être commentée en mettant simplement ‘//’ avant la ligne comme indiqué ci-dessous:
// web_add_cookie("SRCHD=AF=IESS3N; DOMAIN=www.bing.com");web_add_cookie("SRCHUID=V=2&GUID=89730C3AA700412BAB917005DE9F5F47&dmnchg=1; DOMAIN=www.bing.com");web_add_cookie("SRCHUSR=DOB=20180312; DOMAIN=www.bing.com");
Et plusieurs lignes peuvent être connectées en mettant ‘/*’ au début et ‘*/’ à la fin (comme indiqué ci-dessous)
/* web_add_cookie("SRCHD=AF=IESS3N; DOMAIN=www.bing.com");web_add_cookie("SRCHUID=V=2&GUID=89730C3AA700412BAB917005DE9F5F47&dmnchg=1; DOMAIN=www.bing.com");web_add_cookie("SRCHUSR=DOB=20180312; DOMAIN=www.bing.com"); */
Remarque: Dans les exemples ci-dessus, nous avons commenté les fonctions des cookies (web_add_cookie). Nous parlerons des fonctions des cookies plus tard dans cette série de didacticiels.
C’est une bonne pratique d’insérer des commentaires à chaque étape de l’enregistrement car cela nous aidera à relier les requêtes du script aux actions de l’utilisateur sur l’application.
Point de rendez-vous dans le script VuGen
Si nous avons un scénario où un plus grand nombre d’utilisateurs effectuent une action simultanément sur l’application (comme vérifier les résultats) et si nous devons simuler la même chose dans notre test de performance, nous pouvons utiliser un “point de rendez-vous”.
Un “point de rendez-vous” est une fonction unique et simple dans un script VuGen qui demande au coureur de charge (lors d’un test avec plusieurs utilisateurs) d’attendre à une étape spécifiée du script jusqu’à ce que tous les Vusers (exécutant le script) arrivent à cette étape afin que la requête suivante puisse être exécutée simultanément.
La syntaxe de la fonction Rendezvous est:
lr_rendezvous("MeaningfulName");
Cette fonction peut être insérée pendant l’enregistrement et également manuellement après l’enregistrement du script.
Supposons que nous souhaitions charger simultanément l’étape de paiement dans notre application “Visites Web”. Lors de l’enregistrement à cette étape (avant de soumettre les détails du paiement), cliquez sur l’icône “Insérer un rendez-vous” dans la barre d’enregistrement flottante.
Et entrez le nom du point de rendez-vous (tout nom significatif).
Après l’enregistrement, nous pouvons voir la fonction rendez-vous dans le script comme ceci.
lr_rendezvous("Payment");web_submit_data("reservations.pl_3","Action=http://127.0.0.1:1080/cgi-bin/reservations.pl","Method=POST","TargetFrame=","RecContentType=text/html","Referer=http://127.0.0.1:1080/cgi-bin/reservations.pl","Snapshot=t13.inf","Mode=HTML",ITEMDATA,"Name=firstName", "Value=Jojo", ENDITEM,"Name=lastName", "Value=Bean", ENDITEM,"Name=address1", "Value=1st Lane, Down Street", ENDITEM,"Name=address2", "Value=567123", ENDITEM,"Name=pass1", "Value=Jojo Bean", ENDITEM,"Name=creditCard", "Value=123456789101", ENDITEM,"Name=expDate", "Value=0520", ENDITEM,"Name=oldCCOption", "Value=", ENDITEM,"Name=numPassengers", "Value=1", ENDITEM,"Name=seatType", "Value=Coach", ENDITEM,"Name=seatPref", "Value=None", ENDITEM,"Name=outboundFlight", "Value=020;338;05/03/2018", ENDITEM,"Name=advanceDiscount", "Value=0", ENDITEM,"Name=returnFlight", "Value=", ENDITEM,"Name=JSFormSubmit", "Value=off", ENDITEM,"Name=.cgifields", "Value=saveCC", ENDITEM,"Name=buyFlights.x", "Value=63", ENDITEM,"Name=buyFlights.y", "Value=12", ENDITEM,LAST);
Maintenant, lorsque nous exécutons ce script avec plusieurs utilisateurs dans le Contrôleur, le script sera exécuté par les utilisateurs indépendamment, mais les utilisateurs attendront à cette étape de paiement jusqu’à ce que tous (ou un certain pourcentage de utilisateurs définis dans la stratégie de rendez-vous) atteignent cette étape après quoi ils exécuteront cette étape simultanément.
Nous verrons plus sur la politique de rendez-vous (options) dans le tutoriel du contrôleur.
Conclusion
Jusqu’à présent, nous avons discuté de la Corrélation et du paramétrage dans les tutoriels et Transactions précédents, des vérifications de texte / Image, des Commentaires et des points de rendez-vous dans ce tutoriel, nous avons également couvert les méthodes d’amélioration de script les plus importantes.
Dans notre prochain tutoriel, nous verrons d’autres défis de script ainsi que les moyens de les gérer.
=> Visitez Ici Pour une Série complète de Tutoriels LoadRunner
Tutoriel PRÉCÉDENT / Tutoriel SUIVANT
Leave a Reply