transakce LoadRunner, kontroly textu a obrázků, komentáře a body setkání
Úvod do základních vylepšení skriptu Vugen:
podrobně jsme prozkoumali korelaci v LoadRunner v našem předchozím tutoriálu v tomto kompletním výukovém programu LoadRunner.
v posledních dvou tutoriálech jsme pracovali na zpracování dat ve skriptu VuGen (korelace a parametrizace).
v tomto tutoriálu LoadRunner uvidíme další základní vylepšení (uvedená níže), která jsou vyžadována pro náš skript:
- transakce-měření rychlosti a doby odezvy uživatelských akcí.
- textové a obrazové kontroly-aby bylo zajištěno, že vrácená odpověď je správná.
- Rendezvous points – aby uživatelé vykonávali úkol současně.
=> Klikněte zde pro kompletní sérii výukových programů LoadRunner
transakce ve skriptu Vugen
pouhé přehrání výkonnostních skriptů pouze zatíží aplikaci, ale nic neměří. Konečným cílem každého skriptu výkonu je vložit zatížení a měřit rychlost a dobu odezvy uživatelských akcí v aplikaci.
například, kolik času trvalo vyhledávání produktů, když je v aplikaci 100 uživatelů, kolik zpráv je generováno v době řekněme 15 minut a tak dále. Abychom je mohli měřit, musíme vložit transakce do skriptu vugen (po testu vidíme rychlost a dobu odezvy těchto transakcí ve výsledcích).
“transakce je koncové měření akce uživatele (nebo skupiny akcí uživatele) v aplikaci”.
transakce lze vkládat dvěma způsoby:
- během nahrávání
- po nahrávání (kde ručně vkládáme transakční funkce do skriptu)
vložíme transakci pro akci “přihlášení” uživatele do naší aplikace “webové prohlídky”.
v našem prvním tutoriálu jsme viděli, jak zaznamenávat akce uživatelů. Během nahrávání, po zadání “uživatelské jméno” a “heslo” na přihlašovací stránce, těsně před kliknutím na tlačítko “Přihlásit se”, klikněte na ikonu “Vložit počáteční transakci” na plovoucí nahrávací liště.
vugen vyzve k zadání názvu transakce. Zadejte jakékoli smysluplné jméno. Dali jsme zde “přihlášení”, ale je dobrým zvykem dodržovat takovou konvenci (číslo transakce, název scénáře, akce uživatele atd.): 01_WebTours_Launch 02_WebTours_Login (a tak dále).
Nyní klikněte na tlačítko Přihlášení.
jakmile se dostaneme na domovskou stránku (hlavní stránku), klikněte na ikonu “Vložit koncovou transakci” na plovoucí nahrávací liště.
vyberte transakci, kterou chceme ukončit (transakce “přihlášení” zde).
zastavte nahrávání a podívejte se na vygenerovaný skript. Vidíme, že funkce zahájení a ukončení transakce jsou vloženy do skriptu (zvýrazněny žlutě) a všechny požadavky odpovídající akci uživatele “přihlášení” jsou uzavřeny mezi těmito funkcemi.
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);
syntaxe funkcí “začátek transakce” a “konec transakce” je velmi jednoduchá. Oba mají jako první argument název transakce. Funkce “end transaction” má ještě jeden atribut – “LR_AUTO”, což dává vugenovi pokyn, aby transakci automaticky předal nebo selhal (místo toho, abychom explicitně specifikovali podmínku pro průchod nebo selhání).
pokud běžec zatížení narazí na chyby při provádění požadavků v rámci transakce, selže transakci, jinak transakci projde.
textové a obrazové kontroly ve skriptu Vugen
textové kontroly se používají k ověření, zda je odpověď vrácená pro požadavek správná nebo ne. V tutoriálu “korelace” jsme viděli, že někdy VuGen nemusí zobrazit žádnou chybu, ale vrácená odpověď nemusí být správná. Abychom zajistili správnou odpověď, používáme textové kontroly.
když se například přihlásíme do aplikace web Tours, přejdeme na domovskou stránku. Ověřme ve skriptu, že dostáváme správnou odpověď (domovská stránka) nebo ne, když se přihlásíme.
k tomu musíme identifikovat nějaký text v odpovědi (domovská stránka zde), který může říci, zda je odpověď správná nebo ne. “Vítejte” je jeden takový text.
pro kontrolu textu používáme funkci “web_reg_find” těsně před požadavkem.
syntaxe této funkce je:
web_reg_find("Text=","SaveCount=","Fail=",LAST);
zde máme tři atributy (viz VuGen pomoc získat úplný seznam atributů):
‘Text’ – slouží k určení, jaký text hledat.
‘ SaveCount – – uloží počet výskytů zadaného textu do parametru, který určíme.
‘Fail’ – vezme jednu ze dvou hodnot – ‘Found’ a ‘NotFound’ a podle toho selže skript.
funkce web_reg_find (“Text=Welcome”,”SaveCount=WelcomeCount”,” Fail=NotFound”, LAST) vyhledá text “Welcome” v odpovědi a uloží počet výskytů do parametru “WelcomeCount” (a selže skript, pokud text není nalezen).
skript vypadá takto:
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);
Nyní, pokud přehrajeme skript, dostaneme chybu pro žádost o přihlášení (viz protokol relé), protože VuGen nenašel text, který jsme zadali, v odpovědi. Je to proto, že jsme nedostali správnou domovskou stránku (jak je uvedeno v “run-time viewer”).
nyní opravíme náš skript (korelujeme uživatele) a znovu jej zopakujeme.
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);
tentokrát nevidíme žádnou chybu v protokolu přehrávání, ale vidíme zprávu, že naše kontrola textu byla úspěšná. Tentokrát jsme tedy dostali správnou odpověď (jak to potvrzuje “runtime viewer”).
můžeme kombinovat textové kontroly s transakcemi a provést vugen předáním transakce, pokud je kontrola textu úspěšná, a selhání transakce, pokud se kontrola textu nezdaří.
Toto je zobrazeno níže:
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);}
použili jsme zde příkaz ” if “s atributem “SaveCount”. Parametr “WelcomeCount” (který ukládá počet výskytů textu) se používá jako podmínka pro předání / selhání transakce. Atributy’ LR_PASS ‘a’ LR_FAIL ‘ transakčních funkcí se používají k explicitnímu předání a selhání (resp.) transakce.
poznámka: zde jsme použili dvě nové funkce – ‘atoi’ a ‘lr_eval_string’. O těchto funkcích si promluvíme později.
další informace o kombinaci atributů funkce ‘web_reg_find’ :
#1) Pokud je použit pouze atribut ‘Text’ –
příklad: web_reg_find (“Text=Welcome”, LAST) –
vugen vyhledá text a selže skript, pokud je vyhledávání neúspěšné.
#2) Pokud jsou použity pouze atributy ‘Text’ a ‘ SaveCount – –
příklad: web_reg_find (“Text=Welcome”,” SaveCount=WelcomeCount”, LAST) – VuGen vyhledá text a uloží počet výskytů (i když je nulový) do zadaného parametru(nezklame skript, pokud je vyhledávání neúspěšné).
#3) Pokud se používají pouze atributy “Text” a “Fail” –
příklad: web_reg_find (“Text=Welcome”,” Fail=NotFound”, LAST) – VuGen hledá text a selže skript, pokud je text nalezen / nenalezen.
textové kontroly lze také vložit během nahrávání pomocí ikony “Vložit kontrolu textu” na plovoucí liště záznamu. Tím se do skriptu vloží stejná funkce “web_reg_find”.
ale je lepší vložit tuto funkci ručně, protože budeme mít lepší kontrolu hlavně nad atributy.
pochopili jsme textovou kontrolu jasně, Nyní pojďme na kontrolu obrázků.
kontrola obrazu se používá k ověření přítomnosti zadaného obrazu v odpovědi. funkce ‘web_image_check’ se používá pro kontrolu obrazu. Tato funkce musí být zadána po požadavku (v reakci na kterou očekáváme obrázek).
příklad této funkce:
web_image_check("Image","Src=/WebTours/images/flights.gif",LAST)
kde první atribut je nějaký smysluplný název a druhý atribut (‘Src’) je název obrázku / odkaz (viz vugen pomoc získat úplný seznam atributů).
Komentáře ve skriptu Vugen
Komentáře ve skriptu vugen lze zadávat během nahrávání a také ručně po nahrání skriptu.
během nahrávání klikněte na ikonu “Vložit Komentář” na plovoucí liště záznamu.
zadejte komentář (zde řekněte “Přihlásit se”).
po nahrání vidíme Komentáře ve skriptu, jak je uvedeno níže.
/* 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",
ve Vugenu lze jeden řádek komentovat pouhým vložením ‘//’ před řádek, jak je uvedeno níže:
// 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");
a více řádků lze připojit vložením ‘/*’ na začátek a ‘* / ‘ na konec (jak je uvedeno níže)
/* 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"); */
poznámka: ve výše uvedených příkladech jsme komentovali funkce souborů cookie (web_add_cookie). O funkcích souborů cookie budeme hovořit později v této sérii tutoriálů.
je dobrým zvykem vkládat komentáře v každém kroku během nahrávání, protože nám to pomůže spojit požadavky ve skriptu s akcemi uživatele v aplikaci.
Rendezvous Point ve skriptu Vugen
pokud máme scénář, kdy větší počet uživatelů provádí akci současně v aplikaci (jako je kontrola výsledků) a pokud musíme simulovat totéž v našem testu výkonu, můžeme použít “Rendezvous point”.
a ‘Rendezvous point’ je jednoduchá a jednoduchá funkce ve skriptu vugen, která instruuje load Runnera (během testu s více uživateli), aby počkal na zadaný krok ve skriptu, dokud všichni uživatelé (vykonávající skript) nepřijdou k tomuto kroku, aby následný požadavek mohl být proveden současně.
syntaxe funkce Rendezvous je:
lr_rendezvous("MeaningfulName");
tuto funkci lze vložit během nahrávání a také ručně po nahrání skriptu.
Předpokládejme, že chceme současně načíst platební krok v naší aplikaci “webové prohlídky”. Během nahrávání v tomto kroku (před odesláním platebních údajů) klikněte na ikonu “Vložit setkání” na plovoucí liště záznamu.
a zadejte název místa setkání (jakýkoli smysluplný název).
po nahrání vidíme funkci setkání ve skriptu, jako je tento.
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);
nyní, když spustíme tento skript s více uživateli v řadiči, skript bude spuštěn uživateli nezávisle, ale uživatelé budou čekat na tento krok “platby”, dokud všichni (nebo určité procento uživatelů definovaných v Zásadách setkání) nedosáhnou tohoto kroku, po kterém tento krok provedou současně.
uvidíme více o zásadách setkání (možnosti) v tutoriálu řadiče.
závěr
až dosud jsme diskutovali o korelaci a parametrizaci v předchozích tutoriálech a transakcích, kontrolách textu/obrázků, komentářích a setkáních v tomto tutoriálu jsme také pokryli nejdůležitější metody vylepšení skriptu.
v našem dalším tutoriálu uvidíme další skriptovací výzvy spolu se způsoby, jak je zvládnout.
=> Navštivte zde kompletní sérii výukových programů LoadRunner
předchozí tutoriál / další tutoriál
Leave a Reply