Параметризация, функции, транзакции в LoadRunner

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

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

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

Нам необходимо улучшить наш сценарий, чтобы помочь ответить на все вышеперечисленные вопросы.

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

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

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

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

lr_start_transaction(“Transaction Name”);

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

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

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

  • LR_АВТО
  • LR_PASS
  • LR_FAIL

Пример:

lr_end_transaction («Мой_логин», LR_AUTO);
lr_end_transaction («001_Opening_Dashboard Name», LR_PASS);
lr_end_transaction («Имя бизнес-рабочего процесса_транзакции», LR_FAIL);

Следует отметить:

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

Понимание времени размышления, точек встречи и комментариев

Точки встречи

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

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

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

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

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

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

Точки встречи

Комментарии

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

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

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

Рекомендация: отмечайте любые комментарии в верхней части каждого файла сценария.

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

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

Вы можете найти панель инструментов «Шаги» в разделе «Вид» — «Инструмент «Шаги».box.

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

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

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

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

A параметр в VUGen — это контейнер, содержащий записанное значение, которое заменяется для разных пользователей.

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

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

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

Примеры проблем:

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

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

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

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

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

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

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

Запустить логику

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

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

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

Все пользователи VUser войдут в систему, выполнят «Открыть экран», «Рассчитать арендную плату», «Отправить средства», «Проверить баланс» — затем — снова «Открыть экран», «Рассчитать арендную плату»… и так далее — повторяется 10 раз — с последующим выходом из системы (один раз).

Запустить логику

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

Сколько раз вы нажимаете «вbox” при проверке электронной почтыmail перед выходом из системы?

стимуляция

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

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

стимуляция

Журнал

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

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

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

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

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

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

Журнал

Советы:

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

Время подумать

Время размышлений — это просто задержка между двумя шагами.

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

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

Время подумать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

доверенное лицо

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

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

доверенное лицо

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

доверенное лицо

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

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