Кореляція в LoadRunner із прикладом Web_Reg_Save_Param
Що таке кореляція?
Кореляція, як випливає з назви, є механізмом визначення зв’язку між двома змінними або сутностями. Словник визначає це як «статистичне співвідношення між двома або більше змінними, що систематичні зміни в іншій супроводжують систематичні зміни в значенні однієї змінної».
Навіщо нам кореляція?
Давайте розберемося в співвідношенні з наступним сценарієм.
Уявіть, що ви записуєте сценарій за допомогою LoadRunner.
Зв'язок клієнт-сервер
- Під час запису клієнт надсилає запит на сервер для початку сеансу
- Сервер отримує запит і призначає новий ідентифікатор сеансу ABC
- Клієнт зберігає ідентифікатор сеансу ABC у сценарії.
- Клієнт починає сеанс з ідентифікатором ABC і надсилає запит на сервер, щоб дозволити йому запис
- Сервер розпізнає ID ABC і дозволяє клієнту записати сценарій
- Тепер давайте вивчимо зв’язок клієнт-сервер під час відтворення
- Під час відтворення клієнт надсилає запит на сервер для початку сеансу
- Сервер отримує запит і призначає новий ідентифікатор сеансу XYZ
- Клієнт починає сеанс із попередньо записаним ідентифікатором сеансу ABC і надсилає запит на сервер, щоб дозволити запис
- Сервер не може ідентифікувати ідентифікатор ABC, оскільки він очікував виділеного ідентифікатора XYZ, і сеанс не вдається.
Нам потрібне рішення, яке б захоплювало синтаксичний аналіз динамічного значення, надісланого під час виконання, і повертало це значення назад на сервер. Ось як буде виглядати зв’язок клієнт-сервер із цим рішенням
- Під час відтворення клієнт надсилає запит на сервер для початку сеансу
- Сервер отримує запит і призначає новий ідентифікатор сеансу ZZZ
- Клієнт аналізує цей новий ідентифікатор сеансу ZZZ із запиту.
- Клієнт надсилає запит на початок сесії з id ZZZ
- Сервер розпізнає ідентифікатор ZZZ і дозволяє клієнту відтворити сценарій
Це не що інше Співвідношення.
Натисніть тут якщо відео недоступне
У випадку VUGen кореляція — це зв’язковий зв’язок між відповіддю та будь-яким попереднім запитом.
Існують різні ситуації, коли запит базується на попередньо отриманій відповіді від сервера, як-от ідентифікатор сеансу, дата/час сервера, отримані з сервера. Ці значення відрізняються кожного разу, коли ви запускаєте програму або записуєте сценарій. Очевидно, що якщо виконання сценарію залежить від значення, яке повертає сервер, це означає, що вам потрібно знайти механізм, за допомогою якого ви можете «зловити» відповідь сервера та прикріпити до тих запитів, які очікує сервер. У LoadRunner це зазвичай називається кореляцією.
Простими словами, рішення за допомогою кореляції таке:
- Захоплення вихідного значення кроку
- Використовуйте отримане вище значення як вхідні дані для всіх наступних кроків
Кореляція класифікується на 2 категорії у VUGen/LoadRunner:
- Автоматична кореляція
- Ручна кореляція
Автоматична кореляція
LoadRunner надає механізм для легкого виконання кореляції в автоматичному режимі.
VUGen вимагатиме від вас запустити записаний сценарій принаймні два рази, щоб він міг внутрішньо порівняти різні значення у відповіді сервера.
Автоматичну кореляцію можна розділити на 3 категорії:
- Автоматичне визначення кореляції
- Кореляція на основі правил
- Співвіднесення всіх тверджень
Назва правила | Коли використовувати |
---|---|
Автоматичне визначення кореляції | Виявлення та кореляція динамічних даних для серверів додатків, які підтримуються HP 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);
Кореляцію вручну можна виконати за допомогою VUser Comparison. Кроки в методі кореляції VUser Comparison можна розділити так:
- Визначте динамічні значення, які потрібно співвіднести
- Знайдіть відповідь сервера, що містить динамічне значення
- Захоплення динамічного значення в параметрі
- Замініть кожне входження динамічного значення параметром
- Підтвердити зміни
Розуміння функції 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), наведіть курсор на функцію та натисніть F1 – ознайомтеся з довідкою VUGen і створіть звичка. Вам доведеться багато з цим стикатися під час роботи в промисловості.
Ось ми з деталями функції:
web_reg_save_param(Назва параметра, Ліва межа, Права межа)
Список атрибутів
Перетворити: Можливі значення:
HTML_TO_URL: конвертувати дані у кодуванні HTML у формат даних у кодуванні URL
HTML_TO_TEXT: конвертувати дані, закодовані в HTML, у формат звичайного тексту; цей атрибут необов'язковий.
Ігнорувати переспрямування: якщо вказано «Ignore Redirections=Yes» і відповідь сервера є інформацією про перенаправлення (код статусу HTTP 300-303, 307), відповідь не шукається. Замість цього, після отримання відповіді на перенаправлення, запит GET надсилається до переспрямованого розташування, і пошук виконується за відповіддю з цього розташування.
Цей атрибут необов'язковий. За умовчанням встановлено «Ігнорувати перенаправлення=Ні».
ФУНТ: Ліва межа параметра або динамічних даних. Якщо ви не вкажете значення LB, він використовує всі символи з початку даних як межу. Граничні параметри чутливі до регістру. Щоб додатково налаштувати текст пошуку, використовуйте один або кілька текстових прапорців. Цей атрибут є обов'язковим. Див. розділ Граничні аргументи.
НЕ ЗНАЙДЕНО: Параметр обробки, коли межа не знайдена та генерується порожній рядок.
«Не знайдено=помилка», значення за замовчуванням, викликає повідомлення про помилку, коли межа не знайдена.
«Не знайдено=попередження» («Не знайдено=порожньо» у попередніх версіях), не видає помилку. Якщо межа не знайдена, він встановлює кількість параметрів на 0 і продовжує виконання сценарію. Параметр «попередження» ідеально підходить, якщо ви хочете побачити, чи знайдено рядок, але ви не хочете, щоб сценарій стався невдало.
Примітка:: Якщо для сценарію ввімкнуто функцію «Продовжити при помилці», навіть якщо для параметра NOTFOUND встановлено значення «помилка», сценарій продовжує працювати, якщо межу не знайдено, але повідомлення про помилку записується в розширений файл журналу.
Цей атрибут також необов’язковий.
ORD: вказує на порядкову позицію або екземпляр збігу. Стандартним екземпляром є 1. Якщо вказати «Усі», значення параметрів зберігаються в масиві. Цей атрибут необов'язковий.
Примітка. Використання Instance замість ORD підтримується для зворотної сумісності, але не підтримується.
RB: права межа параметра або динамічних даних. Якщо ви не вкажете значення RB, усі символи до кінця даних використовуватимуться як межі. Граничні параметри чутливі до регістру. Щоб додатково налаштувати текст пошуку, використовуйте один або кілька текстових прапорців. Цей атрибут є обов'язковим. Див. розділ Граничні аргументи.
RelFrameID: Рівень ієрархії сторінки HTML відносно запитуваної URL-адреси. Можливими значеннями є ВСІ або число. Натисніть RelFrameID Attribute, щоб отримати детальний опис. Цей атрибут необов'язковий.
Примітка: RelFrameID не підтримується в сценаріях рівня GUI.
SaveLen: Довжина підрядка знайденого значення від указаного зсуву, який потрібно зберегти в параметрі. Цей атрибут необов'язковий. Типовим значенням є -1, що вказує на збереження до кінця рядка.
SaveOffset: Зміщення підрядка знайденого значення, яке потрібно зберегти в параметрі. Значення зміщення має бути невід’ємним. За замовчуванням 0. Цей атрибут необов’язковий.
Пошук: Область пошуку – де шукати дані з роздільниками. Можливі значення: Headers (шукати лише в заголовках), Body (шукати лише в основних даних, а не в заголовках), No resource (шукати лише в тілі HTML, за винятком усіх заголовків і ресурсів) або ALL (тело пошуку, заголовки та ресурси). Значення за замовчуванням - ALL. Цей атрибут є необов’язковим, але зазвичай бажаним.