loadrunner transactions
най-добрата програма за клониране на твърд диск
Въведение в основните подобрения на VuGen Script:
Проучихме Корелация в LoadRunner подробно в нашия предишен урок в това Пълни уроци за обучение на LoadRunner .
В последните два урока работихме по обработка на данни в VuGen скрипт (Корелация и параметризация).
В този урок за LoadRunner ще видим другите основни подобрения (изброени по-долу), които са необходими за нашия скрипт:
- Транзакции - За измерване на скоростта и времето за реакция на действията на потребителя.
- Проверки на текст и изображения - За да се гарантира, че отговорът е върнат правилен.
- Коментари
- Точки за среща - Да накарате Vusers да изпълняват задача едновременно.
=> Щракнете тук за пълна серия уроци по LoadRunner
Какво ще научите:
- Транзакции във VuGen Script
- Проверки на текст и изображения в VuGen Script
- Коментари в VuGen Script
- Точка на срещата във VuGen Script
- Заключение
- Препоръчително четене
Транзакции във VuGen Script
Самото повторение на скриптове за изпълнение само ще натовари приложението, но не измерва нищо. Крайната цел на всеки скрипт за изпълнение е да инжектира натоварване и да измери скоростта и времето за реакция на потребителските действия върху приложението.
Например ,колко време е отнело търсенето на продукт, когато 100 потребители са в приложението, колко отчета се генерират за време от примерно 15 минути и т.н. За да ги измерим, трябва да вмъкнем транзакции в VuGen скрипт (след теста можем да видим скоростта и времето за реакция на тези транзакции в резултатите).
„Транзакцията е измерване от край до край на действие на потребител (или група действия на потребител) върху приложение“.
Транзакциите могат да се вмъкват по два начина:
- По време на запис
- След запис (където ръчно вмъкваме функциите за транзакции в скрипта)
Нека вмъкнем транзакция за потребителското действие „Вход“ в нашето приложение „Web Tours“.
В първия ни урок видяхме как да записваме потребителски действия. Докато записвате, след като въведете „Потребителско име“ и „Парола“ на страницата за вход, точно преди да щракнете върху бутона „Вход“, кликнете върху иконата „Вмъкване на стартовата транзакция“ на плаващата лента за запис.
VuGen подканва за име на транзакция. Въведете всяко смислено име. Тук сме дали „Вход“, но е добра практика да следвате конвенция като тази (номер на транзакция, име на сценарий, действие на потребителя и т.н.): 01_WebTours_Launch 02_WebTours_Login (и т.н.).
Сега кликнете върху Бутон за вход.
След като стигнем до началната страница (основната страница), кликнете върху иконата ‘Insert End Transaction’ на плаващата лента за запис.
Изберете транзакцията, която искаме да приключим (транзакция „Вход“ тук).
Спрете записа и вижте генерирания скрипт. Можем да видим, че функциите за начало и край на транзакция се вмъкват в скрипта (маркирани в жълто) и всички заявки, съответстващи на действието на потребителя ‘Login’, са затворени между тези функции.
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 );
Синтаксисът на функциите „начало на транзакция“ и „край на транзакция“ е доста прост. И двете имат име на транзакция като първи аргумент. Функцията „крайна транзакция“ има още един атрибут - „LR_AUTO“, това инструктира VuGen да предаде или провали транзакция автоматично (вместо ние изрично да посочим условие за преминаване или неуспех).
Ако бегачът на натоварване срещне някакви грешки при изпълнение на заявки в рамките на транзакция, тогава тя се проваля, в противен случай тя преминава транзакцията.
Проверки на текст и изображения в VuGen Script
Текстовите проверки се използват за проверка дали отговорът, върнат за заявката, е верен или не. В урока „Корелация“ видяхме, че понякога VuGen може да не показва никаква грешка, но върнатият отговор може да не е правилният. Така че, за да сме сигурни, че отговорът е правилен, използваме текстови проверки.
Например, когато влезем в приложението web Tours, отиваме на началната страница. Нека проверим в скрипта, че получаваме правилния отговор (начална страница) или не, когато влезем.
За целта трябва да идентифицираме някакъв текст в отговора (началната страница тук), който може да каже дали отговорът е верен или не. „Добре дошли“ е един такъв текст.
За проверка на текста използваме „ web_reg_find ’ функция непосредствено преди заявката.
Синтаксисът на тази функция е:
web_reg_find(“Text=”,”SaveCount=”,”Fail=”,LAST);
Тук имаме три атрибута (вижте помощ за VuGen, за да получите пълния списък с атрибути):
‘Текст’ - Използва се, за да се посочи какъв текст да се търси.
‘SaveCount’ - Запазва броя на повторенията на посочения текст в параметър, който ние посочваме.
‘Fail’ - приема една от двете стойности -’Found ’и‘ NotFound ’и съответно проваля скрипта.
Така че функцията web_reg_find („Text = Welcome“, „SaveCount = WelcomeCount“, „Fail = NotFound“, LAST) търси текста „Добре дошли“ в отговора и запазва броя на появите в параметъра „WelcomeCount“ (и проваля скрипта, ако текстът не е намерен).
Скриптът изглежда така:
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 );
Сега, ако повторим скрипта, ще получим грешка за заявката за влизане (вижте в дневника на релето), защото VuGen не намери текста, който сме посочили, в отговора. Това е така, защото не получихме правилната начална страница (както е показано в „преглед на времето за изпълнение“).
Сега нека коригираме нашия скрипт (корелираме userSession) и повторим скрипта отново.
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 );
Този път не виждаме никаква грешка в дневника за повторно възпроизвеждане, но виждаме съобщение, че нашата проверка на текста е била успешна. Така че този път получихме правилния отговор (тъй като той се потвърждава от „прегледа на времето за изпълнение“).
Можем да комбинираме текстови проверки с транзакции и да накараме VuGen да премине транзакция, ако текстовата проверка е успешна и да провалим транзакция, ако текстовата проверка е неуспешна.
Това е показано по-долу:
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); }
Използвахме тук „if statement“ с атрибут „SaveCount“. Параметърът ‘WelcomeCount’ (който запазва броя на повторенията на текста) се използва като условие за преминаване / неуспех на транзакцията. Атрибутите „LR_PASS“ и „LR_FAIL“ на функциите на транзакциите се използват за изрично преминаване и неуспех (съответно) на транзакция.
Забележка: Използвахме две нови функции тук - „Atoi“ и ‘Lr_eval_string’ . За тези функции ще говорим по-късно.
Още информация за комбинацията от атрибутите на функцията ‘web_reg_find’:
# 1) Ако се използва само атрибут ‘Text’ -
Пример: web_reg_find („Текст = Добре дошли“, ПОСЛЕДНИ) -
VuGen търси текста и проваля скрипта, ако търсенето е неуспешно.
# 2) Ако се използват само атрибутите „Text“ и „SaveCount“ -
Пример: web_reg_find („Text = Welcome“, „SaveCount = WelcomeCount“, LAST) - VuGen търси текста и запазва броя на появите (дори ако е нула) в посочения параметър (не проваля скрипта, ако търсенето е неуспешно ).
# 3) Ако се използват само атрибутите „Text“ и „Fail“ -
Пример: web_reg_find („Text = Welcome“, „Fail = NotFound“, LAST) - VuGen търси текста и проваля скрипта, ако текстът е намерен / не е намерен.
Текстови проверки могат да се вмъкват и по време на запис, като се използва иконата „Вмъкване на проверка на текст“ на плаващата лента за запис. Това ще вмъкне същото ‘Web_reg_find’ функция в скрипта.
Но е по-добре да вмъкнем тази функция ръчно, тъй като ще имаме по-добър контрол главно върху атрибутите.
Разбрахме ясно проверката на текста, сега да преминем към проверката на изображенията.
Проверката на изображението се използва за проверка на наличието на определено изображение в отговор. ‘ web_image_check ’ функцията се използва за проверка на изображението. Тази функция трябва да бъде поставена след заявката (в отговор на която очакваме изображението).
Пример за тази функция:
web_image_check(“Image”,”Src=/WebTours/images/flights.gif”,LAST)
Където първият атрибут е всяко смислено име, а вторият атрибут (‘Src’) е името / връзката на изображението (вижте помощ за VuGen, за да получите пълния списък с атрибути).
Коментари в VuGen Script
Коментари в VuGen скрипт могат да се въвеждат по време на запис, а също и ръчно след записването на скрипта.
По време на запис щракнете върху ‘Вмъкване на коментар’ на плаващата лента за запис.
Въведете коментара (кажете ‘Вход’ тук).
След записа можем да видим коментарите в скрипта, както е показано по-долу.
/* 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',
Във VuGen може да се коментира един ред, като просто поставите ‘//’ пред реда, както е показано по-долу:
// 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');
И множество линии могат да бъдат свързани, като поставите „/ *“ в началото и „* /“ в края (както е показано по-долу)
/* 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'); */
Забележка: В примерите, показани по-горе, коментирахме функциите на бисквитките ( web_add_cookie ). Ще говорим за функциите на бисквитките по-късно в тази серия с уроци.
Добра практика е да вмъквате коментари на всяка стъпка по време на записа, защото това ще ни помогне да свържем заявките в скрипта с действията на потребителя върху приложението.
Точка на срещата във VuGen Script
Ако имаме сценарий, при който по-голям брой потребители извършват едновременно действие върху приложението (като проверка на резултатите) и ако трябва да симулираме същото в нашия тест за ефективност, можем да използваме „Точка на срещата“.
„Точка на среща“ е единична и проста функция в VuGen скрипт, която инструктира бегача на зареждане (по време на тест с множество потребители) да изчака на определена стъпка в скрипта, докато всички Vusers (изпълняващи скрипта) стигнат до тази стъпка, така че че последващата заявка може да бъде изпълнена едновременно.
Синтаксисът на функцията Rendezvous е:
lr_rendezvous(“MeaningfulName”);
Тази функция може да бъде вмъкната по време на запис, а също и ръчно след запис на скрипта.
Да предположим, че искаме да натоварим едновременно стъпката на плащане в нашето приложение „Web Tours“. По време на запис в тази стъпка (преди да изпратите данните за плащане), кликнете върху иконата ‘Insert Rendezvous’ на плаващата лента за запис.
И въведете името на точката за среща (всяко значимо име).
След записа можем да видим функцията за рандеву в скрипта по този начин.
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 );
Сега, когато стартираме този скрипт с множество потребители в Controller, скриптът ще бъде изпълнен от Vusers независимо, но Vusers ще изчака на тази стъпка „Плащане“, докато всички (или някакъв процент от Vusers, дефинирани в правилата за Rendezvous) достигнат тази стъпка, след която те изпълняват тази стъпка едновременно.
Ще видим повече за политиката за рандеву (опции) в урока за контролера.
Заключение
Досега обсъждахме корелацията и параметризацията в предишните уроци и транзакции, проверки на текст / изображения, коментари и точки за среща в този урок, ние също разгледахме най-важните методи за подобряване на скрипта.
В следващия урок ще видим още някои предизвикателства за скриптове заедно с начините за справяне с тях.
=> Посетете тук за пълна серия уроци по LoadRunner
Препоръчително четене
- Тестване на натоварване с уроци за HP LoadRunner
- Въведение в Micro Focus LoadRunner - Тестване на натоварване с LoadRunner Урок # 1
- Корелация - Тестване на натоварване с LoadRunner
- LoadRunner урок за начинаещи (безплатен 8-дневен задълбочен курс)
- Анализ на резултатите от теста и отчети - Тестване на товара с LoadRunner
- Тестване на производителността на уеб услуги с помощта на LoadRunner VuGen Scripting
- Разлика между LoadRunner и Performance Center
- Как да настроите LoadRunner VuGen Script файлове и настройки по време на работа