loadrunner transactions
hur man gör makefile c ++
Introduktion till grundläggande förbättringar av VuGen Script:
Vi utforskade Korrelation i LoadRunner i detalj i vår tidigare handledning i detta Kompletta LoadRunner-utbildningsövningar .
I de två senaste självstudierna arbetade vi med att hantera data i ett VuGen-skript (korrelation och parametrisering).
I denna LoadRunner-handledning kommer vi att se de andra grundläggande förbättringarna (listade nedan) som krävs för vårt skript:
- Transaktioner - För att mäta hastigheten och svarstiden för användaråtgärderna.
- Text- och bildkontroller - För att säkerställa att svaret som returneras är korrekt.
- Kommentarer
- Rendezvous poäng - Att få Vusers att utföra en uppgift samtidigt.
=> Klicka här för en komplett serie LoadRunner-handledning
Vad du kommer att lära dig:
- Transaktioner i VuGen Script
- Text- och bildkontroller i VuGen-skript
- Kommentarer i VuGen Script
- Rendezvous Point i VuGen Script
- Slutsats
- Rekommenderad läsning
Transaktioner i VuGen Script
Enbart omspelning av prestandaskript kommer bara att belasta applikationen men mäter ingenting. Slutmålet för alla prestandaskript är att injicera belastning och mäta hastigheten och responstiden för användaråtgärder på applikationen.
Till exempel ,hur mycket tid en produktsökning tog när 100 användare är på applikationen, hur många rapporter som genereras på en tid av säg 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 responstiden för dessa transaktioner i resultaten).
”En transaktion är en slut-till-slut-mätning av en användaråtgärd (eller en grupp av användaråtgärder) i en applikation”.
Transaktioner kan infogas på två sätt:
- Under inspelning
- Efter inspelning (där vi manuellt infogar transaktionsfunktionerna i skriptet)
Låt oss infoga transaktioner för användaråtgärden 'Logga in' i vår applikation 'Web Tours'.
I vår första handledning såg vi hur man registrerar användaråtgärder. När du spelar in, efter att du har angett 'Användarnamn' och 'Lösenord' på inloggningssidan, klickar du på ikonen 'Infoga starta transaktion' i den flytande inspelningsfältet innan du klickar på 'Logga in'.
VuGen uppmanar till transaktionsnamn. Ange ett meningsfullt namn. Vi har gett 'Inloggning' här men det är bra att följa en konvention som denna (transaktionsnummer, scenarionamn, användaråtgärd etc.): 01_WebTours_Launch 02_WebTours_Login (och så vidare).
Klicka nu på Inloggningsknapp.
När vi väl kommit till hemsidan (huvudsidan) klickar du på ikonen ”Infoga sluttransaktion” på det flytande inspelningsfältet.
Välj den transaktion som vi vill avsluta (”Login” -transaktion här).
Stoppa inspelningen och se det genererade skriptet. Vi kan se att transaktionsstart- och transaktionsslutfunktioner infogas i skriptet (markerat med 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 det första argumentet. 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 misslyckande).
Om load runner stöter på några fel vid exekvering av förfrågningar inom en transaktion misslyckas transaktionen annars passerar transaktionen.
Text- och bildkontroller i VuGen-skript
Textkontroller används för att verifiera om svaret som returneras för begäran är korrekt eller inte. I handboken 'Korrelation' såg vi att VuGen ibland kanske 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.
Till exempel, när vi loggar in på web Tours-appen 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 (hemsidan här) som kan säga om svaret är korrekt eller inte. ”Välkommen” är en sådan text.
För textkontroll använder vi ” web_reg_find ' funktion precis 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å en fullständig lista med attribut):
‘Text’- Används för att ange vilken text du vill söka efter.
'SaveCount' - Sparar antalet förekomster av den angivna texten i en parameter som vi anger.
'Misslyckas' - 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 förekomster i parametern 'WelcomeCount' (och misslyckas med skriptet om texten inte hittas).
Manuset 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 om skriptet får vi ett fel för inloggningsförfrågan (se i reläloggen) eftersom VuGen inte hittade texten som vi angav i svaret. Det beror på att vi inte fick rätt hemsida (som visas i ”runtime viewer”).
Låt oss nu korrigera vårt skript (korrelera userSession) 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 inga 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').
Vi kan kombinera textkontroller med transaktioner och få VuGen att genomföra 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 attributet 'SaveCount'. Parametern ”WelcomeCount” (som sparar antalet förekomster av texten) används som ett villkor för att klara / misslyckas med transaktionen. 'LR_PASS' och 'LR_FAIL' attribut för transaktionsfunktioner används för att uttryckligen skicka och misslyckas (respektive) en transaktion.
Notera: Vi använde två nya funktioner här - 'Atoi' och 'Lr_eval_string' . Vi ska prata om dessa funktioner senare.
Lite mer information om kombinationen av ”web_reg_find” -funktionsattribut:
# 1) Om bara attributet ”Text” används -
Exempel: web_reg_find (“Text = Välkommen”, SISTA) -
VuGen söker efter texten och misslyckas med skriptet om sökningen misslyckas.
# 2) Om bara attributen 'Text' och 'SaveCount' används -
Exempel: web_reg_find (“Text = Welcome”, ”SaveCount = WelcomeCount”, SISTA) - VuGen söker efter texten och sparar antalet förekomster (även om den är noll) i den angivna parametern (misslyckas inte skriptet om sökningen misslyckas ).
# 3) Om bara attributen 'Text' och 'Fail' används -
Exempel: web_reg_find (“Text = Welcome”, ”Fail = NotFound”, SISTA) - 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 detsamma 'Web_reg_find' funktion i skriptet.
Men det är bättre att vi infogar den här funktionen manuellt eftersom vi kommer att ha bättre kontroll främst på attributen.
Vi har förstått textkontroll tydligt, nu går vi 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 VuGens hjälp för att få en fullständig lista med attribut).
Kommentarer i VuGen Script
Kommentarer i ett VuGen-skript kan skrivas in under inspelning och även manuellt efter att manuset har spelats in.
Klicka på knappen under inspelningen 'Infoga kommentar' ikonen på det flytande inspelningsfältet.
Ange kommentaren (säg ”Logga in” här).
Efter inspelning kan vi se kommentarerna i manuset 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 kakfunktionerna ( webb_add_cookie ). Vi kommer att prata om kakefunktioner senare i denna handledningsserie.
Det är en bra praxis att infoga kommentarer i varje steg under inspelningen eftersom det hjälper oss att relatera förfrågningarna i skriptet till användarens åtgärder i applikationen.
Rendezvous Point i VuGen Script
Om vi har ett scenario där ett större antal användare utför en åtgärd samtidigt i 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-punkt' ä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 specifikt steg i skriptet tills alla Vusers (körning av skriptet) kommer till det steget så att efterföljande begäran kan utföras samtidigt.
Syntaxen för Rendezvous-funktionen är:
lr_rendezvous(“MeaningfulName”);
Denna funktion kan infogas under inspelning och även manuellt efter att manuset har 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 betalningsuppgifterna) klickar du på ikonen ”Infoga möte” i det flytande inspelningsfältet.
Och ange namnet på mötesplatsen (valfritt meningsfullt namn).
Efter inspelning kan vi se rendezvous-funktionen i manuset 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 kommer att vänta i detta 'Betalnings' -steg tills alla (eller någon procentandel av Vusers som definieras i Rendezvous-policyn) når detta steg varefter de utför detta steg samtidigt.
Vi kommer att se mer om rendezvouspolicyn (alternativ) i handledaren för kontroller.
Slutsats
Hittills har vi diskuterat korrelation och parametrisering i de tidigare självstudierna och transaktioner, text / bildkontroller, kommentarer och mötespunkter i denna handledning, vi har också täckt de viktigaste metoderna för förbättring av skript.
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 en komplett serie av LoadRunner-handledning
PREV-handledning | NÄSTA självstudie
Rekommenderad läsning
- Lasttestning med HP LoadRunner-handledning
- Introduktion till Micro Focus LoadRunner - Load Testing with LoadRunner Tutorial # 1
- Korrelation - Load Testing med LoadRunner
- LoadRunner-handledning för nybörjare (gratis 8-dagars djupkurs)
- Testresultatanalys och rapporter - Load Testing med LoadRunner
- Test av webbtjänstens prestanda med LoadRunner VuGen Scripting
- Skillnaden mellan LoadRunner och Performance Center
- Så här ställer du in LoadRunner VuGen-skriptfiler och Runtime-inställningar