Параметризація, функції, транзакції в LoadRunner
⚡ Розумний підсумок
Параметризація, транзакції та налаштування часу виконання – це три покращення, які перетворюють звичайний запис VuGen на скрипт, який поводиться як справжній користувач і повідомляє про час, якому ви дійсно можете довіряти.
Записаний скрипт може імітувати віртуального користувача; однак, одного лише запису може бути недостатньо для відтворення поведінки реального користувача.
Коли скрипт записується, він охоплює єдиний, прямий потік даних у відповідній програмі. Реальний користувач може виконати кілька ітерацій процесу, перш ніж вийти з системи. Затримка між натисканням кнопок (час обдумування) варіюється від людини до людини, і деякі користувачі отримують доступ до вашої програми через швидке з'єднання, а інші - ні. Тому, щоб отримати справжнє відчуття кінцевого користувача, нам потрібно вдосконалити наші скрипти, щоб вони працювали максимально близько до реальних користувачів.
Це найважливіший фактор, який слід враховувати під час проведення «Тестування продуктивності«, але скрипт VUser — це ще не все. Як виміряти час, витрачений VUser під час тестування системного навантаження (SUL)? Як дізнатися, чи VUser пройшов перевірку, чи не пройшов її в певний момент, і чи стався збій серверного процесу, чи не вистачило ресурсів сервера?
Нам потрібно вдосконалити наш скрипт, щоб допомогти відповісти на всі вищезазначені питання.
Примітка бренду: VuGen постачався як HP, потім Micro Focus, а тепер є частиною OpenText Професійна інженерія продуктивностіФункції та налаштування, наведені нижче, залишаються незмінними.
Використання транзакцій
Транзакції вимірюють час відгуку сервера на будь-яку операцію. Простими словами, «транзакція» вимірює час, який система витрачає на певний запит. Це може бути щось незначне, як клацання кнопки або виклик AJAX, що спрацьовує, коли текстове поле втрачає фокус.
Застосування транзакцій є простим. Напишіть один рядок коду перед тим, як буде здійснено запит, і закрийте транзакцію, коли запит завершиться. LoadRunner потребує лише рядка як назви транзакції.
Щоб відкрити транзакцію, використовуйте цей рядок коду:
lr_start_transaction(“Transaction Name”);
Щоб закрити транзакцію, використовуйте цей рядок коду:
lr_end_transaction(“Transaction Name”, <status>);
The повідомляє 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);
Code зазначає: Фрагменти відтворено точно так, як опубліковано, включаючи типографські лапки. Справжній скрипт VuGen потребує прямих подвійних лапок ASCII, тому передруковуйте їх, якщо копіюєте цей код.
Бали, які слід зазначити:
- Не забувайте, що ви працюєте з «C», і це мова з урахуванням регістру.
- Символ крапки (.) не дозволяється в назві транзакції, хоча можна використовувати пробіли та символи підкреслення.
- Якщо ви добре розгалужили свій код і додали контрольні точки для перевірки відповіді від сервера, ви можете використовувати спеціальну обробку помилок, таку як LR_PASS або LR_FAIL. В іншому випадку ви можете використовувати LR_AUTO, і LoadRunner автоматично оброблятиме помилки сервера (HTTP 500, 400 тощо).
- Під час застосування транзакцій переконайтеся, що всередині немає оператора часу на обдумування, інакше ваша транзакція завжди включатиме цей період.
- Оскільки LoadRunner вимагає константного рядка як назви транзакції, поширеною проблемою під час застосування транзакцій є невідповідність рядків. Якщо ви вкажете різне ім'я під час відкриття та закриття транзакції, ви отримаєте щонайменше 2 помилки. Транзакцію, яку ви відкрили, ніколи не закривали, тому LoadRunner видає помилку; а транзакцію, яку ви намагаєтеся закрити, ніколи не відкривали, що призводить до другої помилки.
- Обидві помилки відображаються в журналі відтворення, тому щоразу, коли повідомляється про будь-яку з них, спочатку перевірте назву транзакції у початковому та кінцевому операторах.
- Оскільки LoadRunner автоматично дбає про синхронізацію запитів та відповідей, вам не доведеться турбуватися про відповідь під час застосування транзакцій.
Точки зустрічі, коментарі та функції скрипта
Три менші покращення роблять скрипт поведінкою та читанням схожим на робочий код: точки зустрічі, коментарі та вбудований у VuGen браузер функцій.
Точки зустрічі
Точка зустрічі — це «точка зустрічі». Це окремий оператор, який вказує LoadRunner ввести паралельність. Ви вставляєте точки зустрічі в скрипти VUser, щоб емулювати велике навантаження на сервер з боку користувачів.
Точки зустрічі вказують віртуальному користувачеві чекати під час виконання, поки кілька віртуальних користувачів не досягнуть певної точки, щоб вони могли одночасно виконувати завдання. Наприклад, щоб імітувати пікове навантаження на банківський сервер, вставте точку зустрічі, яка вказує 100 віртуальним користувачам внести готівку одночасно.
Якщо точки зустрічі розміщені неправильно, віртуальні користувачі (VUser) матимуть доступ до різних частин програми навіть для одного й того ж скрипта. Це пояснюється тим, що кожен VUser отримує різний час відгуку, і тому деякі користувачі відстають.
Синтаксис:
lr_rendezvous(“Logical Name”);
Примітка щодо виправлення: на опублікованій сторінці написано це lr_randesvousПравильна назва функції — lr_randezvous; форма з помилкою не скомпілюється.
Кращі практики:
- Додайте перед точкою зустрічі «rdv_» для кращої читабельності коду; наприклад «rdv_Login»
- Видаліть будь-які безпосередньо суміжні оператори часу на обдумування
- Застосування точок зустрічі у режимі перегляду сценарію після запису
У наведеному нижче вигляді сценарію показано заяву про зустріч, вставлену в записану дію:
Коментарі
Додавайте коментарі для опису дії, фрагмента коду або рядка коду. Коментарі допомагають зробити код зрозумілим для будь-кого, хто звертатиметься до нього в майбутньому. Вони надають інформацію про певну операцію та розділяють два розділи для розрізнення.
Ви можете додавати коментарі
- Під час запису (за допомогою інструменту)
- Після запису (безпосередньо написання коду)
Найкраща практика: позначайте будь-які коментарі у верхній частині кожного файлу скрипта.
Вставка функцій через меню
Хоча ви можете безпосередньо писати прості рядки коду, вам може знадобитися підказка, щоб згадати функцію. Ви також можете скористатися інструментом Steps Toolbox (відомим як Insert Function до версії 12), щоб знайти та вставити будь-яку функцію безпосередньо у свій скрипт.
Ви можете знайти панель інструментів «Кроки» в меню Вигляд → Панель інструментів «Кроки», як показано нижче.
Це відкриє бічне вікно. Подивіться на знімок:
Що таке параметризація?
Параметр у VuGen – це контейнер, який містить записане значення, яке замінюється для різних користувачів.
Під час виконання скрипта (у VuGen або контролер), значення із зовнішнього джерела (наприклад, файлу .txt, XML або бази даних) замінює попереднє значення параметра.
Параметризація корисна для надсилання динамічних (або унікальних) значень на сервер. Наприклад, бізнес-процес може потребувати виконання 10 ітерацій, щоразу вибираючи унікальне ім'я користувача.
Це також допомагає в імітації реальної поведінки в досліджуваній системі. Розгляньте приклади нижче.
Приклади задач:
- Бізнес-процес працює лише для поточної дати, яка надходить із сервера, тому його не можна передати як жорстко запрограмований запит.
- Іноді клієнтська програма передає унікальний ідентифікатор серверу (наприклад, session_id) для продовження процесу, навіть для одного користувача. У такому випадку допомагає параметризація.
- Часто клієнтська програма зберігає кеш даних, що надсилаються на сервер і з нього. В результаті сервер не отримує реальної поведінки користувача (коли сервер використовує різний алгоритм залежно від критеріїв пошуку). Сценарій VUser буде виконано успішно, але отримана статистика продуктивності не буде значущою. Використання різних даних за допомогою параметризації допомагає емулювати активність на стороні сервера, таку як збережені процедури, та тренує систему.
- Дата, жорстко закодована у VUser під час запису, може бути недійсною після її закінчення. Параметризація дати дозволяє VUser успішно виконати завдання, замінивши жорстко закодовану дату. Такі поля або запити є найкращими кандидатами для параметризації.
Ви створюєте його, клацнувши правою кнопкою миші записане значення у режимі перегляду сценаріїв і вибравши «Замінити параметром». Потім VuGen запитує, який тип надає значення:
| Тип параметра | Цінність поставок |
|---|---|
| Файл | Значення, що зчитуються зі стовпця у файлі .dat. |
| таблиця | Блок рядків і стовпців одночасно. |
| Дата / час | Поточна дата та час у вибраному форматі. |
| Випадкове число | Число з заданого вами діапазону. |
| Унікальний номер | Окреме число для кожного VUser, починаючи з початкового значення та розміру блоку. |
| Номер ітерації | Поточна кількість ітерацій. |
| Ідентифікатор віртуального користувача | Ідентифікатор, що призначається під час відтворення. |
| Група / Завантаження Generator ІМ'Я | Група VUser або генераторна машина. |
| XML | Фрагмент з набору даних XML. |
| Функція, визначена користувачем | Значення, що повертається вашою власною бібліотечною функцією. |
Два додаткові варіанти визначають, як дані споживатимуться протягом ітерацій:
| варіант | Вибори | Що воно контролює |
|---|---|---|
| Вибрати наступний рядок | Послідовний, Випадковий, Унікальний | Який рядок VUser читає далі. |
| Оновити значення | Кожна ітерація, кожен випадок, один раз | Коли значення оновлюється. |
У наведеному нижче покроковому посібнику показано параметризацію, застосовану до записаного скрипта:
Натисніть тут якщо відео недоступне.
Налаштування часу виконання та їхній вплив на симуляцію VUser
Налаштування часу виконання мають таке ж значення, як і ваш скрипт VuGen. З різними конфігураціями ви можете отримати абсолютно різні дизайни тестів, тому невідповідні налаштування часу виконання є звичайною причиною неповторюваних результатів. Давайте обговоримо кожен атрибут окремо.
Запустіть логіку
Логіка запуску визначає кількість виконання всіх дій, крім vuser_init і vuser_end.
Це, ймовірно, пояснює, чому LoadRunner пропонує keeping весь код входу в vuser_init та частина виходу з системи в vuser_end, обидва виключно.
Якщо ви створили кілька дій, наприклад, «Увійти», «Відкрити екран», «Розрахувати орендну плату», «Надіслати кошти», «Перевірити баланс» та «Вийти», то для кожного користувача VUser відбудеться наступний сценарій:
Усі користувачі VU увійдуть у систему, виконають команди «Відкрити екран», «Розрахувати орендну плату», «Надіслати кошти» та «Перевірити баланс», потім знову «Відкрити екран», «Розрахувати орендну плату» тощо, повторюючи 10 разів, а потім вийдуть із системи (один раз).
Це потужний параметр, який дозволяє скрипту діяти більше як справжній користувач. Пам’ятайте, що справжній користувач не входить і виходить щоразу; він зазвичай повторює одні й ті ж кроки.
Скільки разів ви натискаєте кнопку «Вхідні», перевіряючи електронну пошту, перш ніж вийти з неї?
Темп
Це важливо. Більшість людей не розуміють різниці між темпом виконання та часом на обдумування. Єдина відмінність полягає в тому, що темп виконання стосується затримки між ітераціями, тоді як час на обдумування – це затримка між будь-якими двома кроками.
Рекомендований параметр залежить від дизайну тесту. Однак, якщо ви хочете застосувати агресивне навантаження, розгляньте можливість вибору параметра «Як тільки завершиться попередня ітерація», як показано нижче.
Ввійти
Журнал, як його зазвичай розуміють, – це запис усіх подій під час роботи LoadRunner. Ви можете ввімкнути журнал, щоб знати, що відбувається між вашою програмою та вашим сервером.
LoadRunner надає потужний механізм ведення журналу, який є надійним та масштабованим сам по собі. Він дозволяє вести лише «стандартний журнал», або детальний та налаштовуваний розширений журнал, або взагалі вимкнути ведення журналу.
Стандартний журнал є інформативним та легкозрозумілим. Він містить саме ту кількість інформації, яка вам зазвичай знадобиться для усунення несправностей зі скриптами VUser.
У випадку розширеного журналу вся стандартна інформація журналу є підмножиною. Крім того, ви можете використовувати підстановку параметрів. Це вказує компоненту LoadRunner включити повну інформацію про всі параметри (з параметризації), включаючи запити, а також дані відповідей.
Якщо ви включите «Дані, повернуті сервером», ваш журнал збільшиться в довжині. Він міститиме весь HTML-код, теги, ресурси та нересурсну інформацію безпосередньо в журналі. Цей варіант гарний лише тоді, коли вам потрібне серйозне усунення несправностей. Зазвичай це робить файл журналу дуже великим і незрозумілим.
Як ви вже могли здогадатися, якщо ви оберете «Додатково» Trac«e» ваш файл журналу буде величезним. Ви повинні спробувати. Ви помітите, що час, який витрачається VuGen, також значно збільшується, хоча це не впливає на час відповіді транзакції, про який повідомляє VuGen. Це дуже детальна інформація, і вона корисна лише в тому випадку, якщо ви розумієте суть програми, зв'язок клієнт-сервер між вашою програмою та обладнанням, а також деталі на рівні протоколу. Зазвичай ця інформація вимагає надзвичайних зусиль для читання та усунення несправностей.
Порада:
- Незалежно від того, скільки часу VuGen займає ведення журналу, це не впливає на час відгуку транзакції — накладні витрати на ведення журналу виключаються з виміряного часу.
- Вимкніть журнал, якщо він не потрібен.
- Вимкніть журнал, коли завершите роботу зі скриптами. Включення скриптів із увімкненим журналюванням призведе до повільнішої роботи Контролера та надсилання надокучливих повідомлень.
- Вимкнення журналу збільшить максимальну кількість користувачів, яких можна імітувати за допомогою LoadRunner.
- Спробуйте використовувати опцію «Надсилати повідомлення лише у разі виникнення помилки» — це відключає непотрібні інформаційні повідомлення та відображає лише повідомлення, пов’язані з помилками.
Think Times
Think Time — це просто затримка між двома кроками.
«Час обдумування» допомагає відтворювати поведінку користувача, оскільки жоден реальний користувач не може використовувати програму як машину. VuGen генерує час обдумування автоматично. Ви все ще маєте повний контроль над видаленням, множенням або зміною тривалості часу обдумування.
Щоб краще зрозуміти: користувач може відкрити екран (відповідь, а потім запит), а потім ввести ім'я користувача та пароль, перш ніж натиснути Enter. Наступна взаємодія між програмою та сервером відбувається, коли користувач натискає кнопку «Увійти». Час, який користувач витратив на введення імені користувача та пароля, у LoadRunner – це час мислення.
Якщо ви хочете імітувати агресивне навантаження на програму, подумайте про те, щоб повністю вимкнути час на обдумування.
Однак, щоб імітувати поведінку в реальному житті, ви можете вибрати «Використовувати випадковий час обдумування» та встановити потрібні відсотки.
Розгляньте можливість використання функції «Обмежити час на роздуми», щоб обмежити його допустимим періодом. Зазвичай 30 секунд цілком достатньо.
Симуляція швидкості
Моделювання швидкості просто стосується пропускної здатності кожної клієнтської машини.
Оскільки ми моделюємо тисячі VUser за допомогою LoadRunner, вражає, наскільки простим LoadRunner зробив моделювання пропускної здатності та швидкості мережі.
Якщо ваші клієнти отримують доступ до вашої програми зі швидкістю понад 128 Кбіт/с, ви можете контролювати це звідси. Ви зможете імітувати реальну поведінку, що має допомогти вам отримати правильну статистику продуктивності.
Найкраща рекомендація — встановити параметр «Використовувати максимальну пропускну здатність». Це допоможе вам ігнорувати будь-які вузькі місця, пов’язані з продуктивністю мережі, та спочатку зосередитися на потенційних проблемах у програмі. Ви завжди можете запустити тест кілька разів, щоб побачити різну поведінку за різних обставин.
Емуляція браузера
Досвід користувача не залежить від браузера, який використовує кінцевий користувач, тому це значною мірою виходить за рамки вимірювання продуктивності. Однак ви можете вибрати, який браузер ви хочете емулювати, як показано на панелі нижче.
Коли саме має значення, який браузер ви обираєте в цій конфігурації?
Ви використовуватимете цю конфігурацію, якщо ваш предметний застосунок є веб-застосунком, який повертає різні відповіді для різних браузерів. Наприклад, ви можете бачити різні зображення та контент для Internet Explorer та Firefox.
Ще один важливий параметр – «Імітувати кеш браузера». Якщо ви хочете оцінити час відгуку з увімкненим кешем, поставте тут позначку. Якщо ви шукаєте найгірший сценарій, це, очевидно, не варто враховувати.
Завантаження не-HTML-ресурсів дозволить LoadRunner завантажувати будь-які CSS, JS та інші мультимедійні файли. Цей пункт має залишатися позначеним. Однак, якщо ви хочете виключити його з вашого тесту продуктивності, ви можете зняти його з нього.
довірена особа
Найкраще повністю видалити проксі-сервер зі свого Тестове середовище — проксі-сервер на шляху робить результати тестування ненадійними. Однак, ви можете зіткнутися з ситуаціями, коли це неминуче. У такій ситуації LoadRunner надає налаштування проксі-сервера.
Ви працюватимете (або повинні працювати) з налаштуванням «Без проксі». Ви можете отримати його у своєму браузері за замовчуванням. Однак не забудьте перевірити, який браузер встановлено за замовчуванням і яка конфігурація проксі-сервера для цього браузера.
Якщо ви використовуєте проксі-сервер, і він вимагає автентифікації (або скрипта), ви можете натиснути кнопку «Автентифікувати», що призведе до відкриття нового вікна. Зверніться до знімка екрана нижче.
Використовуйте цей екран, щоб ввести ім’я користувача та пароль для автентифікації на проксі-сервері. Натисніть кнопку «ОК», щоб закрити екран.
Вітаємо. Ви завершили налаштування вашого скрипта VuGen. Не забудьте налаштувати його для всіх ваших скриптів VUser.
Далі прийде Співвідношення, запускаючи сценарій у контролер, а результати читання Аналіз LoadRunner. Дивіться Архітектура LoadRunner та Тестування навантаження гіди











