Учебники

4) Advance VUGEN

Записанный скрипт может симулировать виртуального пользователя; однако простой записи может быть недостаточно для воспроизведения «реального поведения пользователя».

Когда сценарий записан, он охватывает единый и прямой поток предметного приложения. Принимая во внимание, что реальный пользователь может выполнить несколько итераций любого процесса, прежде чем он выйдет из системы. Задержка между нажатиями кнопок (время обдумывания) будет варьироваться от человека к человеку. Скорее всего, некоторые реальные пользователи получают доступ к вашему приложению по DSL, а некоторые — по коммутируемому. Таким образом, чтобы получить реальное представление о конечном пользователе, нам нужно улучшить наши сценарии, чтобы они точно соответствовали или, по крайней мере, были очень близки по поведению с реальными пользователями.

Вышеупомянутое является наиболее важным соображением при проведении « тестирования производительности », но это еще не все в сценарии VU. Как вы будете оценивать точное время, затрачиваемое VUser, когда SUL проходит тест производительности? Как бы вы узнали, прошел или не прошел VUser в определенный момент? Что является причиной сбоя, произошел сбой какого-либо внутреннего процесса или были ограничены ресурсы сервера?

Нам нужно улучшить наш скрипт, чтобы помочь ответить на все вышеупомянутые вопросы.

Использование транзакций

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

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

Чтобы открыть транзакцию, используйте эту строку кода:

lr_start_transaction(“Transaction Name”);

Чтобы закрыть транзакцию, используйте эту строку кода:

lr_end_transaction(“Transaction Name”, <status>);

<Status> сообщает LoadRunner, была ли эта конкретная транзакция успешной или неудачной. Возможные параметры могут быть:

  • LR_AUTO
  • LR_PASS
  • LR_FAIL

Пример:

lr_end_transaction («My_Login», LR_AUTO);

lr_end_transaction («001_Opening_Dashboard Name», LR_PASS);

lr_end_transaction («Business_Workflow_Transaction Name», LR_FAIL);

Обратите внимание:

  • Не забывайте, что вы работаете с «C», и это язык с учетом регистра.
  • Символ точки (.) Не допускается в имени транзакции, хотя вы можете использовать пробелы и подчеркивание.
  • Если вы правильно разветвили свой код и добавили контрольные точки для проверки ответа от сервера, вы можете использовать настраиваемую обработку ошибок, такую ​​как LR_PASS или LR_FAIL. В противном случае вы можете использовать LR_AUTO, и LoadRunner автоматически обработает ошибку сервера (HTTP 500, 400 и т. Д.)
  • Применяя транзакции, убедитесь, что в них не помещается оператор think_time , иначе ваша транзакция всегда будет включать этот период.
  •  Поскольку для LoadRunner в качестве имени транзакции требуется постоянная строка, распространенной проблемой при применении транзакции является несоответствие строки. Если при открытии и закрытии транзакции вы дадите другое имя, у вас будет как минимум 2 ошибки. Поскольку транзакция, которую вы открыли, никогда не была закрыта, LoadRunner выдаст ошибку. Кроме того, транзакция, которую вы пытаетесь закрыть, никогда не была открыта, что привело к ошибке.
  •  Можете ли вы использовать свой интеллект и ответить себе, какая из вышеупомянутых ошибок будет сообщена первой? Чтобы подтвердить свой ответ, почему бы не сделать свою собственную ошибку? Если вы ответили правильно, вы на правильном пути. Если вы ответили неправильно, вам нужно сосредоточиться.
  •  Поскольку LoadRunner автоматически обеспечивает синхронизацию запросов и ответов, вам не придется беспокоиться об ответах при применении транзакций.

Понимание времени обдумывания, точек встречи и комментариев

Точки свиданий

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

Точки рандеву инструктируют VUser ждать во время выполнения теста, чтобы несколько VUser достигли определенной точки, чтобы они могли одновременно выполнить задачу. Например, чтобы эмулировать пиковую нагрузку на банковском сервере, вы можете вставить точку рандеву, инструктирующую 100 VUser одновременно вносить деньги на их счета. Это может быть легко достигнуто с помощью рандеву.

Если точки сближения расположены неправильно, VUser будет обращаться к различным частям приложения — даже по одному и тому же сценарию. Это потому, что каждый VUser получает разное время отклика и, следовательно, немногие пользователи отстают.

Синтаксис: lr_rendesvous («Логическое имя»);

Лучшие практики:

  • Префикс места встречи с «rdv_» для лучшей читаемости кода; например, «rdv_Login»
  • Удалите любые немедленные заявления
  • Применение точек рандеву в представлении сценария (после записи)

Advance VUGEN: параметризация, транзакции, функции, настройки времени выполнения

Комментарии

Добавьте комментарии, чтобы описать деятельность, фрагмент кода или строку кода. Комментарии помогают сделать код понятным для любого, кто будет ссылаться на него в будущем. Они предоставляют информацию о конкретной операции и разделяют два раздела на различия.

Вы можете добавить комментарии

  • Во время записи (используя инструмент)
  • После записи (непосредственно в коде)

Лучшая практика: пометьте любые комментарии в верхней части каждого файла скрипта

Вставка функций через меню

Хотя вы можете напрямую писать простые строки кода, вам может понадобиться ключ для вызова функции. Вы также можете использовать Steps Toolbox (известный как «Вставить функцию» до версии 12), чтобы найти и вставить любую функцию прямо в ваш скрипт.

Панель инструментов «Шаги» находится в разделе «Вид» «Панель инструментов шагов».

Advance VUGEN: параметризация, транзакции, функции, настройки времени выполнения

Откроется боковое окно, посмотрите на снимок:

Advance VUGEN: параметризация, транзакции, функции, настройки времени выполнения

Что такое параметризация?

Параметр в VuGen представляет собой контейнер , который содержит записанное значение, заменяются для различных пользователей.

Во время выполнения сценария (в VUGen или Controller) значение из внешнего источника (например, .txt, XML или базы данных) заменяет предыдущее значение параметра.

Параметризация полезна, например, при отправке динамических (или уникальных) значений на сервер; желательно, чтобы бизнес-процесс выполнял 10 итераций, но каждый раз выбирал уникальное имя пользователя.

Это также помогает стимулировать реальное поведение к субъектной системе. Посмотрите на приведенный ниже пример:

Примеры задач:

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

Иногда клиентское приложение передает уникальный идентификатор на сервер (например, session_id) для продолжения процесса (даже для одного пользователя) — в этом случае помогает параметризация.

Часто клиентское приложение поддерживает кэш данных, отправляемых на сервер и с сервера. В результате сервер не получает реальное поведение пользователя (в случае, если сервер запускает другой алгоритм в зависимости от критериев поиска). В то время как сценарий VUser будет выполнен успешно, составленная статистика производительности не будет иметь смысла. Использование различных данных с помощью параметризации помогает эмулировать активность на стороне сервера (процедуры и т. Д.) И тренирует систему.

Дата, которая жестко запрограммирована в VUser во время записи, может перестать быть действительной, когда эта дата прошла. Параметризация даты позволяет выполнить VUser успешно, заменив жестко закодированную дату. Такие поля или запросы являются подходящими кандидатами для параметризации.

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

Настройки времени выполнения и их влияние на симуляцию VU

Настройки времени выполнения имеют такое же важное значение, как и ваш скрипт VUGen. С различными конфигурациями вы можете получить различные конструкции испытаний. Вот почему вы можете получить неповторяемые результаты, если настройки времени выполнения не согласованы. Давайте обсудим каждый атрибут один за другим.

Run Logic

Run Logic определяет, сколько раз будут выполняться все действия, кроме vuser_init и vuser_end.

Вероятно, это проясняет, почему LoadRunner предлагает хранить весь код входа в vuser_init, а часть выхода из системы — в vuser_end, оба эксклюзивно.

Если вы создали несколько действий, скажем, «Войти», «Открыть экран», «Рассчитать аренду», «Отправить средства», «Проверить баланс» и «Выйти», то для каждого VUser будет выполняться следующий сценарий:

Все VUsers будут входить в систему, выполнять открытое окно, рассчитывать аренду, отправлять средства, проверять баланс — затем — снова открывать экран, вычислять арендную плату … и т. Д. — итерация 10 раз — с последующим выходом из системы (один раз).

Advance VUGEN: параметризация, транзакции, функции, настройки времени выполнения

Это мощный параметр, позволяющий вести себя как настоящий пользователь. Помните, что реальный пользователь не входит и не выходит каждый раз — он, как правило, повторяет одни и те же шаги.

Сколько раз вы нажимаете «Входящие» при проверке электронной почты перед выходом из системы?

стимуляция

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

Рекомендуемая настройка зависит от дизайна теста. Однако, если вы хотите иметь агрессивную нагрузку, рассмотрите вариант «Как только закончится предыдущая итерация»

Advance VUGEN: параметризация, транзакции, функции, настройки времени выполнения

Журнал

Журнал (как обычно понимается) — это учет всех событий, пока вы запускаете LoadRunner. Вы можете включить журнал, чтобы знать, что происходит между вашим приложением и вашим сервером.

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

Стандартный журнал информативен и легко понятен. Он содержит только то количество знаний, которое вам обычно требуется для устранения неполадок в ваших скриптах VUser.  

В случае расширенного журнала вся стандартная информация журнала является подмножеством. Кроме того, вы можете иметь подстановку параметров. Это сообщает компоненту LoadRunner полную информацию обо всех параметрах (из параметризации), включая запросы, а также данные ответов.

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

Как вы уже догадались, если вы выберете «Advance Trace», ваш лог-файл будет огромным. Вы должны попробовать. Вы заметите, что время, затраченное VUGen, также значительно увеличилось, хотя это не повлияет на время отклика транзакции, сообщаемое VUGen. Тем не менее, это очень предварительная информация, которая может быть полезна, если вы понимаете предметное приложение, взаимодействие между клиентом и сервером между вашим приложением и оборудованием, а также детали уровня протокола. Обычно эта информация по сути мертва, так как требует чрезвычайных усилий для понимания и устранения неполадок.

Advance VUGEN: параметризация, транзакции, функции, настройки времени выполнения

    

Советы:

  • Независимо от того, сколько времени занимает VUGen, когда журнал включен, это не влияет на время отклика транзакции. HP называет это явление «современной технологией».
  • Отключите журнал, если он не требуется.
  • Отключите журнал, когда вы закончите со своими сценариями. Включение сценариев с включенным ведением журнала приведет к замедлению работы контроллера и сообщению о неприятных сообщениях.
  • Отключение журнала увеличит емкость максимального количества пользователей, которое вы можете смоделировать с помощью LoadRunner.
  • Попробуйте использовать «Отправить сообщение только при возникновении ошибки» — это отключит ненужные информационные сообщения и сообщит только об ошибках.

Подумай раз

Подумайте время это просто задержка между двумя шагами.

Think Time помогает копировать поведение пользователя, поскольку ни один реальный пользователь не может использовать любое приложение, например, машину (VUGen). VUGen генерирует время обдумывания автоматически. У вас все еще есть полный контроль над удалением, умножением или изменением продолжительности времени обдумывания.

Например, чтобы понять больше, пользователь может открыть экран (то есть ответ, сопровождаемый запросом), а затем предоставить ему имя пользователя и пароль, прежде чем нажать Enter. Следующее взаимодействие приложения с сервером произойдет, когда он нажмет «Войти». Время, затраченное пользователем на ввод имени пользователя и пароля, составляет Think Time в LoadRunner.

Advance VUGEN: параметризация, транзакции, функции, настройки времени выполнения

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

Тем не менее, чтобы смоделировать поведение, похожее на реальное, вы можете «Произвольное время обдумывания пользователя» и установить желаемые проценты.

Подумайте об использовании ограниченного времени обдумывания до законного периода. Обычно 30 секунд достаточно хорошо.

Моделирование скорости

Моделирование скорости просто относится к пропускной способности для каждого клиентского компьютера.

Поскольку мы моделируем тысячи VUser с помощью LoadRunner, удивительно, как просто LoadRunner сделал для управления имитацией пропускной способности / скорости сети.

Если вы являетесь клиентами, обращающимися к вашему приложению со скоростью более 128 Кбит / с, вы можете управлять им отсюда. Вы получите возможность имитировать «реальное поведение», которое должно помочь получить правильную статистику производительности.

Advance VUGEN: параметризация, транзакции, функции, настройки времени выполнения

Лучшая рекомендация — установить максимальную пропускную способность. Это поможет не учитывать любые узкие места в производительности, связанные с сетью, и в первую очередь сосредоточиться на любых потенциальных проблемах в приложении. Вы всегда можете запустить тест несколько раз, чтобы увидеть различное поведение при разных обстоятельствах.

Эмуляция браузера

Пользовательский опыт не зависит от браузера, который использует конечный пользователь. Понятно, что это выходит за рамки показателей эффективности. Однако вы можете выбрать, какой браузер вы хотите эмулировать.

Advance VUGEN: параметризация, транзакции, функции, настройки времени выполнения

Можете ли вы ответить себе, когда именно вам будет важно выбрать правильный браузер в этой конфигурации?

Вы будете использовать эту конфигурацию, если вы являетесь субъектом приложения веб-приложения, возвращая разные ответы для разных браузеров. Например, вы можете увидеть различные изображения и содержимое для IE, Firefox и т. Д.

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

Загрузка не HTML-ресурсов позволит LoadRunner загружать любые CSS, JS и другие мультимедийные файлы. Это должно быть проверено. Однако, если вы хотите исключить это из своего теста производительности, вы можете снять этот флажок.  

полномочие

Лучше полностью исключить прокси из вашей тестовой среды — это сделает результаты теста ненадежными. Однако вы можете столкнуться с ситуациями, когда это неизбежно. В такой ситуации LoadRunner облегчает вам настройку прокси.

Вы будете работать (или должны работать) без настройки прокси. Вы можете получить его из браузера по умолчанию. Однако, не забудьте проверить, какой браузер установлен по умолчанию и какая конфигурация прокси для браузера по умолчанию.

Advance VUGEN: параметризация, транзакции, функции, настройки времени выполнения

Если вы используете прокси-сервер и он требует аутентификации (или скрипта), вы можете нажать кнопку «Аутентифицировать», которая откроет новое окно. Смотрите скриншот ниже.

Advance VUGEN: параметризация, транзакции, функции, настройки времени выполнения

Используйте этот экран для ввода имени пользователя и пароля для аутентификации на прокси-сервере. Нажмите OK, чтобы закрыть экран.

Поздравляю. Вы закончили настройку вашего VUGen-скрипта. Не забудьте настроить его для всех ваших скриптов VUser.