Пример за корелация в LoadRunner с Web_Reg_Save_Param

Какво е корелация?

Корелацията, както подсказва името, е механизъм за определяне на връзка между две променливи или обекти. Речник го определя като „статистическа връзка между две или повече променливи, така че систематичните промени в другата съпътстват систематични промени в стойността на една променлива“.

Защо се нуждаем от корелация?

Нека разберем връзката със следния сценарий.

Да приемем, че записвате скрипт с помощта на LoadRunner.

Комуникация клиент-сървър

  1. По време на запис клиентът изпраща заявка до сървъра за стартиране на сесия
  2. Сървърът получава заявката и разпределя нов идентификатор на сесия ABC
  3. Клиентът съхранява идентификатора на сесията ABC в скрипта.
  4. Клиентът започва сесията с ID ABC и изпраща заявка до сървър, за да му позволи да записва
  5. Сървърът разпознава ID ABC и позволява на клиента да запише скрипта

Корелация по време на запис

  1. Сега нека проучим комуникацията клиент-сървър по време на повторение
  2. По време на повторение клиентът изпраща заявка до сървъра за стартиране на сесия
  3. Сървърът получава заявката и разпределя нов идентификатор на сесия XYZ
  4. Клиент стартира сесията с предварително записан идентификатор на сесия ABC и изпраща заявка до сървъра, за да му позволи да записва
  5. Сървърът не може да идентифицира ID ABC, тъй като очаква ID XYZ, който е разпределил, и сесията е неуспешна.

Корелация при повторение

Имаме нужда от решение, което да улавя анализира динамичната стойност, изпратена по време на изпълнение, и да връща тази стойност обратно на сървъра. Ето как ще изглежда комуникацията клиент-сървър с това решение

  1. По време на повторение клиентът изпраща заявка до сървъра за стартиране на сесия
  2. Сървърът получава заявката и разпределя нов идентификатор на сесия ZZZ
  3. Клиент анализира този нов идентификатор на сесия ZZZ от заявката.
  4. Клиент изпраща заявка за стартиране на сесия с id ZZZ
  5. Сървърът разпознава ID ZZZ и позволява на клиента да възпроизведе отново скрипта

Имаме нужда от корелация

Това не е нищо друго освен корелация.

Кликнете тук ако видеото не е достъпно

В случай на VUGen, корелацията е обвързваща връзка между отговор и всяка предходна заявка.

Има различни ситуации, когато заявка се основава на предварително получен отговор от сървъра, като например идентификатор на сесия, дата/час на сървъра, които се извличат от сървъра. Тези стойности са различни всеки път, когато стартирате приложение или запишете скрипт. Очевидно, ако изпълнението на скрипта зависи от стойност, върната от сървъра, това означава, че трябва да намерите механизъм, където можете да „хванете“ отговора на сървъра и да го прикачите към онези заявки, които сървърът очаква. Това обикновено се нарича корелация в LoadRunner.

С прости думи, решението чрез използване на корелация е:

  1. Улавяне на изходна стойност от стъпка
  2. Използвайте горната уловена стойност, за да служи като вход за всички следващи стъпки

Корелацията е класифицирана в 2 категории във VUGen/LoadRunner:

  • Автоматична корелация
  • Ръчна корелация

Автоматична корелация

LoadRunner предоставя механизъм за лесно извършване на корелация по автоматичен начин.

VUGen ще изисква от вас да стартирате записан скрипт поне два пъти, за да може вътрешно да сравнява вариращите стойности в отговора на сървъра.

Автоматичната корелация може да се класифицира в 3 категории:

  • Автоматично откриване на корелация
  • Базирана на правила корелация
  • Съпоставяне на всички твърдения
Име на правило Кога да използвате
Автоматично откриване на корелация Откриване и корелиране на динамични данни за сървъри на приложения, поддържани от HP LoadRunner
Базиран на правила Използва се при работа с неподдържан сървър на приложения, за който контекстът е известен.
Корелирайте всички Помага за корелиране на всички динамични данни по сляп начин.

Въпреки че автоматичната корелация изглежда по-проста, тя може да бъде податлива на грешки и работи в не повече от 5% от случаите. Винаги е препоръчително да използвате ръчна корелация.

За да конфигурирате автоматична корелация по време на запис, изпълнете конфигурацията по-долу в Настройка на времето за запис, след като скриптът е записан.

Кликнете върху Запис => Опции за запис (или щракнете върху Ctrl +F7),

Автоматична корелация

Следният прозорец ще се отвори:

Автоматична корелация

Кликнете върху Корелация =>Конфигурация – ще се отвори прозорецът по-долу.

Автоматична корелация

Тук трябва да маркирате като проверени всички приложения (ASPNET) и т.н., които се използват във вашето предметно приложение. От дясната страна можете да видите правилата, които ще открият възможните кандидати за корелация, напр. _VIEWSTATE. Можете също така да добавите още приложения или персонализирани правила, като щракнете върху бутона Ново правило.

Можете също да щракнете върху ПРАВИЛА, ще видите следното:

Автоматична корелация

За да работи автоматичната корелация, трябва да се уверите, че сканирането на правила е маркирано като отметнато. Ако щракнете върху намерените автоматично корелирани стойности, VUGen няма да ви подкани с избора, след като бъде намерен кандидат за корелация, вместо това просто ще ги корелира.

По-късно ще разберем API, използван за корелация. Въпреки това е препоръчително да използвате HTML сравнение вместо текстово сравнение.

След като изберете правила, щракнете върху бутона OK, за да затворите прозорците.

Кликнете върху Автоматична корелацияот менюто и VUGen ще регенерира скрипт (без да се налага да записва) с нови конфигурации. VUGen автоматично ще добави необходимата част от кода за обработка на корелацията. Ще разгледаме извадката по-подробно в Ръчна корелация.

Моля, имайте предвид, че ако извършвате корелация ръчно или използвате автоматична корелация, частта от код ще съдържа абсолютно същия синтаксис и функция.

Стъпки за автоматично корелиране на скрипт:

  1. Запишете сценарий
  2. Възпроизвеждане на скрипт
  3. Идентифицирайте стойностите, които трябва да бъдат съпоставени
  4. Изберете стойностите и щракнете върху бутона за автоматично съпоставяне
  5. Проверете скрипта, като стартирате отново. Успешното изпълнение означава успешна корелация.

Съвет:

  • Корелацията помага да стартирате вашия скрипт с различни стойности
  • Корелацията също намалява размера на вашия скрипт

Ръчна корелация

Ръчната корелация е за писане на код директно във вашия скрипт, за да се погрижи за постоянно променящите се стойности. Можем да го разделим на следните стъпки:

  1. Определете стойността за улавяне
  2. Намерете дясната и лявата текстова граница на стойността за заснемане (WEB)
  3. Намерете кое появяване на текстовите граници трябва да се използва
  4. Добавете функция web_reg_save_param към скрипта над частта от кода, която изисква страницата със стойността за заснемане
  5. Добавете име на параметър, лява граница, дясна граница и срещане към функцията
  6. Параметризирайте динамичната стойност в скрипта всеки път, когато се появи
  7. Проверете правилното изпълнение
web_reg_save_param (" OracleAppJSESSIONID3",
	"LB/IC=JSESSIONID=",
	"RB/IC=;",
	"Ord=l",
	"Search=headers",
	"RelFrameId=l",
	LAST);

web_reg_save_param("Siebel_Analytic_ViewState2",
	"LB/IC=ViewState\" value=\"",
	"RB/IC=\"",
	"Ord=1",
	"Search=Body",
	"RelFrameId=l",
	LAST);

Ръчната корелация може да се направи чрез VUser Comparison. Стъпките в метода за сравнение на VUser за корелация могат да бъдат разделени, както е показано по-долу:

  1. Идентифицирайте динамични стойности, които трябва да бъдат съпоставени
  2. Намерете отговор на сървъра, съдържащ динамичната стойност
  3. Улавяне на динамичната стойност в параметър
  4. Заменете всяко появяване на динамичната стойност с параметъра
  5. Проверете промените

Разбиране на функцията Web_reg_save_param

VUGen предоставя множество функции или API за корелиране на кандидати, включително:

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

Въпреки че тук е предоставено кратко въведение, за подробно разбиране на функциите и техните параметри, отворете VUGen, напишете функция (или използвайте Steps Toolbox), преместете курсора върху функцията и щракнете върху F1 – запознайте се с помощта на VUGen и направете навик. Ще трябва да се справяте много с това, когато работите в индустрията.

Ето и подробностите за функцията:

web_reg_save_param(Име на параметър, лява граница, дясна граница)

Списък с атрибути

Конвертиране: Възможните стойности са:

HTML_TO_URL: конвертирайте HTML-кодирани данни във формат на URL-кодирани данни

HTML_TO_TEXT: конвертиране на HTML-кодирани данни във формат на обикновен текст; този атрибут не е задължителен.

Игнорирайте пренасочванията: Ако е посочено „Игнориране на пренасочванията=Да“ и отговорът на сървъра е информация за пренасочване (HTTP код на състояние 300-303, 307), отговорът не се търси. Вместо това, след получаване на отговор за пренасочване, GET заявката се изпраща до пренасоченото местоположение и търсенето се извършва на отговора от това местоположение.

Този атрибут не е задължителен. По подразбиране е „Игнориране на пренасочванията=Не“.

LB: Лявата граница на параметъра или динамичните данни. Ако не посочите LB стойност, тя използва всички знаци от началото на данните като граница. Граничните параметри са чувствителни към малки и големи букви. За да персонализирате допълнително текста за търсене, използвайте един или повече текстови флагове. Този атрибут е задължителен. Вижте раздела Гранични аргументи.

НЕНАМЕРЕНО: Опцията за обработка, когато граница не е намерена и се генерира празен низ.

„Не е намерено=грешка“, стойността по подразбиране, предизвиква възникване на грешка, когато граница не бъде намерена.

„Не е намерено=предупреждение“ („Не е намерено=празно“ в по-ранни версии), не издава грешка. Ако границата не бъде намерена, той задава броя на параметъра на 0 и продължава да изпълнява скрипта. Опцията „предупреждение“ е идеална, ако искате да видите дали низът е намерен, но не искате скриптът да се провали.

Забележка: Ако Продължаване при грешка е активирано за скрипта, тогава дори когато NOTFOUND е зададено на „грешка“, скриптът продължава, когато границата не бъде намерена, но се записва съобщение за грешка в разширения лог файл.

Този атрибут също не е задължителен.

РСР: Показва поредната позиция или екземпляр на съвпадението. Екземплярът по подразбиране е 1. Ако посочите „Всички“, той записва стойностите на параметрите в масив. Този атрибут не е задължителен.

Забележка: Използването на Instance вместо ORD се поддържа за обратна съвместимост, но е отхвърлено.

RB: дясната граница на параметъра или динамичните данни. Ако не посочите RB стойност, тя използва всички знаци до края на данните като граница. Граничните параметри са чувствителни към малки и големи букви. За да персонализирате допълнително текста за търсене, използвайте един или повече текстови флагове. Този атрибут е задължителен. Вижте раздела Гранични аргументи.

RelFrameID: Йерархичното ниво на HTML страницата спрямо искания URL адрес. Възможните стойности са ВСИЧКИ или число. Щракнете върху атрибут RelFrameID за подробно описание. Този атрибут не е задължителен.

Забележка: RelFrameID не се поддържа в скриптове на ниво GUI.

SaveLen: Дължината на подниз от намерената стойност, от посоченото отместване, за запазване в параметъра. Този атрибут не е задължителен. По подразбиране е -1, което показва да се запише до края на низа.

SaveOffset: Отместването на подниз от намерената стойност, за да се запише в параметъра. Стойността на отместването трябва да е неотрицателна. По подразбиране е 0. Този атрибут не е задължителен.

Търсене: Обхватът на търсенето - къде да се търсят разграничените данни. Възможните стойности са Headers (търсене само в заглавките), Body (търсене само в основни данни, не в заглавки), No resource (търсене само в HTML тялото, без всички заглавки и ресурси) или ALL (основен текст на търсенето, заглавки и ресурси). Стойността по подразбиране е ВСИЧКИ. Този атрибут не е задължителен, но обикновено се предпочита.

Обобщете тази публикация с: