Учебники

5) корреляция

Что такое корреляция?

Корреляция, как следует из названия, представляет собой механизм определения отношений между двумя переменными или объектами. Словарь определяет его как «статистическую связь между двумя или более переменными, так что систематические изменения в другой сопровождают систематические изменения в значении одной переменной».

В этом уроке мы узнаем о

Зачем нам нужна корреляция?

Давайте разберемся в взаимосвязи со следующим сценарием.

Представьте, что вы записываете сценарий с помощью LoadRunner.

Связь клиент-сервер

  1. Во время записи клиент отправляет запрос на сервер, чтобы начать сеанс
  2. Сервер получает запрос и выделяет новый идентификатор сеанса ABC
  3. Клиент сохраняет идентификатор сеанса ABC в скрипте.
  4. Клиент запускает сеанс с идентификатором ABC и отправляет запрос на сервер, чтобы разрешить его запись
  5. Сервер распознает идентификатор ABC и позволяет клиенту записать скрипт

Корреляция в Loadrunner: полное руководство

  1. Теперь давайте изучим взаимодействие клиент-сервер во время воспроизведения
  2. Во время воспроизведения клиент отправляет запрос на сервер, чтобы начать сеанс
  3. Сервер получает запрос и выделяет новый идентификатор сеанса XYZ
  4. Клиент начинает сеанс с ранее записанным идентификатором ABC и отправляет запрос на сервер, чтобы позволить ему записать
  5. Сервер не может идентифицировать идентификатор ABC, так как он ожидал идентификатора XYZ, который он выделил, и сеанс завершился неудачно.

Корреляция в Loadrunner: полное руководство

Нам нужно решение, которое бы захватывало анализ динамического значения, отправляемого во время выполнения, и возвращало это значение обратно на сервер. Вот как будет выглядеть взаимодействие клиент-сервер с этим решением

  1. Во время воспроизведения клиент отправляет запрос на сервер, чтобы начать сеанс
  2. Сервер получает запрос и выделяет новый идентификатор сеанса ZZZ
  3. Клиент анализирует этот новый идентификатор сеанса ZZZ из запроса.
  4. Клиент отправляет запрос на начало сеанса с идентификатором ZZZ
  5. Сервер распознает идентификатор ZZZ и позволяет клиенту воспроизвести сценарий

Корреляция в Loadrunner: полное руководство

Это не что иное, как корреляция .

Нажмите здесь, если видео не доступно

В случае VUGen корреляция — это обязательная связь между ответом и любым предшествующим запросом.

Существуют различные ситуации, когда запрос основан на ранее полученном ответе от сервера, таком как идентификатор сеанса, дата / время сервера, которые выбираются с сервера. Эти значения различаются при каждом запуске приложения или записи сценария. Очевидно, что если выполнение скрипта зависит от значения, возвращаемого сервером, это означает, что вам нужно найти механизм, где вы можете «перехватить» ответ сервера и присоединиться к тем запросам, которые ожидает сервер. Обычно это называется корреляцией в LoadRunner.

Проще говоря, решение с использованием корреляции:

  1. Захватить выходное значение из шага
  2. Используйте указанное выше значение, чтобы служить входом для всех последующих шагов

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

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

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

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

VUGen потребует от вас запустить записанный сценарий как минимум два раза, чтобы он мог внутренне сравнить различные значения в ответе сервера.

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

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

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

Чтобы настроить автоматическую корреляцию во время записи, выполните приведенную ниже настройку в разделе «Настройка времени записи» после записи сценария.

Нажмите Запись => Параметры записи (или нажмите Ctrl + F7),

>Корреляция в Loadrunner: полное руководство

Ниже откроется окно:

Корреляция в Loadrunner: полное руководство

Нажмите на Корреляцию => Конфигурация — откроется окно ниже.

Корреляция в Loadrunner: полное руководство

Здесь вам нужно пометить как проверенный по всем приложениям (ASPNET) и т. Д., Которые используются в вашем предметном приложении. Справа вы видите правила, которые будут определять возможных кандидатов на корреляцию, например, _VIEWSTATE. Вы также можете добавить дополнительные приложения или пользовательские правила, нажав кнопку «Создать правило».

Вы также можете нажать на ПРАВИЛА, вы увидите, как показано ниже:

Корреляция в Loadrunner: полное руководство

Чтобы автоматическая корреляция работала, необходимо убедиться, что проверка правил помечена как отмеченная. Если вы нажмете на автоматически сопоставленные найденные значения, VUGen не предложит вам выбрать, как только будет найден кандидат на сопоставление, вместо этого он просто сопоставит их.

Мы поймем API, используемый для корреляции позже. Тем не менее, желательно использовать сравнение HTML вместо сравнения текста.

После того, как вы выбрали какие-либо правила, нажмите кнопку ОК, чтобы закрыть окна.

Нажмите на в Корреляция в Loadrunner: полное руководствоменю, и 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, в качестве границы будут использоваться все символы с начала данных. Граничные параметры чувствительны к регистру. Для дальнейшей настройки текста поиска используйте один или несколько текстовых флагов. Этот атрибут обязателен. Смотрите раздел «Граничные аргументы».

NOTFOUND : опция обработки, когда граница не найдена и генерируется пустая строка.

«Не найдено = ошибка», значение по умолчанию, вызывает ошибку, когда граница не найдена.

«Не найдено = предупреждение» («Не найдено = пусто» в более ранних версиях), не выдает ошибку. Если граница не найдена, она устанавливает значение параметра в 0 и продолжает выполнение сценария. Опция «warning» идеальна, если вы хотите увидеть, была ли найдена строка, но не хотите, чтобы скрипт не выполнялся.

Примечание . Если для сценария включен параметр «Продолжить при ошибке», то даже если для параметра NOTFOUND установлено значение «ошибка», сценарий продолжается, когда граница не найдена, но сообщение об ошибке записывается в расширенный файл журнала.

Этот атрибут также является необязательным.

ORD : указывает порядковый номер или случай совпадения. Экземпляр по умолчанию — 1. Если вы укажете «Все», он сохранит значения параметров в массиве. Этот атрибут не является обязательным.

Примечание. Использование Instance вместо ORD поддерживается для обратной совместимости, но не рекомендуется.

RB: правая граница параметра или динамических данных. Если вы не укажете значение RB, в качестве границы будут использоваться все символы до конца данных. Граничные параметры чувствительны к регистру. Для дальнейшей настройки текста поиска используйте один или несколько текстовых флагов. Этот атрибут обязателен. Смотрите раздел «Граничные аргументы».

RelFrameID : уровень иерархии HTML-страницы относительно запрошенного URL. Возможные значения: ВСЕ или число. Нажмите Атрибут RelFrameID для подробного описания. Этот атрибут не является обязательным.

Примечание: RelFrameID не поддерживается в сценариях уровня GUI.

SaveLen : длина подстроки найденного значения из заданного смещения для сохранения в параметре. Этот атрибут не является обязательным. Значение по умолчанию -1, что указывает на сохранение в конец строки.

SaveOffset : смещение подстроки найденного значения для сохранения в параметре. Значение смещения должно быть неотрицательным. Значение по умолчанию равно 0. Этот атрибут не является обязательным.

Поиск: область поиска — где искать данные с разделителями. Возможные значения: «Заголовки» (поиск только по заголовкам), «Тело» (поиск только по данным тела, а не по заголовкам), «Нет ресурса» (поиск только по телу HTML, исключая все заголовки и ресурсы) или « ВСЕ» (тело поиска, заголовки и ресурсы). , Значением по умолчанию является ВСЕ. Этот атрибут является необязательным, но обычно предпочтительным.