LoadRunner-transaktioner, Text-och bildkontroller, kommentarer och Rendezvous-poäng

introduktion till grundläggande förbättringar av VuGen-skript:

vi undersökte korrelation i LoadRunner i detalj i vår tidigare handledning i denna kompletta Loadrunner-Träningshandledning.

under de senaste två handledningarna arbetade vi med att hantera data i ett VuGen-skript (korrelation och parametrisering).

i denna LoadRunner-handledning ser vi de andra grundläggande förbättringarna (listade nedan) som krävs för vårt skript:

  1. transaktioner – för att mäta hastighet och svarstid för användaråtgärderna.
  2. text – och bildkontroller-för att säkerställa att svaret som returneras är korrekt.
  3. Rendezvous points – för att göra Vusers utföra en uppgift samtidigt.

=> Klicka här för komplett serie av LoadRunner Tutorials

transaktioner, text-och bildkontroller, kommentarer och rendezvous poängtransaktioner, text-och bildkontroller, kommentarer och rendezvous poäng

transaktioner i VuGen Script

enbart uppspelning av prestandaskript kommer bara att lägga en belastning på applikationen men mäter inte någonting. Slutmålet för alla prestandaskript är att injicera belastning och mäta hastigheten och svarstiden för användaråtgärder på applikationen.

till exempel, hur mycket tid en produktsökning tog när 100 användare är på ansökan, hur många rapporter genereras i en tid av säga 15 minuter och så vidare. För att mäta dessa måste vi infoga transaktioner i ett VuGen-skript (efter testet kan vi se hastigheten och svarstiden för dessa transaktioner i resultaten).

‘en transaktion är en end-to-end-mätning av en användaråtgärd (eller en grupp användaråtgärder) i ett program’.

transaktioner kan införas på två sätt:

  1. under inspelning
  2. efter inspelning (där vi manuellt sätter in transaktionsfunktionerna i skriptet)

Låt oss infoga transaktion för ‘Logga in’ användaråtgärd på vår ‘Web Tours’ ansökan.

i vår första handledning såg vi hur man spelar in användaråtgärder. När du spelar in, efter att du har angett ‘användarnamn ‘och’ lösenord ‘på inloggningssidan, precis innan du klickar på’ Logga in ‘- knappen, klicka på’ Infoga Start transaktion ‘ – ikonen på den flytande inspelningsfältet.

1.Under inspelning

vugen frågar efter transaktionsnamn. Ange något meningsfullt namn. Vi har gett ‘inloggning’ här men det är en bra praxis att följa en konvention som denna (transaktionsnummer, scenarionamn, användaråtgärd etc.): 01_WebTours_Launch 02_WebTours_Login (och så vidare).

2.VuGen frågar efter transaktionsnamn

Klicka nu på inloggningsknappen.

3.Klicka nu på inloggningsknappen

när vi når hemsidan (huvudsidan) klickar du på ikonen ‘Infoga avsluta transaktion’ i det flytande inspelningsfältet.

4.klicka på ikonen' Infoga avsluta transaktion ' i det flytande inspelningsfältet.

välj den transaktion som vi vill avsluta (‘logga in’ transaktion här).

5. 'Logga in' transaktion som vi vill avsluta

stoppa inspelningen och se det genererade skriptet. Vi kan se att transaktionsstart och transaktionsslutfunktioner infogas i skriptet (markerat i gult) och alla förfrågningar som motsvarar användaråtgärden ‘logga in’ är inneslutna mellan dessa 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);

syntaxen för funktionerna ‘transaktionsstart’ och ‘transaktionsslut’ är ganska enkel. Båda har transaktionsnamn som första argument. Funktionen ‘avsluta transaktion’ har ytterligare ett attribut – ‘LR_AUTO’, detta instruerar VuGen att skicka eller misslyckas en transaktion automatiskt (istället för att vi uttryckligen anger ett villkor för ett pass eller misslyckas).

om load runner stöter på några fel i att utföra förfrågningar inom en transaktion misslyckas transaktionen annars passerar transaktionen.

text-och bildkontroller i VuGen Script

Textkontroller används för att verifiera om svaret som returneras för begäran är korrekt eller inte. I’ korrelation ‘ – handledningen såg vi att ibland kanske VuGen inte visar något fel men det returnerade svaret kanske inte är det rätta. Så för att säkerställa att svaret är korrekt använder vi textkontroller.

när vi till exempel loggar in i web Tours-applikationen går vi till hemsidan. Låt oss Verifiera i skriptet att vi får rätt svar (hemsida) eller inte när vi loggar in.

för att göra detta måste vi identifiera lite text i svaret (hemsida här) som kan säga om svaret är korrekt eller inte. Välkommen är en sådan text.

6.Text-och bildkontroller

för textkontroll använder vi funktionen web_reg_find strax före begäran.

syntaxen för denna funktion är:

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

här har vi tre attribut (se VuGen hjälp för att få den fullständiga listan över attribut):

‘Text’- används för att ange vilken text att söka efter.

‘SaveCount’ – sparar antalet förekomster av den angivna texten i en parameter som vi anger.

‘Fail’ – tar ett av de två värdena -‘Found’ och ‘NotFound’ och misslyckas med skriptet i enlighet därmed.

så funktionen web_reg_find(“Text=Welcome”,”SaveCount=WelcomeCount”,”Fail=NotFound”, LAST) söker efter texten “Welcome” i svaret och sparar antalet händelser i parametern “WelcomeCount” (och misslyckas med skriptet om texten inte hittas).

skriptet ser ut så här:

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

nu om vi spelar upp skriptet får vi ett fel för inloggningsbegäran (se i reläloggen) eftersom VuGen inte hittade texten som vi angav i svaret. Detta beror på att vi inte fick rätt hemsida (som visas I ‘run-time viewer’).

7.om vi spelar upp skriptet får vi ett fel för inloggningsförfrågan

låt oss nu korrigera vårt skript (korrelera användarsessionen) och spela upp skriptet 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);

den här gången ser vi inget fel i omspelningsloggen men ser ett meddelande om att vår textkontroll lyckades. Så vi fick rätt svar den här gången (eftersom det bekräftas av ‘runtime viewer’).

8.korrigera vårt manus (korrelera användarensession) och spela upp manuset igen.

vi kan kombinera textkontroller med transaktioner och få VuGen att skicka en transaktion om textkontrollen lyckas och misslyckas med en transaktion om en textkontroll misslyckas.

detta visas nedan:

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 använt ‘if uttalande’ här med ‘SaveCount’ attribut. Parametern ‘WelcomeCount’ (som sparar antalet förekomster av texten) används som ett villkor för att passera/misslyckas transaktionen. Attributen ‘lr_pass’ och ‘LR_FAIL’ för transaktionsfunktioner används för att uttryckligen skicka och misslyckas (respektive) en transaktion.

vi använde två nya funktioner här – ‘atoi’och ‘ lr_eval_string’. Vi kommer att prata om dessa funktioner senare.

lite mer information om kombinationen av ‘web_reg_find’ funktion attribut:

#1) Om bara’ Text ‘ attribut används-

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

VuGen söker efter texten och misslyckas med skriptet om sökningen misslyckas.

#2) Om bara”Text”och”SaveCount” attribut används –

exempel: web_reg_find (“Text=Welcome”, “SaveCount=WelcomeCount”, LAST) – VuGen söker efter texten och sparar antalet händelser (även om det är noll) i den angivna parametern (misslyckas inte skriptet om sökningen misslyckas).

#3) Om bara’ Text ‘och’ Fail ‘ attribut används-

exempel: web_reg_find (“Text = Welcome”, “Fail=NotFound”, LAST) – VuGen söker efter texten och misslyckas med skriptet om texten hittas/inte hittas.

textkontroller kan också infogas under inspelning med ikonen ‘Infoga textkontroll’ på det flytande inspelningsfältet. Detta kommer att infoga samma’ web_reg_find ‘ – funktion i skriptet.

9.'Infoga textkontroll' ikon

men det är bättre att vi sätter in den här funktionen manuellt eftersom vi kommer att ha bättre kontroll främst på attributen.

vi har förstått textkontroll tydligt, låt oss nu gå till bildkontroll.

bildkontroll används för att verifiera närvaron av en viss bild i ett svar. ‘web_image_check’ – funktionen används för bildkontroll. Denna funktion måste sättas efter begäran (i svaret som vi förväntar oss bilden).

exempel på denna funktion:

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

där det första attributet är något meningsfullt namn och det andra attributet (‘Src’) är bildnamnet/länken (Se VuGen hjälp för att få den fullständiga listan över attribut).

kommentarer i VuGen Script

kommentarer i ett VuGen script kan skrivas in under inspelning och även manuellt efter att skriptet spelats in.

under inspelningen klickar du på ikonen ‘Infoga Kommentar’ i det flytande inspelningsfältet.

10.'Infoga Kommentar' ikon

ange kommentaren (säg ‘logga in’ här).

11.Ange kommentaren

efter inspelning kan vi se kommentarerna i skriptet som visas nedan.

/* 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 enda rad kommenteras genom att bara sätta ‘/ / ‘ före raden som visas nedan:

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

och flera rader kan anslutas genom att sätta’/* ‘i början och’ * / ‘ i slutet (som visas nedan)

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

notera: i exemplen som visas ovan kommenterade Vi cookie-funktionerna (web_add_cookie). Vi kommer att prata om cookiefunktioner senare i denna handledningsserie.

det är en bra praxis att infoga kommentarer vid varje steg under inspelningen eftersom det hjälper oss att relatera förfrågningarna i skriptet till användaråtgärderna i applikationen.

Rendezvous punkt i VuGen Script

om vi har ett scenario där ett större antal användare utför en åtgärd samtidigt på applikationen (som att kontrollera resultat) och om vi måste simulera detsamma i vårt prestandatest kan vi använda en ‘Rendezvous punkt’.

en ‘Rendezvous point’ är en enkel och enkel funktion i ett VuGen-skript som instruerar load runner (under ett test med flera användare) att vänta vid ett angivet steg i skriptet tills alla Vusers (exekverar skriptet) kommer till det steget så att efterföljande begäran kan köras samtidigt.

syntaxen för Rendezvous-funktionen är:

lr_rendezvous("MeaningfulName"); 

denna funktion kan infogas under inspelning och även manuellt efter att skriptet spelats in.

Antag att vi vill lägga en samtidig belastning på betalningssteget i vår ‘Web Tours’ – applikation. Under inspelningen i det steget (innan du skickar in betalningsuppgifterna) klickar du på ikonen ‘Infoga Rendezvous’ i det flytande inspelningsfältet.

12.betalningsinformation

och ange rendezvous punktnamn (något meningsfullt namn).

13.ange rendezvous-punktnamnet

efter inspelning kan vi se rendezvous-funktionen i skriptet så här.

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

nu när vi kör det här skriptet med flera användare i Controller, kommer skriptet att köras av Vusers oberoende men Vusers väntar på detta Betalningssteg tills alla (eller någon procentandel av Vusers definierade i Rendezvous policy) når detta steg varefter de utför detta steg samtidigt.

vi kommer att se mer om rendezvous-policyn (alternativ) i Styrhandledningen.

slutsats

hittills har vi diskuterat korrelation och parametrisering i tidigare handledning och transaktioner, Text/bildkontroller, kommentarer och Rendezvous-poäng i denna handledning har vi också täckt de viktigaste skriptförbättringsmetoderna.

i vår nästa handledning kommer vi att se några fler skriptutmaningar tillsammans med sätten att hantera dem.

=> besök här för komplett serie av LoadRunner Tutorials

PREV Tutorial / nästa Tutorial

Leave a Reply