LoadRunner-Transaktionen, Text- und Bildprüfungen, Kommentare und Rendezvous-Punkte

Einführung in grundlegende Verbesserungen von VuGen Script:

Wir haben die Korrelation in LoadRunner in unserem vorherigen Tutorial in diesen vollständigen LoadRunner-Schulungsanleitungen ausführlich untersucht.

In den letzten beiden Tutorials haben wir uns mit dem Umgang mit Daten in einem VuGen-Skript befasst (Korrelation und Parametrierung).

In diesem LoadRunner-Tutorial werden wir die anderen grundlegenden Verbesserungen (unten aufgeführt) sehen, die für unser Skript erforderlich sind:

  1. Transaktionen – Zur Messung der Rate und Reaktionszeit der Benutzeraktionen.
  2. Text- und Bildprüfungen – Um sicherzustellen, dass die zurückgegebene Antwort korrekt ist.
  3. Rendezvous-Punkte – Um Vusers dazu zu bringen, eine Aufgabe gleichzeitig auszuführen.

=> Klicken Sie hier für die komplette Serie von LoadRunner Tutorials

 transaktionen, Text- und Bildprüfungen, Kommentare und Rendezvous-PunkteTransaktionen, Text- und Bildprüfungen, Kommentare und Rendezvous-Punkte

Transaktionen im VuGen-Skript

Die bloße Wiedergabe von Performance-Skripten belastet die Anwendung nur, misst jedoch nichts. Das Endziel eines Leistungsskripts besteht darin, die Last zu injizieren und die Rate und Antwortzeit von Benutzeraktionen in der Anwendung zu messen.

Zum Beispiel, wie viel Zeit eine Produktsuche in Anspruch genommen hat, wenn 100 Benutzer in der Anwendung sind, wie viele Berichte in einer Zeit von beispielsweise 15 Minuten generiert werden und so weiter. Um diese zu messen, müssen wir Transaktionen in ein VuGen-Skript einfügen (nach dem Test können wir die Rate und Antwortzeit dieser Transaktionen in den Ergebnissen sehen).

‘Eine Transaktion ist eine End-to-End-Messung einer Benutzeraktion (oder einer Gruppe von Benutzeraktionen) in einer Anwendung’.

Transaktionen können auf zwei Arten eingefügt werden:

  1. Während der Aufnahme
  2. Nach der Aufnahme (wo wir die Transaktionsfunktionen manuell in das Skript einfügen)

Lassen Sie uns eine Transaktion für die Benutzeraktion ‘Login’ in unsere Anwendung ‘Web Tours’ einfügen.

In unserem ersten Tutorial haben wir gesehen, wie Benutzeraktionen aufgezeichnet werden. Klicken Sie während der Aufnahme nach Eingabe des Benutzernamens und Passworts auf der Anmeldeseite kurz vor dem Klicken auf die Schaltfläche Anmelden auf das Symbol ‘Starttransaktion einfügen’ in der schwebenden Aufzeichnungsleiste.

1.Während der Aufzeichnung

VuGen fordert zur Eingabe des Transaktionsnamens auf. Geben Sie einen aussagekräftigen Namen ein. Wir haben hier ‘Login’ angegeben, aber es ist eine gute Praxis, einer solchen Konvention zu folgen (Transaktionsnummer, Szenarioname, Benutzeraktion usw.): 01_WebTours_Launch 02_WebTours_Login (und so weiter).

2.VuGen fordert zur Eingabe des Transaktionsnamens auf

Klicken Sie nun auf die Schaltfläche Anmelden.

3.Klicken Sie nun auf die Schaltfläche Anmelden

Sobald wir die Homepage (Hauptseite) erreicht haben, klicken Sie auf das Symbol ‘Endtransaktion einfügen’ in der schwebenden Aufzeichnungsleiste.

4.klicken Sie auf das Symbol 'Endtransaktion einfügen' in der schwebenden Aufzeichnungsleiste.

Wählen Sie die Transaktion aus, die beendet werden soll (‘Login’-Transaktion hier).

5. 'Login' Transaktion, die wir beenden möchten

Stoppen Sie die Aufzeichnung und sehen Sie das generierte Skript. Wir können sehen, dass die Funktionen Transaktionsstart und Transaktionsende in das Skript eingefügt werden (gelb hervorgehoben) und alle Anforderungen, die der Benutzeraktion ‘Login’ entsprechen, zwischen diesen Funktionen eingeschlossen sind.

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);

Die Syntax der Funktionen ‘Transaktionsstart’ und ‘Transaktionsende’ ist ziemlich einfach. Beide haben den Transaktionsnamen als erstes Argument. Die Funktion ‘Transaktion beenden’ hat ein weiteres Attribut – ‘LR_AUTO’, dies weist VuGen an, eine Transaktion automatisch zu bestehen oder zu scheitern (anstatt explizit eine Bedingung für ein Bestehen oder Scheitern anzugeben).

Wenn der Load Runner beim Ausführen von Anforderungen innerhalb einer Transaktion auf Fehler stößt, schlägt die Transaktion fehl, andernfalls wird die Transaktion übergeben.

Text- und Bildprüfungen in VuGen Script

Textprüfungen werden verwendet, um zu überprüfen, ob die für die Anforderung zurückgegebene Antwort korrekt ist oder nicht. Im Tutorial ‘Korrelation’ haben wir festgestellt, dass VuGen manchmal keinen Fehler anzeigt, die zurückgegebene Antwort jedoch möglicherweise nicht die richtige ist. Um sicherzustellen, dass die Antwort korrekt ist, verwenden wir Textprüfungen.

Wenn wir uns beispielsweise bei der Web Tours-Anwendung anmelden, gehen wir zur Startseite. Lassen Sie uns im Skript überprüfen, ob wir die richtige Antwort erhalten (Homepage) oder nicht, wenn wir uns anmelden.

Dazu müssen wir einen Text in der Antwort identifizieren (Homepage hier), der sagen kann, ob die Antwort korrekt ist oder nicht. ‘Willkommen’ ist ein solcher Text.

6.Text- und Bildprüfungen

Für die Textprüfung verwenden wir die Funktion ‘web_reg_find’ kurz vor der Anforderung.

Die Syntax dieser Funktion lautet:

web_reg_find("Text=","SaveCount=","Fail=",LAST);

Hier haben wir drei Attribute (siehe VuGen-Hilfe, um die vollständige Liste der Attribute zu erhalten):

‘Text’ – Wird verwendet, um anzugeben, nach welchem Text gesucht werden soll.

‘SaveCount’ – Speichert die Anzahl der Vorkommen des angegebenen Textes in einem von uns angegebenen Parameter.

‘Fail’ – Nimmt einen der beiden Werte -‘Found’ und ‘NotFound’ und schlägt das Skript entsprechend fehl.

Die Funktion web_reg_find(“Text = Welcome”,”SaveCount = WelcomeCount”,”Fail = NotFound”, LAST) sucht also in der Antwort nach dem Text ‘Welcome’ und speichert die Anzahl der Vorkommen im Parameter ‘WelcomeCount’ (und schlägt fehl das Skript, wenn der Text nicht gefunden wird).

Das Skript sieht so aus:

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);

Wenn wir nun das Skript wiederholen, erhalten wir einen Fehler für die Anmeldeanforderung (siehe im Relay-Protokoll), da VuGen den von uns angegebenen Text in der Antwort nicht gefunden hat. Dies liegt daran, dass wir nicht die richtige Homepage erhalten haben (wie im ‘Run-Time Viewer’ gezeigt).

7.wenn wir das Skript wiederholen, erhalten wir einen Fehler für die Anmeldeanforderung

Jetzt korrigieren wir unser Skript (korrelieren die UserSession) und wiederholen das Skript erneut.

 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);

Dieses Mal sehen wir keinen Fehler im Wiederholungsprotokoll, sondern eine Meldung, dass unsere Textprüfung erfolgreich war. So haben wir diesmal die richtige Antwort bekommen (wie es vom ‘Runtime Viewer’ bestätigt wird).

8.korrigieren Sie unser Skript (korrelieren Sie die UserSession) und wiederholen Sie das Skript erneut.

Wir können Textprüfungen mit Transaktionen kombinieren und VuGen dazu bringen, eine Transaktion zu bestehen, wenn die Textprüfung erfolgreich ist, und eine Transaktion fehlschlagen, wenn eine Textprüfung fehlgeschlagen ist.

Dies wird unten gezeigt:

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);}

Wir haben hier ‘if statement’ mit dem Attribut ‘SaveCount’ verwendet. Der Parameter ‘WelcomeCount’ (der die Anzahl der Vorkommen des Textes speichert) wird als Bedingung für das Bestehen / Fehlschlagen der Transaktion verwendet. Die Attribute ‘LR_PASS’ und ‘LR_FAIL’ von Transaktionsfunktionen werden verwendet, um eine Transaktion explizit zu übergeben bzw. zu scheitern.

Hinweis: Wir haben hier zwei neue Funktionen verwendet – ‘atoi’ und ‘lr_eval_string’. Wir werden später über diese Funktionen sprechen.

Weitere Informationen zur Kombination der Funktionsattribute ‘web_reg_find’:

#1) Wenn nur das Attribut ‘Text’ verwendet wird –

Beispiel: web_reg_find(“Text=Welcome”,LAST) –

VuGen sucht nach dem Text und schlägt das Skript fehl, wenn die Suche nicht erfolgreich ist.

# 2) Wenn nur die Attribute ‘Text’ und ‘SaveCount’ verwendet werden –

Beispiel: web_reg_find(“Text=Welcome”,”SaveCount=WelcomeCount”, LAST) – VuGen sucht nach dem Text und speichert die Anzahl der Vorkommen (auch wenn es Null ist) in den angegebenen Parameter (schlägt das Skript nicht fehl, wenn die Suche nicht erfolgreich ist).

#3) Wenn nur die Attribute ‘Text’ und ‘Fail’ verwendet werden –

Beispiel: web_reg_find(“Text = Welcome”,”Fail = NotFound”, LAST) – VuGen sucht nach dem Text und schlägt das Skript fehl, wenn der Text gefunden / nicht gefunden wird.

Textprüfungen können auch während der Aufnahme über das Symbol ‘Textprüfung einfügen’ in der schwebenden Aufzeichnungsleiste eingefügt werden. Dadurch wird dieselbe ‘web_reg_find’-Funktion in das Skript eingefügt.

9.'Textprüfung einfügen' Symbol

Aber es ist besser, dass wir diese Funktion manuell einfügen, da wir hauptsächlich die Attribute besser kontrollieren können.

Wir haben die Textprüfung klar verstanden, jetzt gehen wir zur Bildprüfung.

Image check wird verwendet, um das Vorhandensein eines angegebenen Bildes in einer Antwort zu überprüfen. ‘web_image_check’ Funktion wird für die Bildprüfung verwendet. Diese Funktion muss nach der Anfrage gestellt werden (in deren Antwort wir das Bild erwarten).

Beispiel für diese Funktion:

web_image_check("Image","Src=/WebTours/images/flights.gif",LAST)

Wobei das erste Attribut ein aussagekräftiger Name und das zweite Attribut (‘Src’) der Bildname / Link ist (siehe VuGen-Hilfe, um die vollständige Liste der Attribute zu erhalten).

Kommentare in VuGen-Skript

Kommentare in einem VuGen-Skript können während der Aufzeichnung und auch manuell nach der Aufzeichnung des Skripts eingegeben werden.

Klicken Sie während der Aufnahme auf das Symbol ‘Kommentar einfügen’ in der schwebenden Aufnahmeleiste.

10.'Kommentar einfügen'-Symbol

Geben Sie den Kommentar ein (sagen Sie hier ‘Login’).

11.Geben Sie den Kommentar ein

Nach der Aufnahme können wir die Kommentare im Skript wie unten gezeigt sehen.

/* 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",

In VuGen kann eine einzelne Zeile kommentiert werden, indem Sie einfach ‘//’ vor die Zeile setzen, wie unten gezeigt:

// 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");

Und mehrere Zeilen können durch Setzen von ‘/*’ am Anfang und ‘*/’ am Ende (wie unten gezeigt) verbunden werden)

/* 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"); */

Hinweis: In den oben gezeigten Beispielen haben wir die Cookie-Funktionen (web_add_cookie) kommentiert. Wir werden später in dieser Tutorial-Serie über Cookie-Funktionen sprechen.

Es empfiehlt sich, bei jedem Schritt während der Aufzeichnung Kommentare einzufügen, da dies uns hilft, die Anforderungen im Skript mit den Benutzeraktionen in der Anwendung in Beziehung zu setzen.

Rendezvous-Punkt im VuGen-Skript

Wenn wir ein Szenario haben, in dem eine größere Anzahl von Benutzern gleichzeitig eine Aktion für die Anwendung ausführt (z. B. das Überprüfen von Ergebnissen) und wenn wir dies in unserem Leistungstest simulieren müssen, können wir einen ‘Rendezvous-Punkt’ verwenden.

Ein ‘Rendezvous Point’ ist eine einzelne und einfache Funktion in einem VuGen-Skript, die Load Runner (während eines Tests mit mehreren Benutzern) anweist, an einem bestimmten Schritt im Skript zu warten, bis alle Vusers (die das Skript ausführen) zu diesem Schritt kommen, damit nachfolgende Anforderungen gleichzeitig ausgeführt werden können.

Die Syntax für die Rendezvous-Funktion lautet:

lr_rendezvous("MeaningfulName"); 

Diese Funktion kann während der Aufzeichnung und auch manuell nach der Aufzeichnung des Skripts eingefügt werden.

Angenommen, wir möchten den Zahlungsschritt in unserer Anwendung ‘Web Tours’ gleichzeitig laden. Klicken Sie während der Aufnahme in diesem Schritt (bevor Sie die Zahlungsdetails übermitteln) auf das Symbol ‘Rendezvous einfügen’ in der schwebenden Aufzeichnungsleiste.

12.zahlungsdetails

Und geben Sie den Namen des Rendezvous-Punkts ein (einen beliebigen aussagekräftigen Namen).

13.geben Sie den Rendezvous-Punktnamen ein

Nach der Aufnahme können wir die Rendezvous-Funktion im Skript wie folgt sehen.

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);

Wenn wir dieses Skript nun mit mehreren Benutzern im Controller ausführen, wird das Skript von Vusern unabhängig ausgeführt, aber Vusers warten bei diesem ‘Zahlungsschritt’, bis alle (oder ein bestimmter Prozentsatz der in der Rendezvous-Richtlinie definierten Vusers) diesen Schritt erreichen, wonach sie diesen Schritt gleichzeitig ausführen.

Weitere Informationen zur Rendezvous-Richtlinie (Optionen) finden Sie im Controller-Lernprogramm.

Fazit

Bisher haben wir Korrelation und Parametrierung in den vorherigen Tutorials und Transaktionen, Text- / Bildprüfungen, Kommentare und Rendezvous-Punkte in diesem Tutorial behandelt, Wir haben auch die wichtigsten Methoden zur Skriptverbesserung behandelt.

In unserem nächsten Tutorial werden wir einige weitere Scripting-Herausforderungen sowie die Möglichkeiten, mit ihnen umzugehen, sehen.

=> Besuchen Sie hier für die komplette Reihe von LoadRunner Tutorials

PREV Tutorial / NEXT Tutorial

Leave a Reply