Разделы портала

Онлайн-тренинги

.
TruClient. Первый скрипт.
09.04.2011 23:45

Автор: Комендантов Илья

В предыдущей статье мы начали теоретическое знакомство с новым членом семейства веб-протоколов HP LoadRunner – TruClient. Закончилось оно хвалебной одой в его адрес: быстрое и лёгкое создание скриптов и богатые возможности настройки знаменуют полную и безоговорочную победу светлого будущего нагрузочного тестирования! Восторженные крики, овации, занавес.

Однако не стоит, конечно, делать выводы, основанные только на теоретическом обзоре. «Теория без практики мертва» – утверждал Александр Васильевич Суворов.Поэтому давайте попробуем посмотреть на конкретном примере, как происходит запись скрипта в TruClient.

В качестве подопытного кролика возьмём сайт http://www.signappnow.com/sheet/create . На странице несколько текстовых полей, календарик jQuery, кнопка и простенькая система защиты от автоматических регистраций на основе арифметического выражения. «Вооружение» – HP LoadRunner 11.0 Patch 2 (на момент написания статьи самая свежая версия).

Что ж, с исходными данными ознакомились, приступим-с.

TruClient использует механизм записи на основе Firefox, встраиваясь в него в качестве расширения (add-on).


Прежде, чем начать запись скрипта, пробежимся по тулбару TruClient:
– Записать;    – Проиграть;          – Остановить Проигрывание ;
– Вставить Точку Останова;       – Уровень Скрипта;
– Вставить Начало Транзакции;    – Вставить Конец Транзакции
– Открыть Редактор Транзакций;   – Сохранить Скрипт;
– Открыть Окно Настроек;              – Активировать Просмотр Снэпшотов.
Наверное, единственное, что требует дополнительных пояснений – это Уровень Скрипта ( ). TruClient фиксирует все события и действия пользователя, но отображает их на разных уровнях. Ввод текста в textarea – первый уровень, клик в поле textarea – второй, MouseOver – третий. Чтобы не загромождать скрипт, по умолчанию отображаются и проигрываются события первого уровня. Но иногда автоматическое определение уровня работает неправильно. Например, при работе с динамическим меню, где MouseOver вызывает подраздел, из которого выбирается ссылка либо следующий подраздел, TruClient может посчитать MouseOver низкоуровневым событием и отправить на второй или третий уровень. В таком случае для корректного проигрывания скрипта уровень придётся изменить вручную.

Следующая вкладка тулбара – Edit, здесь собраны основные операции редактирования: копирование, вставка, удаление шагов и так далее. Вкладка Window позволяет выбрать другое окно браузера и проиграть скрипт в нём.

Немножко освоились, пора приступать к экспериментам. Вставляем URL тестируемой странички и жмём кнопку записи. Далее заполняем все поля, особое внимание уделяем календарику: именно с ним не справился предшественник – Ajax (Click & Script). Должно получиться  так:


Нажимаем кнопку “Create” на странице для завершения бизнес-процесса, после чего останавливаем запись. Черновик скрипта готов.

Давайте теперь рассмотрим поближе полученные шаги (для этого их можно развернуть):

 

Элементы стандартных шаговОписание
Action что делать,
Arguments с какими аргументами,
Object над каким объектом,
End Event  событие, к которому привязывается завершение шага,
Step Timeout время ожидания завершения шага,
Object Timeout время ожидания распознавания объекта,
Roles  роли объекта,
Name имя объекта,
ID Method
  • Automatic (recommended)
  • XPath
  • JavaScript

метод идентификации объекта,

  • автоматический (рекомендуемый)
  • по XPath
  • с помощью JavaScript

Для каждого шага TruClient прописывает соответствующие параметры, например аргументы при нажатии на кнопку:

Button (“Left”, “Right”, “Middle”)
X coordinate (значение)
Y coordinate (значение)
Ctrl key (“false”, “true”)
Alt key (“false”, “true”)
Shift key (“false”, “true”)

Ещё одно замечательное отличие от предшественников – в любом изменяемом поле шага можно использовать JavaScript.  
Довольно часто случается, что скрипт готов к использованию сразу после создания. Однако чем сложнее страница, тем больше проблем с распознаванием объектов. Здесь уже приходится использовать функции Replace – для замены тестового объекта или Improve – для повторного выбора объекта. Забавно, что лучше всего работает замена (Replace) объекта самим собой.
Также есть набор вспомогательных функций, вызывается нажатием на “toolbox”:



Воспользуемся одной из дополнительных функцией (“Evaluate JavaScript”), чтобы обойти защиту от автоматических регистраций.
Алгоритм довольно прост:

  1. Находим нужный элемент в DOMе  (JavaScript)
  2. Вычисляем арифметическое выражение (JavaScript)
  3. Сохраняем результат в параметр (TruClient API)
  4. Используем параметр на нужном шаге (TruClient API).

Целевой элемент Label с “for” = “с”и значением “What is X + Y ?”.
Первый пункт реализуется следующим кодом на языке JavaScript:

var labels = document.getElementsByTagName('label');
for (var i in labels) {
  if (labels.item(i).htmlFor == 'c')
  var str = labels.item(i).innerHTML;
}

Для второго и третьего пункта проще:

LR.setParam("answer", eval(str.slice(8, -2)));

Четвёртый, совсем простой:

LR.getParam(“answer”);

Добавим функцию «Evaluate JavaScript» в скрипт и пропишем в аргументе первую и вторую часть кода. В аргумент шага «Type “11” in “What is 3 + 8 ?” textbox» добавляем код получения значения параметра. Должно получиться примерно так:


Жмём Save Script, потом Replay – всё работает, вуаля!

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