loadrunner transactions
Leistungsoptimierung bei Fragen zu Orakelinterviews
Einführung in grundlegende Verbesserungen von VuGen Script:
Wir erforschten Korrelation in LoadRunner im Detail in unserem vorherigen Tutorial dazu Schließen Sie die LoadRunner-Schulungsanleitungen ab .
In den letzten beiden Tutorials haben wir an der Verarbeitung von Daten in einem VuGen-Skript (Korrelation und Parametrisierung) gearbeitet.
In diesem LoadRunner-Tutorial sehen wir die anderen grundlegenden Verbesserungen (unten aufgeführt), die für unser Skript erforderlich sind:
- Transaktionen - Um die Rate und Antwortzeit der Benutzeraktionen zu messen.
- Text- und Bildprüfungen - Um sicherzustellen, dass die zurückgegebene Antwort korrekt ist.
- Bemerkungen
- Rendezvous-Punkte - Damit Vusers gleichzeitig eine Aufgabe ausführen.
=> Klicken Sie hier, um eine vollständige Reihe von LoadRunner-Tutorials anzuzeigen
Was du lernen wirst:
- Transaktionen in VuGen Script
- Text- und Bildprüfungen in VuGen Script
- Kommentare in VuGen Script
- Treffpunkt in VuGen Script
- Fazit
- Literatur-Empfehlungen
Transaktionen in VuGen Script
Die bloße Wiedergabe von Leistungsskripten belastet die Anwendung nur, misst aber 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 lange hat eine Produktsuche gedauert, als 100 Benutzer in der Anwendung waren, wie viele Berichte wurden in einer Zeit von beispielsweise 15 Minuten erstellt 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:
- Während der Aufnahme
- Nach der Aufnahme (wo wir die Transaktionsfunktionen manuell in das Skript einfügen)
Lassen Sie uns eine Transaktion für die Benutzeraktion 'Anmelden' in unserer 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 des Kennworts auf der Anmeldeseite kurz vor dem Klicken auf die Schaltfläche 'Anmelden' auf das Symbol 'Starttransaktion einfügen' in der schwebenden Aufzeichnungsleiste.
VuGen fordert zur Eingabe des Transaktionsnamens auf. Geben Sie einen aussagekräftigen Namen ein. Wir haben hier 'Login' angegeben, aber es wird empfohlen, eine Konvention wie diese zu befolgen (Transaktionsnummer, Szenarioname, Benutzeraktion usw.): 01_WebTours_Launch 02_WebTours_Login (usw.).
Klicken Sie nun auf die Anmeldeschaltfläche.
Wenn wir die Startseite (Hauptseite) erreicht haben, klicken Sie auf das Symbol 'End Transaction einfügen' in der schwebenden Aufzeichnungsleiste.
Wählen Sie die Transaktion aus, die wir beenden möchten (Login-Transaktion hier).
Stoppen Sie die Aufzeichnung und sehen Sie sich das generierte Skript an. Wir können sehen, dass Funktionen zum Starten und Beenden von Transaktionen in das Skript eingefügt werden (gelb hervorgehoben) und alle Anforderungen, die der Benutzeraktion 'Anmelden' 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 recht einfach. Beide haben den Transaktionsnamen als erstes Argument. Die Funktion 'Transaktion beenden' verfügt über ein weiteres Attribut: 'LR_AUTO'. Dadurch wird VuGen angewiesen, eine Transaktion automatisch zu bestehen oder nicht zu bestehen (anstatt dass wir explizit eine Bedingung für ein Bestehen oder Nichtbestehen angeben).
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.
Zum Beispiel, Wenn wir uns bei der Web Tours-Anwendung anmelden, gehen wir zur Startseite. Lassen Sie uns im Skript überprüfen, ob wir die richtige Antwort (Homepage) erhalten oder nicht, wenn wir uns anmelden.
Dazu müssen wir einen Text in der Antwort (Homepage hier) identifizieren, der sagen kann, ob die Antwort korrekt ist oder nicht. 'Willkommen' ist ein solcher Text.
Für die Textprüfung verwenden wir „ web_reg_find ’ Funktion kurz vor der Anfrage.
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’ - Gibt an, 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 das Skript fehl, wenn der Text nicht gefunden wird).
Das Skript sieht folgendermaßen 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 wiedergeben, wird eine Fehlermeldung für die Anmeldeanforderung angezeigt (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 Startseite erhalten haben (wie im 'Laufzeit-Viewer' gezeigt).
Korrigieren wir nun unser Skript (korrelieren Sie die userSession) und spielen Sie das Skript erneut ab.
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 Wiedergabeprotokoll, aber eine Meldung, dass unsere Textprüfung erfolgreich war. Diesmal haben wir also die richtige Antwort erhalten (wie vom „Laufzeit-Viewer“ bestätigt).
Wir können Textprüfungen mit Transaktionen kombinieren und VuGen veranlassen, eine Transaktion zu bestehen, wenn die Textprüfung erfolgreich ist, und eine Transaktion fehlschlagen, wenn eine Textprüfung fehlschlägt.
Dies ist 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 die if-Anweisung mit dem Attribut 'SaveCount' verwendet. Der Parameter 'WelcomeCount' (der die Anzahl der Vorkommen des Textes speichert) wird als Bedingung für das Bestehen / Nichtbestehen der Transaktion verwendet. Die Attribute 'LR_PASS' und 'LR_FAIL' von Transaktionsfunktionen werden verwendet, um eine Transaktion explizit zu bestehen 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 = Willkommen', LETZT) -
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 = Willkommen', 'SaveCount = WelcomeCount', LAST) - VuGen sucht nach dem Text und speichert die Anzahl der Vorkommen (auch wenn sie Null ist) im angegebenen Parameter (schlägt das Skript nicht fehl, wenn die Suche nicht erfolgreich ist ).
# 3) Wenn nur die Attribute 'Text' und 'Fehler' verwendet werden -
Beispiel: web_reg_find ('Text = Willkommen', '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 Aufnahmeleiste eingefügt werden. Dies wird das gleiche einfügen ‘Web_reg_find’ Funktion in das Skript.
Es ist jedoch besser, diese Funktion manuell einzufügen, da wir hauptsächlich die Attribute besser steuern können.
Wir haben die Textprüfung klar verstanden. Gehen wir nun zur Bildprüfung.
Die Bildprüfung wird verwendet, um das Vorhandensein eines bestimmten Bildes in einer Antwort zu überprüfen. „ web_image_check ’ Funktion wird zur Bildprüfung verwendet. Diese Funktion muss nach der Anfrage gesetzt werden (in deren Antwort wir das Bild erwarten).
Beispiel für diese Funktion:
web_image_check(“Image”,”Src=/WebTours/images/flights.gif”,LAST)
Wenn das erste Attribut ein aussagekräftiger Name ist und das zweite Attribut („Src“) der Bildname / Link ist (siehe VuGen-Hilfe, um die vollständige Liste der Attribute zu erhalten).
Kommentare in VuGen Script
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 die ‘Kommentar einfügen’ Symbol in der schwebenden Aufnahmeleiste.
Geben Sie den Kommentar ein (sagen Sie hier 'Anmelden').
Nach der Aufnahme sehen wir die Kommentare im Skript wie unten gezeigt.
/* 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 einfach '//' vor die Zeile gesetzt wird, 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');
Sie können mehrere Leitungen verbinden, indem Sie am Anfang '/ *' und am Ende '* /' einfügen (siehe Abbildung unten).
/* 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 kommentiert ( web_add_cookie ). Wir werden später in dieser Tutorial-Reihe über Cookie-Funktionen sprechen.
Es wird empfohlen, 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.
Treffpunkt in VuGen Script
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 der Ergebnisse) und wir dies in unserem Leistungstest simulieren müssen, können wir einen „Rendezvous-Punkt“ verwenden.
Ein 'Rendezvous-Punkt' ist eine einzelne und einfache Funktion in einem VuGen-Skript, die den Load Runner (während eines Tests mit mehreren Benutzern) anweist, an einem bestimmten Schritt im Skript zu warten, bis alle Vuser (die das Skript ausführen) zu diesem Schritt kommen Diese nachfolgende Anforderung kann gleichzeitig ausgeführt werden.
Die Syntax für die Rendezvous-Funktion lautet:
lr_rendezvous(“MeaningfulName”);
Diese Funktion kann während der Aufnahme und auch manuell nach der Aufnahme 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.
Geben Sie den Namen des Treffpunkts ein (einen beliebigen aussagekräftigen Namen).
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 jetzt mit mehreren Benutzern in Controller ausführen, wird das Skript von Vusers unabhängig ausgeführt, aber Vusers warten bei diesem Schritt 'Zahlung', bis alle (oder ein gewisser Prozentsatz der in der Rendezvous-Richtlinie definierten Vuser) diesen Schritt erreicht haben, nach dem sie ausgeführt werden dieser Schritt gleichzeitig.
Weitere Informationen zur Rendezvous-Richtlinie (Optionen) finden Sie im Controller-Lernprogramm.
Fazit
Bis jetzt haben wir in den vorherigen Tutorials und Transaktionen, Text- / Bildprüfungen, Kommentaren und Rendezvous-Punkten in diesem Tutorial über Korrelation und Parametrisierung gesprochen. Außerdem haben wir die wichtigsten Methoden zur Skriptverbesserung behandelt.
In unserem nächsten Tutorial werden wir einige weitere Herausforderungen bei der Skripterstellung sowie die Möglichkeiten, mit ihnen umzugehen, sehen.
=> Besuchen Sie hier für eine vollständige Reihe von LoadRunner-Tutorials
PREV Tutorial | NÄCHSTES Tutorial
Literatur-Empfehlungen
- Lasttests mit HP LoadRunner-Tutorials
- Einführung in Micro Focus LoadRunner - Lasttests mit LoadRunner Tutorial # 1
- Korrelation - Lasttest mit LoadRunner
- LoadRunner Tutorial für Anfänger (kostenloser 8-tägiger Tiefenkurs)
- Analyse und Berichte der Testergebnisse - Lasttests mit LoadRunner
- Testen der Webdienstleistung mit LoadRunner VuGen Scripting
- Unterschied zwischen LoadRunner und Performance Center
- So richten Sie LoadRunner VuGen-Skriptdateien und Laufzeiteinstellungen ein