Кореляція в LoadRunner з прикладом web_reg_save_param
⚡ Розумний підсумок
Кореляція в LoadRunner фіксує динамічне значення сервера, таке як ідентифікатор сеансу, і передає його в пізніші запити, щоб записаний скрипт VuGen успішно відтворювався, а не завершувався невдачею через застарілі дані.
Що таке кореляція?
Кореляція, як випливає з назви, – це механізм визначення зв'язку між двома змінними або сутностями. Словник визначає її як «статистичний зв'язок між двома або більше змінними, такий, що систематичні зміни іншої супроводжують систематичні зміни значення однієї змінної».
Примітка бренду: цей інструмент постачався як HP, а потім Micro Focus LoadRunner, і є зараз OpenText Професійна інженерія продуктивностіКожна функція кореляції нижче залишається незмінною, а постачальник вказує на генератор скриптів. ВуГен.
Навіщо нам кореляція?
Давайте розглянемо кореляцію з урахуванням наступного сценарію.
Уявіть, що ви записуєте сценарій за допомогою LoadRunner.
Зв'язок клієнт-сервер під час запису відбувається наступним чином, а діаграма підсумовує його:
- Під час запису клієнт надсилає запит на сервер для початку сеансу.
- Сервер отримує запит і призначає новий ідентифікатор сеансу ABC
- Клієнт зберігає ідентифікатор сеансу ABC у сценарії.
- Клієнт починає сеанс з ідентифікатором ABC та надсилає запит на сервер, щоб дозволити йому записувати
- Сервер розпізнає ID ABC і дозволяє клієнту записати сценарій
Тепер давайте розглянемо зв'язок клієнт-сервер під час відтворення, показаний після цих кроків:
- Під час відтворення клієнт надсилає запит на сервер для початку сеансу
- Сервер отримує запит і призначає новий ідентифікатор сеансу XYZ
- Клієнт починає сеанс із попередньо записаним ідентифікатором сеансу ABC та надсилає запит на сервер, щоб дозволити йому записувати
- Сервер не може ідентифікувати ідентифікатор ABC, оскільки він очікував виділеного ідентифікатора XYZ, і сеанс не вдається.
Нам потрібне рішення, яке може захоплювати та аналізувати динамічне значення, що надсилається під час виконання, і повертати це значення назад на сервер. Ось як виглядатиме зв'язок клієнт-сервер з цим рішенням, як показано на діаграмі нижче:
- Під час відтворення клієнт надсилає запит на сервер для початку сеансу
- Сервер отримує запит і призначає новий ідентифікатор сеансу ZZZ
- Клієнт аналізує цей новий ідентифікатор сеансу ZZZ із запиту.
- Клієнт надсилає запит на початок сесії з id ZZZ
- Сервер розпізнає ідентифікатор ZZZ і дозволяє клієнту відтворити сценарій
Це не що інше Співвідношення.
У короткому відео нижче показано ту саму проблему запису та відтворення.
Натисніть тут якщо відео недоступне
У випадку VuGen кореляція – це зв'язуючий зв'язок між відповіддю та будь-яким попереднім запитом.
Існують різні ситуації, коли запит базується на раніше отриманій відповіді від сервера, такій як ідентифікатор сеансу або дата й час сервера, які отримуються з сервера. Ці значення відрізняються щоразу, коли ви запускаєте програму або записуєте скрипт. Очевидно, що якщо виконання скрипта залежить від значення, повернутого сервером, це означає, що вам потрібно знайти механізм, за допомогою якого ви можете «зловити» відповідь сервера та приєднати її до тих запитів, які сервер очікує. Зазвичай це називається кореляцією в LoadRunner.
Простими словами, рішення за допомогою кореляції таке:
- Захоплення вихідного значення кроку
- Використовуйте отримане вище значення як вхідні дані для всіх наступних кроків
Кореляція класифікується на 2 категорії у VuGen/LoadRunner:
- Автоматична кореляція
- Ручна кореляція
Автоматична кореляція
LoadRunner надає механізм для легкого виконання кореляції в автоматичному режимі.
VuGen вимагатиме від вас запуску записаного скрипта принаймні двічі, щоб він міг внутрішньо порівняти різні значення у відповіді сервера.
Автоматичну кореляцію можна розділити на 3 категорії:
- Автоматичне визначення кореляції
- Кореляція на основі правил
- Співвіднесення всіх тверджень
| Назва правила | Коли використовувати |
| Автоматичне визначення кореляції | Виявлення та співвіднесення динамічних даних для серверів додатків, що підтримуються LoadRunner |
| На основі правил | Використовується під час роботи з непідтримуваним сервером програм, для якого відомий контекст. |
| Співвіднести все | Допомагає корелювати всі динамічні дані сліпим способом. |
Хоча автоматична кореляція здається простішою, вона може бути схильною до помилок і працює не більше ніж у 5% випадків. Завжди доцільно використовувати кореляцію вручну.
Щоб налаштувати автоматичну кореляцію під час запису, виконайте наведену нижче конфігурацію в налаштуваннях часу запису після запису сценарію.
Натисніть на Запис => Параметри запису (або натисніть Ctrl + F7), як показано в меню нижче,
Нижче відкриється вікно:
Клацніть Кореляція => Конфігурація – відкриється вікно нижче.
Тут вам потрібно позначити як перевірені всі програми (ASPNET) тощо, які використовуються у вашій предметній програмі. Праворуч ви можете побачити правила, які виявлятимуть можливих кандидатів на кореляцію, наприклад _VIEWSTATE. Ви також можете додати більше програм або спеціальних правил, натиснувши кнопку «Нове правило».
Ви також можете натиснути ПРАВИЛА, ви побачите, як показано нижче:
Щоб автоматична кореляція працювала, переконайтеся, що опція «Сканування правил» позначена як прапорець. Якщо ви натиснете «Автоматично співвідносити знайдені значення», VuGen не запропонує вам варіант вибору після того, як буде знайдено варіант кореляції, а просто співвіднесе їх.
Пізніше ми розберемося з API, який використовується для кореляції. Однак доцільно використовувати порівняння HTML замість порівняння тексту.
Вибравши будь-які правила, натисніть кнопку OK, щоб закрити вікна.
Натисніть кнопку на панелі інструментів, показану тут з меню, і VuGen перегенерує скрипт (без необхідності запису) з новими конфігураціями. VuGen автоматично додасть необхідний фрагмент коду для обробки кореляції. Ми розглянемо приклад детальніше в розділі «Ручна кореляція».
Зауважте, якщо ви виконуєте кореляцію вручну або використовуєте автоматичну кореляцію, фрагмент коду міститиме точно такий же синтаксис і функцію.
Кроки для автоматичної кореляції сценарію:
- Записати сценарій
- Відтворення сценарію
- Визначте значення, які потрібно співвіднести
- Виберіть значення та натисніть кнопку автокореляції
- Перевірте сценарій, запустивши ще раз. Успішний пробіг означає успішну кореляцію.
Порада:
- Кореляція допомагає запускати ваш сценарій з різними значеннями
- Кореляція також зменшує розмір вашого сценарію
Ручна кореляція
Ручна кореляція — це написання коду безпосередньо у ваш сценарій, щоб задовольнити значення, що постійно змінюються. Ми можемо розділити це на наступні кроки:
- Визначте значення для захоплення
- Знайти праву та ліву межі тексту значення для захоплення (WEB)
- Знайдіть, які входження меж тексту слід використовувати
- Додайте функцію web_reg_save_param до сценарію над фрагментом коду, який запитує сторінку зі значенням для захоплення
- Додайте назву параметра, ліву межу, праву межу та входження до функції
- Параметризуйте динамічне значення в сценарії кожного разу, коли воно виникає
- Перевірте правильність виконання
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);
Code зазначає: Обидва фрагменти виглядають точно так, як опубліковано. Зверніть увагу на порядкові номери: Ord=l та RelFrameId=l використовуйте малу літеру L, а VuGen очікує цифру 1.
Кореляцію вручну можна виконати за допомогою VUser Comparison. Кроки в методі кореляції VUser Comparison можна розділити так:
- Визначте динамічні значення, які потрібно співвіднести
- Знайдіть відповідь сервера, що містить значення Dynamic
- Захоплення динамічного значення в параметрі
- Замініть кожне входження динамічного значення параметром
- Підтвердити зміни
Розуміння функції 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 пригощають web_reg_save_param_ex як наступник початкової функції, та web_reg_save_param_regexp як вибір, коли самі межі змінюються. Початковий приклад все ще працює.
Хоча тут наведено короткий вступ, для детального розуміння функцій та їх параметрів відкрийте 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, як межа використовуються всі символи з початку даних. Параметри межі чутливі до регістру. Щоб додатково налаштувати текст пошуку, використовуйте один або кілька текстових прапорців. |
| НЕ ЗНАЙДЕНО | Необов'язково, за замовчуванням «помилка» | Обробка ситуації, коли межу не знайдено та згенеровано порожній рядок. «Не знайдено=помилка» викликає помилку. «Не знайдено=попередження» («Не знайдено=порожньо» у попередніх версіях) натомість встановлює параметр count на 0 та продовжує роботу, що ідеально підходить, коли потрібно перевірити, чи було знайдено рядок, не збиваючи скрипт. Якщо ввімкнено «Продовжити при помилці», скрипт продовжує роботу навіть за умови «помилки», але розширений журнал записує це. |
| ORD | Необов'язково, за замовчуванням 1 | Вказує порядкову позицію або екземпляр збігу. Якщо вказати «Усі», значення параметрів зберігаються в масиві. Використання Instance замість ORD підтримується для зворотної сумісності, але є застарілим. |
| RB | Вимагається | Права межа параметра або динамічних даних. Якщо не вказати значення RB, як межа використовуються всі символи до кінця даних. Параметри меж чутливі до регістру. Щоб додатково налаштувати текст пошуку, використовуйте один або кілька текстових прапорців. |
| RelFrameID | опціональний | Рівень ієрархії HTML-сторінки відносно запитуваної URLМожливі значення — ALL або число. RelFrameID не підтримується у скриптах рівня графічного інтерфейсу. |
| SaveLen | Необов'язково, за замовчуванням -1 | Довжина підрядка знайденого значення, починаючи з заданого зміщення, для збереження в параметрі. За замовчуванням зберігається в кінець рядка. |
| SaveOffset | Необов'язково, за замовчуванням 0 | Зсув підрядка знайденого значення, який потрібно зберегти в параметрі. Значення зсуву має бути невід'ємним. |
| Пошук | Необов'язково, за замовчуванням ВСІ | Область пошуку — де шукати розділені дані. Можливі значення: Headers (шукати лише заголовки), Body (шукати лише дані в тілі, без заголовків), No resource (шукати лише в HTML-телі, виключаючи всі заголовки та ресурси) або ALL (шукати в тілі, заголовках та ресурсах). |
Після того, як скрипт відтвориться коректно, додайте параметризація, транзакції та налаштування часу виконання, запустіть його з контролер, і прочитайте результат у Аналіз як частина ширшого Тестування продуктивності та Тестування навантаження.







