LoadRunner transaktioner, tekst og billede kontrol, kommentarer og stævnemøder punkter
Introduktion til grundlæggende forbedringer af VuGen Script:
vi udforskede korrelation i LoadRunner i detaljer i vores tidligere tutorial i denne komplette LoadRunner uddannelse Tutorials.
i de sidste to tutorials arbejdede vi med at håndtere data i et VuGen-script (korrelation og parameterisering).
i denne LoadRunner-tutorial vil vi se de andre grundlæggende forbedringer (angivet nedenfor), der kræves til vores script:
- transaktioner – for at måle hastighed og responstid for brugerhandlingerne.
- tekst – og billedkontrol-for at sikre, at det returnerede svar er korrekt.
- mødepunkter – for at få Vusers til at udføre en opgave samtidigt.
=> Klik her for komplet serie af LoadRunner Tutorials
transaktioner i VuGen Script
den blotte gentagelse af præstationsskripter lægger kun en belastning på applikationen, men måler ikke noget. Slutmålet med ethvert ydelsesscript er at injicere belastning og måle hastigheden og responstiden for brugerhandlinger på applikationen.
For eksempel, hvor lang tid en produktsøgning tog, når 100 brugere er på applikationen, hvor mange rapporter der genereres i en tid på 15 minutter og så videre. For at måle disse er vi nødt til at indsætte transaktioner i et VuGen-script (efter testen kan vi se hastigheden og responstiden for disse transaktioner i resultaterne).
‘en transaktion er en end-to-end måling af en brugerhandling (eller en gruppe af brugerhandlinger) på en applikation’.
transaktioner kan indsættes på to måder:
- under optagelse
- efter optagelse (hvor vi manuelt indsætter transaktionsfunktionerne i scriptet)
lad os indsætte transaktion for ‘Login’ bruger handling på vores ‘Internet ture’ ansøgning.
i vores første tutorial så vi, hvordan man registrerer brugerhandlinger. Under optagelse, efter indtastning af ‘brugernavn ‘og’ adgangskode ‘på Login-siden, lige før du klikker på’ Login ‘- knappen, skal du klikke på’ Indsæt start transaktion ‘ ikon på den flydende optagelseslinje.
VuGen beder om transaktionsnavn. Indtast et meningsfuldt navn. Vi har givet ‘Login’ her, men det er en god praksis at følge en konvention som denne (transaktionsnummer, scenarienavn, brugerhandling osv.): 01_lancer_lancer_login (og så videre).
Klik nu på Login-knappen.
når vi når hjemmesiden (hovedsiden), skal du klikke på ikonet ‘Indsæt Sluttransaktion’ på den flydende optagelseslinje.
Vælg den transaktion, vi vil afslutte (‘Login’ transaktion her).
Stop optagelsen og se det genererede script. Vi kan se, at transaktionsstart-og transaktionsslutfunktioner indsættes i scriptet (fremhævet med gult), og alle anmodninger, der svarer til ‘Login’ – brugerhandlingen, er vedlagt mellem disse funktioner.
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);
syntaksen for funktionerne ‘transaktionsstart’ og ‘transaktionsstart’ er ret enkel. Begge har transaktionsnavn som det første argument. Funktionen ‘ sluttransaktion ‘har endnu en attribut – ‘LR_AUTO’, dette instruerer VuGen om automatisk at bestå eller mislykkes en transaktion (i stedet for at vi eksplicit angiver en betingelse for et pas eller fiasko).
hvis load runner støder på fejl i udførelsen af anmodninger inden for en transaktion, fejler den transaktionen, ellers passerer den transaktionen.
tekst-og billedkontrol i VuGen Script
tekstkontrol bruges til at kontrollere, om svaret, der returneres til anmodningen, er korrekt eller ej. I ‘korrelation’ – vejledningen så vi, at VuGen undertiden muligvis ikke viser nogen fejl, men det returnerede svar er muligvis ikke det rigtige. Så for at sikre, at svaret er korrekt, bruger vi tekstkontrol.
for eksempel, når vi logger ind på hjemmesiden, går vi til hjemmesiden. Lad os kontrollere i scriptet, at vi får det rigtige svar (hjemmeside) eller ej, når vi logger ind.
for at gøre dette skal vi identificere noget tekst i svaret (hjemmeside her), som kan sige, om svaret er korrekt eller ej. ‘Velkommen’ er en sådan tekst.
til tekstkontrol bruger vi funktionen ‘netreg_find’ lige før anmodningen.
syntaksen for denne funktion er:
web_reg_find("Text=","SaveCount=","Fail=",LAST);
her har vi tre attributter (se VuGen hjælp til at få den komplette liste over attributter):
‘tekst’- bruges til at angive, hvilken tekst der skal søges efter.
‘SaveCount’ – gemmer antallet af forekomster af den angivne tekst i en parameter, som vi angiver.
‘Fail’ – tager en af de to værdier -‘Found’ og ‘NotFound’ og fejler scriptet i overensstemmelse hermed.
funktionen søger efter teksten ‘velkommen’ i svaret og gemmer antallet af forekomster i parameteren ‘velkommen’ (og fejler scriptet, hvis teksten ikke findes).
scriptet ser sådan ud:
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);
hvis vi nu afspiller scriptet, får vi en fejl for loginanmodningen (se i relæloggen), fordi VuGen ikke fandt den tekst, vi specificerede, i svaret. Dette skyldes, at vi ikke fik den rigtige startside (som vist i ‘run-time-seeren’).
lad os nu rette vores script (korrelere userSession) og afspille scriptet igen.
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);
denne gang ser vi ikke nogen fejl i replay-loggen, men ser en meddelelse om, at vores tekstkontrol var vellykket. Så vi fik det rigtige svar denne gang (som det bekræftes af ‘runtime-seeren’).
vi kan kombinere tekstkontrol med transaktioner og få VuGen til at bestå en transaktion, hvis tekstkontrollen er vellykket og mislykkes en transaktion, hvis en tekstkontrol mislykkes.
dette er vist nedenfor:
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);}
vi har brugt ‘if statement’ her med ‘SaveCount’ attribut. Parameteren’ velkommen ‘ (som gemmer antallet af forekomster af teksten) bruges som en betingelse for at bestå/mislykkes transaktionen. ‘Lr_pass’ og ‘lr_fail’ attributter for transaktionsfunktioner bruges til eksplicit at passere og mislykkes (henholdsvis) en transaktion.
Bemærk: Vi brugte to nye funktioner her- ‘atoi’og ‘ lr_eval_string’. Vi vil tale om disse funktioner senere.
nogle flere oplysninger om kombinationen af funktionsattributter:
#1) hvis kun’ tekst ‘ attribut bruges –
eksempel: (“tekst=velkommen”, sidst) –
VuGen søger efter teksten og fejler scriptet, hvis søgningen ikke lykkes.
#2) Hvis kun ‘tekst’ og ‘SaveCount’ attributter bruges –
eksempel:
#3) Hvis kun’ tekst ‘og’ Fail ‘ attributter bruges –
eksempel: (“tekst=velkommen”,” Fail=NotFound”, sidste) – VuGen søger efter teksten og fejler scriptet, hvis teksten er fundet/ikke fundet.
tekstkontrol kan også indsættes under optagelse ved hjælp af ikonet ‘Indsæt tekstkontrol’ på den flydende optagelseslinje. Dette vil indsætte den samme funktion i scriptet.
men det er bedre, at vi indsætter denne funktion manuelt, da vi primært har bedre kontrol over attributterne.
vi har forstået tekstkontrol klart, lad os nu gå til billedkontrol.
billedkontrol bruges til at verificere tilstedeværelsen af et specificeret billede i et svar. funktionen’ image_check ‘ bruges til billedkontrol. Denne funktion skal sættes efter anmodningen (i svaret som vi forventer billedet).
eksempel på denne funktion:
web_image_check("Image","Src=/WebTours/images/flights.gif",LAST)
hvor den første attribut er et meningsfuldt navn, og den anden attribut (‘Src’) er billednavnet/linket (Se VuGen hjælp til at få den komplette liste over attributter).
kommentarer i VuGen Script
kommentarer i et VuGen script kan indtastes under optagelse og også manuelt efter scriptet er optaget.
under optagelse skal du klikke på ikonet ‘Indsæt Kommentar’ på den flydende optagelseslinje.
indtast kommentaren (sig ‘Login’ her).
efter optagelse kan vi se kommentarerne i scriptet som vist nedenfor.
/* 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",
i VuGen kan en enkelt linje kommenteres ved blot at sætte ‘/ / ‘ før linjen som vist nedenfor:
// 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");
og flere linjer kan forbindes ved at sætte ‘/ * ‘i starten og’ * / ‘ i slutningen (som vist nedenfor)
/* 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"); */
Bemærk: I eksemplerne vist ovenfor kommenterede Vi cookiefunktionerne. Vi vil tale om cookiefunktioner senere i denne tutorial-serie.
det er en god praksis at indsætte kommentarer på hvert trin under optagelse, fordi det vil hjælpe os med at relatere anmodningerne i scriptet til brugerhandlingerne på applikationen.
mødepunkt i VuGen Script
hvis vi har et scenarie, hvor et større antal brugere udfører en handling samtidigt på applikationen (som kontrol af resultater), og hvis vi skal simulere det samme i vores ydelsestest, kan vi bruge et ‘mødepunkt’.
et ‘mødepunkt’ er en enkelt og enkel funktion i et VuGen-script, der instruerer load runner (under en test med flere brugere) til at vente på et bestemt trin i scriptet, indtil alle Vusers (udfører scriptet) kommer til det trin, så efterfølgende anmodning kan udføres samtidigt.
syntaksen for Mødefunktion er:
lr_rendezvous("MeaningfulName");
denne funktion kan indsættes under optagelse og også manuelt, efter at scriptet er optaget.
Antag, at vi ønsker at lægge en samtidig belastning på betalingstrinnet i vores ‘Internetture’ – applikation. Under optagelse på dette trin (inden du sender betalingsoplysningerne ), skal du klikke på ikonet ‘Indsæt møde’ på den flydende optagelseslinje.
og indtast navnet på mødestedet (ethvert meningsfuldt navn).
efter optagelse kan vi se mødefunktionen i scriptet som dette.
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);
når vi nu kører dette script med flere brugere i Controller, udføres scriptet uafhængigt af Vusers, men Vusers venter på dette ‘Betalingstrin’, indtil alle (eller en procentdel af Vusers defineret i Mødepolitik) når dette trin, hvorefter de udfører dette trin samtidigt.
vi vil se mere om mødepolitikken (indstillinger) i Controller-tutorial.
konklusion
indtil nu har vi diskuteret korrelation og parameterisering i de tidligere tutorials og transaktioner, tekst/billedkontrol, kommentarer og mødepunkter i denne tutorial har vi også dækket de vigtigste scriptforbedringsmetoder.
i vores næste tutorial vil vi se nogle flere scripting udfordringer sammen med måder at håndtere dem på.
=> besøg her for komplet serie af LoadRunner Tutorials
forrige Tutorial / næste Tutorial
Leave a Reply