Loadrunner Transactions, Text and Image Checks, Comments and Rendezvous Points
Introduction to basic enhancements of VuGen Script:
we onderzochten correlatie in LoadRunner in detail in onze vorige tutorial in deze Complete LoadRunner Training Tutorials.
in de laatste twee tutorials hebben we gewerkt aan het verwerken van gegevens in een vugen script (correlatie en parametrering).
in deze LoadRunner tutorial zullen we de andere basis verbeteringen zien (hieronder) die nodig zijn voor ons script:
- transacties-om de snelheid en responstijd van de acties van de gebruiker te meten.
- controles op tekst en afbeelding – om te controleren of het antwoord correct is.
- Rendezvous points – om Vusers tegelijkertijd een taak te laten uitvoeren.
=> Klik hier voor de Complete serie Loadrunner Tutorials
transacties in VuGen-Script
het opnieuw afspelen van performance-scripts zal de toepassing alleen maar belasten, maar meet niets. Het uiteindelijke doel van een performance script is het injecteren van belasting en het meten van de snelheid en de reactietijd van de acties van de gebruiker op de toepassing.
bijvoorbeeld, hoeveel tijd een product zoeken duurde wanneer 100 gebruikers op de applicatie, hoeveel rapporten worden gegenereerd in een tijd van Laten we zeggen 15 minuten en ga zo maar door. Om deze te meten, moeten we transacties in een vugen script invoegen (na de test kunnen we de snelheid en responstijd van deze transacties in de resultaten zien).
“een transactie is een eind-tot-eindmeting van een actie van de gebruiker (of een groep van acties van de gebruiker) op een toepassing”.
transacties kunnen op twee manieren worden ingevoegd:
- tijdens de opname
- na de opname (waarbij we handmatig de transactiefuncties in het script invoegen)
laten we transactie invoegen voor de’ Login ‘gebruiker actie op onze’ Web Tours ‘ applicatie.
in onze eerste tutorial zagen we hoe gebruikersacties op te nemen. Tijdens het opnemen, na het invoeren van de ‘gebruikersnaam ‘en’ wachtwoord ‘op de Login pagina, net voor het klikken op’ Login ‘knop, klik op’ Start transactie invoegen ‘ pictogram op de zwevende opname Balk.
vraagt VuGen om de naam van de transactie. Voer een betekenisvolle naam in. We hebben hier ‘Login’ gegeven, maar het is een goede gewoonte om een Conventie als deze te volgen (transactienummer, Scenarionaam, gebruikersactie, enz.): 01_WebTours_Launch 02_WebTours_Login (enzovoort).
klik nu op de Login knop.
zodra we de homepage (hoofdpagina) bereiken, klik op het pictogram ‘End Transaction Invoegen’ op de zwevende opnamebalk.
Selecteer de transactie die we willen beëindigen (‘Login’ transactie hier).
Stop de opname en zie het gegenereerde script. We kunnen zien dat transactie start en transactie einde functies worden ingevoegd in het script (gemarkeerd in geel) en alle verzoeken die overeenkomen met de ‘Login’ gebruiker actie zijn ingesloten tussen deze functies.
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);
de syntaxis van de functies’ transaction start ‘en’ transaction end ‘ is vrij eenvoudig. Beide hebben transactie naam als het eerste argument. De functie ‘eindtransactie’ heeft nog een attribuut – ‘LR_AUTO’, dit instrueert VuGen om een transactie automatisch door te geven of af te laten (in plaats van dat we expliciet een voorwaarde voor een pass of fail opgeven).
als de load runner fouten tegenkomt bij het uitvoeren van verzoeken binnen een transactie, dan faalt hij de transactie anders passeert hij de transactie.
tekst – en Afbeeldingscontroles in VuGen-Script
Tekstcontroles worden gebruikt om te controleren of het antwoord dat Voor het verzoek wordt geretourneerd correct is of niet. In de ‘Correlation’ tutorial zagen we dat VuGen soms geen fout kan laten zien, maar dat het antwoord misschien niet de juiste is. Dus, om ervoor te zorgen dat het antwoord correct is, gebruiken we tekstcontroles.
wanneer we bijvoorbeeld inloggen op de toepassing web Tours, gaan we naar de startpagina. Laten we in het script controleren of we het juiste antwoord krijgen (homepage) of niet wanneer we inloggen.
om dit te doen, moeten we een tekst identificeren in het antwoord (homepage Hier) die kan zeggen of het antwoord correct is of niet. “Welkom” is zo ‘ n tekst.
voor tekstcontrole gebruiken we de functie ‘web_reg_find’ vlak voor het verzoek.
de syntaxis van deze functie is:
web_reg_find("Text=","SaveCount=","Fail=",LAST);
hier hebben we drie attributen (refereer vugen help om de volledige lijst van attributen te krijgen):
‘Text’- gebruikt om te specificeren naar welke tekst te zoeken.
‘SaveCount’ – slaat het aantal keren van de opgegeven tekst op in een parameter die we specificeren.
‘ Fail ‘- neemt een van de twee waarden – ‘ Found ‘en’ NotFound ‘ en faalt het script dienovereenkomstig.
dus de functie, web_reg_find(“Text=Welcome”,”SaveCount=WelcomeCount”,”Fail=NotFound”, laatste) zoekt naar de tekst ‘Welcome’ in het antwoord en slaat het aantal voorvallen op in de parameter ‘WelcomeCount’ (en faalt het script als de tekst niet wordt gevonden).
het script ziet er zo uit:
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);
als we nu het script opnieuw afspelen, krijgen we een fout voor de login aanvraag (zie in het relay log) omdat VuGen de tekst die we hebben opgegeven niet heeft gevonden in het antwoord. Dit komt omdat we niet de juiste startpagina hebben gekregen (zoals weergegeven in de ‘runtime viewer’).
laten we nu ons script corrigeren (correleer de userSession) en het script opnieuw afspelen.
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);
deze keer zien we geen fout in de replay log maar zien we een bericht dat onze tekstcontrole succesvol was. Dus we kregen de juiste reactie deze keer (zoals het wordt bevestigd door de’runtime viewer’).
we kunnen tekstcontroles combineren met transacties en ervoor zorgen dat VuGen een transactie passeert als de tekstcontrole succesvol is en een transactie mislukt als een tekstcontrole mislukt.
dit wordt hieronder getoond:
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);}
we hebben hier ‘if statement’ gebruikt met ‘SaveCount’ attribuut. De parameter ‘WelcomeCount’ (die het aantal keren dat de tekst voorkomt opslaat) wordt gebruikt als voorwaarde om de transactie te laten slagen/mislukken. ‘LR_PASS ‘en’ LR_FAIL ‘ attributen van transactiefuncties worden gebruikt om een transactie expliciet door te geven en te laten mislukken (respectievelijk).
opmerking: We hebben hier twee nieuwe functies gebruikt – ‘ atoi ‘en’lr_eval_string’. We zullen het later over deze functies hebben.
wat meer informatie over de combinatie van de functieattributen ‘web_reg_find’:
#1) als alleen het attribuut ‘Text’ wordt gebruikt –
voorbeeld: web_reg_find (“Text = Welcome”, LAST) –
VuGen zoekt naar de tekst en faalt het script als de zoekopdracht niet succesvol is.
# 2) als alleen’ Text ‘en’ SaveCount ‘ attributen worden gebruikt –
voorbeeld: web_reg_find (“Text = Welcome”, “SaveCount=WelcomeCount”, LAST) – vugen zoekt naar de tekst en slaat het aantal keren (zelfs als het nul is) op in de opgegeven parameter (faalt het script niet als de zoekopdracht mislukt).
# 3) als alleen’ Text ‘- en’ Fail ‘ – attributen worden gebruikt –
voorbeeld: web_reg_find (“Text = Welcome”, “Fail=NotFound”, LAST) – VuGen zoekt naar de tekst en faalt het script als de tekst wordt gevonden/niet gevonden.
Tekstcontroles kunnen ook worden ingevoegd tijdens de opname met behulp van het pictogram’ tekstcontrole Invoegen ‘ op de zwevende opnamebalk. Dit zal dezelfde ‘web_reg_find’ Functie invoegen in het script.
maar het is beter dat we deze functie handmatig invoegen omdat we een betere controle hebben, voornamelijk op de attributen.
we hebben text check duidelijk begrepen, laten we nu naar image check gaan.
beeldcontrole wordt gebruikt om de aanwezigheid van een opgegeven afbeelding in een antwoord te verifiëren. de functie ‘web_image_check’ wordt gebruikt voor beeldcontrole. Deze functie moet na het verzoek worden geplaatst (in het antwoord waarvan we het beeld verwachten).
voorbeeld van deze functie:
web_image_check("Image","Src=/WebTours/images/flights.gif",LAST)
waarbij het eerste attribuut een betekenisvolle naam is en het tweede attribuut (‘Src’) de naam/link van de afbeelding is (raadpleeg vugen help om de volledige lijst met attributen te krijgen).
opmerkingen in VuGen-Script
opmerkingen in een vugen-script kunnen worden ingevoerd tijdens het opnemen en ook handmatig nadat het script is opgenomen.
klik tijdens het opnemen op het pictogram’ commentaar Invoegen ‘ op de zwevende opnamebalk.
voer het commentaar in (zeg hier ‘Login’).
na het opnemen kunnen we de opmerkingen in het script zien zoals hieronder getoond.
/* 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 kan een enkele regel worden becommentarieerd door gewoon ‘//’ voor de regel te zetten zoals hieronder getoond:
// 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");
en meerdere regels kunnen worden verbonden door ‘/*’ in het begin en ‘*/’ in het einde (zoals hieronder getoond)
/* 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"); */
opmerking: in de bovenstaande voorbeelden hebben we de cookiefuncties (web_add_cookie) becommentarieerd. We zullen later in deze tutorial-serie over cookiefuncties praten.
het is een goede gewoonte om opmerkingen in te voegen bij elke stap tijdens het opnemen, omdat het ons zal helpen om de verzoeken in het script te relateren aan de acties van de gebruiker op de toepassing.
Rendezvous Point in Vugen Script
als we een scenario hebben waarin een groter aantal gebruikers tegelijkertijd een actie op de applicatie uitvoert (zoals het controleren van resultaten) en als we hetzelfde moeten simuleren in onze prestatietest, kunnen we een ‘Rendezvous point’gebruiken.
een ‘Rendezvous point’ is een enkele en eenvoudige functie in een vugen script die load runner instrueert (tijdens een test met meerdere gebruikers) om te wachten op een bepaalde stap in het script totdat alle Vusers (het uitvoeren van het script) tot die stap komen zodat een volgend verzoek gelijktijdig kan worden uitgevoerd.
de syntaxis voor de Rendezvous-functie is:
lr_rendezvous("MeaningfulName");
deze functie kan worden ingevoegd tijdens de opname en ook handmatig nadat het script is opgenomen.
stel dat we een gelijktijdige belasting op de betaling Stap in onze ‘Web Tours’ applicatie. Tijdens het opnemen in die stap (voordat u de betalingsgegevens indient ), klikt u op het pictogram ‘Rendezvous Invoegen’ op de zwevende opnamebalk.
en voer de naam van het rendezvouspunt in (elke betekenisvolle naam).
na het opnemen, kunnen we de rendezvous functie in het script als volgt zien.
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);
wanneer we dit script met meerdere gebruikers in Controller draaien, zal het script onafhankelijk worden uitgevoerd door Vusers, maar Vusers zullen wachten op deze ‘betaling’ stap totdat alle (of een bepaald percentage van Vusers gedefinieerd in Rendezvous Beleid) Deze stap bereiken waarna ze deze stap tegelijkertijd uitvoeren.
we zullen meer zien over het rendezvous beleid (opties) in de Controller tutorial.
conclusie
tot nu toe hebben we correlatie en parametrering besproken in de vorige tutorials en transacties, tekst/beeld controles, opmerkingen en Rendezvous punten in deze tutorial hebben we ook de belangrijkste methoden voor het verbeteren van scripts behandeld.
in onze volgende tutorial zullen we wat meer scripting uitdagingen zien, samen met de manieren om ze aan te pakken.
=> bezoek hier voor de volledige reeks Loadrunner-Tutorials
vorige Tutorial / volgende Tutorial
Leave a Reply