LoadRunner tranzakciók, szöveges és Képellenőrzések, Megjegyzések és találkozási pontok
Bevezetés a Vugen Script alapvető fejlesztéseibe:
a LoadRunner korrelációját részletesen tanulmányoztuk a teljes LoadRunner képzési oktatóanyagok előző oktatóanyagában.
az utolsó két oktatóanyagban az adatok VuGen szkriptben történő kezelésén dolgoztunk (korreláció és paraméterezés).
ebben a LoadRunner oktatóanyagban látni fogjuk a szkriptünkhöz szükséges egyéb alapvető fejlesztéseket (alább felsorolva):
- tranzakciók – a felhasználói műveletek arányának és válaszidejének mérésére.
- szöveg – és Képellenőrzések-a visszaadott válasz helyességének ellenőrzése.
- Rendezvous points – hogy a Vusers egyszerre végezzen feladatot.
=> kattintson ide a LoadRunner oktatóanyagok teljes sorozatához
tranzakciók VuGen szkriptben
a teljesítmény szkriptek puszta visszajátszása csak terhelést jelent az alkalmazásra, de nem mér semmit. A performance script végső célja a terhelés befecskendezése és a felhasználói műveletek sebességének és válaszidejének mérése az alkalmazáson.
például, hogy mennyi időt vett igénybe egy termékkeresés, amikor 100 felhasználó van az alkalmazásban, hány jelentés készül mondjuk 15 perc alatt stb. Ezek méréséhez be kell illesztenünk a tranzakciókat egy VuGen szkriptbe (a teszt után láthatjuk ezen tranzakciók arányát és válaszidejét az eredményekben).
‘a tranzakció egy alkalmazás felhasználói műveletének (vagy felhasználói műveletek csoportjának) végponttól végpontig történő mérése’.
a tranzakciók kétféleképpen illeszthetők be:
- felvétel közben
- felvétel után (ahol manuálisan illesszük be a tranzakciós funkciókat a szkriptbe)
illesszük be a ‘bejelentkezés’ felhasználói művelet tranzakcióját a ‘Web Tours’ alkalmazásunkba.
az első oktatóanyagunkban láttuk, hogyan kell rögzíteni a felhasználói műveleteket. Felvétel közben, miután beírta a ‘felhasználónevet’ és a ‘ jelszót ‘a bejelentkezési oldalon, közvetlenül a’ Bejelentkezés ‘gombra kattintás előtt kattintson a’ Start tranzakció beszúrása ‘ ikonra a lebegő felvételi sávon.
VuGen kéri a tranzakció nevét. Adjon meg bármilyen értelmes nevet. Itt megadtuk a bejelentkezést, de jó gyakorlat egy ilyen konvenció követése (tranzakciószám, forgatókönyv neve, felhasználói művelet stb.): 01_WebTours_Launch 02_WebTours_Login (és így tovább).
most kattintson a Bejelentkezés gombra.
miután elértük a kezdőlapot (főoldalt), kattintson a lebegő felvételi sáv ‘Beszúrás vége tranzakció’ ikonjára.
válassza ki azt a tranzakciót, amelyet be akarunk fejezni (‘Bejelentkezés’ tranzakció itt).
állítsa le a felvételt, és nézze meg a generált szkriptet. Láthatjuk, hogy a tranzakció kezdete és a tranzakció vége funkciók be vannak illesztve a szkriptbe (sárga színnel kiemelve), és a ‘bejelentkezés’ felhasználói műveletnek megfelelő összes kérés be van zárva ezek közé a függvények közé.
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);
a ‘transaction start’ és ‘transaction end’ függvények szintaxisa meglehetősen egyszerű. Mindkettő tranzakció neve az első argumentum. Az ‘end transaction’ függvénynek van még egy attribútuma – ‘LR_AUTO’, ez arra utasítja a VuGen-t, hogy automatikusan adja át vagy meghiúsítsa a tranzakciót (ahelyett, hogy kifejezetten megadnánk a pass vagy fail feltételét).
ha a load runner hibát észlel a tranzakciók kéréseinek végrehajtásában, akkor nem sikerül a tranzakció, különben átmegy a tranzakción.
szöveg – és Képellenőrzések a Vugen Script
Szövegellenőrzések segítségével ellenőrzik, hogy a kérelemre adott válasz helyes-e vagy sem. A ‘korreláció’ oktatóanyagban láttuk, hogy néha a VuGen nem mutat hibát, de a visszaküldött válasz nem biztos, hogy helyes. Tehát annak érdekében, hogy a válasz helyes legyen, szöveges ellenőrzéseket használunk.
például, amikor bejelentkezünk a web Tours alkalmazásba, a kezdőlapra lépünk. Ellenőrizzük a szkriptben, hogy a bejelentkezéskor a helyes választ (honlapot) kapjuk-e vagy sem.
ehhez meg kell határoznunk néhány szöveget a válaszban (itt a honlap), amely megmondhatja, hogy a válasz helyes-e vagy sem. A Welcome egy ilyen szöveg.
szövegellenőrzéshez a’ web_reg_find ‘ függvényt használjuk közvetlenül a kérés előtt.
ennek a függvénynek a szintaxisa:
web_reg_find("Text=","SaveCount=","Fail=",LAST);
itt három attribútum van (lásd a Vugen súgót az attribútumok teljes listájának megszerzéséhez):
‘Text’- a keresendő szöveg megadására szolgál.
‘SaveCount’ – a megadott szöveg előfordulásainak számát menti egy megadott paraméterbe.
‘Fail’ – felveszi a két érték egyikét -‘Found’ és ‘NotFound’, és ennek megfelelően meghiúsul a szkript.
tehát a web_reg_find(“Text=Welcome”,”SaveCount=WelcomeCount”,”Fail=NotFound”, LAST) függvény megkeresi az “Welcome” szöveget a válaszban, és elmenti az előfordulások számát a “WelcomeCount” paraméterbe (és meghiúsítja a szkriptet, ha a szöveg nem található).
a forgatókönyv így néz ki:
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);
most, ha visszajátszjuk a szkriptet, hibát kapunk a bejelentkezési kérelemhez (lásd a továbbítási naplóban), mert VuGen nem találta meg a válaszban megadott szöveget. Ez azért van, mert nem kaptuk meg a megfelelő kezdőlapot (amint azt a ‘run-time viewer’mutatja).
most javítsuk ki a szkriptünket (korreláljuk a felhasználói munkamenetet), majd ismételjük meg újra a szkriptet.
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);
ezúttal nem látunk hibát a visszajátszási naplóban, hanem egy üzenetet látunk, hogy a szöveges ellenőrzés sikeres volt. Tehát ezúttal a helyes választ kaptuk (amint azt a ‘runtime viewer’is megerősíti).
kombinálhatjuk a szövegellenőrzéseket a tranzakciókkal, és a VuGen tranzakciót adhat át, ha a szövegellenőrzés sikeres, és sikertelen tranzakció, ha a szövegellenőrzés sikertelen.
ez az alábbiakban látható:
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);}
itt az ‘if utasítást’ használtuk a ‘SaveCount’ attribútummal. A’ WelcomeCount ‘ paraméter (amely elmenti a szöveg előfordulásainak számát) A tranzakció átadásának/meghiúsításának feltételeként szolgál. A tranzakciós függvények’ LR_PASS ‘és’ LR_FAIL ‘ attribútumai a tranzakciók explicit átadására, illetve meghiúsítására szolgálnak.
megjegyzés: itt két új funkciót használtunk: ‘atoi’ és ‘lr_eval_string’. Ezekről a funkciókról később fogunk beszélni.
néhány további információ a ‘web_reg_find’ függvény attribútumok kombinációjáról:
#1) Ha csak ‘Text’ attribútumot használunk –
példa: web_reg_find (“Text=Welcome”, LAST) –
a VuGen megkeresi a szöveget, de sikertelen keresés esetén nem sikerül a szkript.
#2) Ha csak a ‘Text’ és a ‘SaveCount’ attribútumokat használjuk –
példa: web_reg_find(“Text=Welcome”,”SaveCount=WelcomeCount”, Utolsó) – a VuGen megkeresi a szöveget, és elmenti az előfordulások számát (még akkor is, ha nulla) a megadott paraméterbe (nem sikertelen a szkript, ha a keresés sikertelen).
#3) Ha csak’ szöveg ‘és’ Fail ‘ attribútumokat használunk –
példa: web_reg_find(“Text=Welcome”,”Fail=NotFound”, LAST) – A VuGen megkeresi a szöveget, és nem sikerül a szkriptet, ha a szöveg megtalálható/Nem található.
szövegellenőrzés felvétel közben is beilleszthető a lebegő felvételi sávon található ‘Szövegellenőrzés beszúrása’ ikon segítségével. Ez ugyanazt a ‘web_reg_find’ függvényt illeszti be a szkriptbe.
de jobb, ha ezt a funkciót manuálisan illesztjük be, mivel jobban tudjuk irányítani elsősorban az attribútumokat.
világosan megértettük a szövegellenőrzést, most menjünk a képellenőrzéshez.
a Képellenőrzés egy adott kép válaszban való jelenlétének ellenőrzésére szolgál. a’ web_image_check ‘ funkció a kép ellenőrzéséhez használható. Ezt a funkciót a kérés után kell elhelyezni (amelynek válaszában a képet várjuk).
példa erre a funkcióra:
web_image_check("Image","Src=/WebTours/images/flights.gif",LAST)
ahol az első attribútum bármely értelmes név, a második attribútum (‘Src’) pedig a kép neve/link (lásd a Vugen súgót az attribútumok teljes listájának megszerzéséhez).
megjegyzések A VuGen szkriptben
a Vugen szkript megjegyzései felvétel közben és manuálisan is beírhatók a szkript rögzítése után.
felvétel közben kattintson a ‘megjegyzés beszúrása’ ikonra a lebegő felvételi sávon.
írja be a megjegyzést (mondja itt a ‘Bejelentkezés’ szót).
a felvétel után láthatjuk a megjegyzéseket a szkriptben az alábbiak szerint.
/* 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",
a Vugenben egyetlen sort meg lehet kommentálni úgy, hogy csak a ‘//’ sort helyezzük a sor elé, az alábbiak szerint:
// 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");
és több vonal is csatlakoztatható úgy, hogy a ‘/ * ‘- t az elején és a ‘* / ‘ – t a végén (az alábbiak szerint)
/* 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"); */
megjegyzés: a fenti példákban kommentáltuk a cookie funkciókat (web_add_cookie). A cookie-funkciókról később beszélünk ebben az oktatóanyagsorozatban.
jó gyakorlat, ha a felvétel során minden lépésnél megjegyzéseket illesztünk be, mert ez segít nekünk a szkriptben szereplő kérések összekapcsolásában az alkalmazás felhasználói műveleteivel.
Találkozási pont a Vugen szkriptben
ha van olyan forgatókönyvünk, ahol nagyobb számú felhasználó hajt végre egy műveletet egyidejűleg az alkalmazáson (például az eredmények ellenőrzése), és ha ugyanezt kell szimulálnunk a teljesítménytesztünkben, használhatunk egy ‘Találkozási pontot’.
a ‘Rendezvous point’ egy egyszerű függvény egy VuGen szkriptben, amely utasítja a load runnert (több felhasználóval végzett teszt során), hogy várjon a szkript egy meghatározott lépésénél, amíg az összes vuser (a szkript végrehajtása) erre a lépésre érkezik, hogy a későbbi kérés egyidejűleg végrehajtható legyen.
a Rendezvous függvény szintaxisa:
lr_rendezvous("MeaningfulName");
ez a funkció felvétel közben, valamint a szkript rögzítése után manuálisan is beilleszthető.
tegyük fel, hogy egyidejűleg terheljük a Fizetési lépést a Web Tours alkalmazásunkban. Az adott lépésben történő felvétel során (a fizetési adatok benyújtása előtt) kattintson a lebegő felvételi sávon található ‘Rendezvous beszúrása’ ikonra.
és adja meg a találkozási pont nevét (bármilyen értelmes név).
a felvétel után láthatjuk a rendezvous funkciót a szkriptben, mint ez.
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);
Most, amikor ezt a szkriptet több felhasználóval futtatjuk a vezérlőben, a szkriptet a Vusers önállóan hajtja végre, de a Vusers megvárja ezt a ‘Fizetési’ lépést, amíg az összes (vagy a Rendezvous policy-ban meghatározott Vusers bizonyos százaléka) eléri ezt a lépést, amely után ezt a lépést egyszerre hajtják végre.
többet fogunk látni a rendezvous házirendről (opciók) a vezérlő oktatóanyagában.
következtetés
eddig a korrelációt és a paraméterezést tárgyaltuk az előző oktatóanyagokban és tranzakciókban, szöveg/kép ellenőrzésekben, megjegyzésekben és találkozási pontokban ebben a bemutatóban a legfontosabb szkriptjavítási módszereket is lefedtük.
a következő oktatóanyagunkban további szkriptelési kihívásokat fogunk látni, valamint a kezelésük módját.
=> látogasson el ide a LoadRunner oktatóanyagok teljes sorozatához
előző bemutató / következő bemutató
Leave a Reply