Нагрузочное тестирование ПО

вторник, 10 февраля 2009 г.

Доступ к объектам формы

Web Click&Script : HP Load Runner

В отдельных случаях не остается ничего кроме как работать с объектами формы непосредственно с помощью javascript-а, используя их методы и свойства. Технология Web (Click and Script) предоставляет такую возможность. С точки зрения DOM (Document Object Model) любой объект на веб странице должен иметь свой уникальный идентификатор. Выяснив этот идентификатор любым путем, например, анализируя source code для той или иной страницы, впоследствии можно писать операторы вручную, взяв в качестве образца какой либо похожий по типу объект формы. При этом такие элементы DESCRIPTION как name или type уже становятся второстепенными. Выполнение этого оператора будет в основном зависеть от того что находится в ACTION.

web_edit_field("1_1",
"Snapshot=t21115.inf",
DESCRIPTION,
"Type=password",
"name= PinCode ",
"WindowType=Modal",
ACTION,
"EvalJavaScript=document.getElementById(\"CardNum\").value=\"1111222233334444\"",
LAST);

web_edit_field("1_2",
"Snapshot=t21116.inf",
DESCRIPTION,
"Type=password",
"name= PinCode",
"WindowType=Modal",
ACTION,
"EvalJavaScript=document.getElementById(\"CardOwner\").value=\"Shirobokov\"",
LAST);

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

Работа с модальным окном

Web Click&Script : HP Load Runner

При работе с модальными окнами в технологии Web Click and Script может не происходить запись трафика для операций, выполняемых в самом модальном окне. Напомним, что под модальным окном понимается всплывающее диалоговое окно, вызываемое методом ShowModalDialog в javascript-e. Технологией, по которой сделано Приложение, использующееся в качестве примера, является ASP.Net, это значит, что в данное модальное окно загружается динамически сформированная на сервере форма (технология Active Server Page). Фактически запись трафика прекращается после отработки оператора, вызывающего модальное окно. В нашем случае это:

web_text_link("Запросить баланс из банка",
"Snapshot=t91.inf",
DESCRIPTION,
"Text= Запросить баланс из банка ",
ACTION,
"UserAction=Click",
LAST);

Предлагаемое решение заключается в регистрации, так называемой call back функции, в которую и включаются Click and Script операторы обработки полей и кнопок формы, расположенной в модальном окне. Регистрация call back функции происходит с использованием оператора web_reg_dialog, применить который необходимо перед использованием оператора непосредственно вызывающего модальное окно. Вот так:


web_reg_dialog(
DESCRIPTION,
"Type=Modal",
ACTION,
"SetCallback=ModalDialog1",
LAST);

web_text_link("Запросить баланс из банка",
"Snapshot=t91.inf",
DESCRIPTION,
"Text= Запросить баланс из банка",
ACTION,
"UserAction=Click",
LAST);

А теперь пример обработки полей и кнопок внутри call back функции. Реализовано в виде добавленного в скрипт файла с именем МodalDialog1.c и одной функцией ModalDialog1(). Разумеется, что кусок кода в файл ModalDialog1 приходится добавлять вручную, зная идентификаторы или имена объектов находящихся на форме внутри модального окна.

ModalDialog1()
{
...
web_edit_field("pin code",
"Snapshot=t21117.inf",
DESCRIPTION,
"Type=password",
"name=PinCode",
"WindowType=Modal",
ACTION,
"SetValue=хххх",
LAST);

web_button("btnSubmitModalDialog",
"Snapshot=t21118.inf",
DESCRIPTION,
"Type=submit",
"WindowType=Modal",
"name=btnSubmit",
LAST);
...
Return 0;
}

Кнопка с названием “btnSubmit” выполняет submit формы модального окна.

Остается добавить, что в этом случае необходимо присутствие в скрипте (*.h) файла (modal_dialog_callbacks.h) с определениями.

#ifndef _MODALDIALOGCALLBACKS_H
#define _MODALDIALOGCALLBACKS_H
#include "ModalDialog1.c"
#endif // _MODALDIALOGCALLBACKS_H

Файл globals.h также должен учитывать внесенные в скрипт изменения.

#ifndef _GLOBALS_H
#define _GLOBALS_H
//-----------------------------------------------------
// Include Files
#include "lrun.h"
#include "web_api.h"
#include "lrw_custom_body.h"
#include "modal_dialog_callbacks.h"
//-----------------------------------------------------
// Global Variables
#endif // _GLOBALS_H

Еще раз замечу, что при использовании операторов, выполняющих операции в модальном окне необходимо указывать тип окна – модальное (“WindowType=Modal”).

Протокол Web (Click and Script) : HP Load Runner

Начиная с версии 8.1, в Load Runner-e появилась альтернатива использованию протокола web (http/html) при работе с Web приложениями. Такой технологией является протокол Web (Click and Script). При просмотре записанного трафика вначале довольно непривычно не видеть знакомых web_submit_form или web_url, соответствующих точной последовательности обменов данными между клиентом и сервером. Вместо них появляются web_link, web_button, web_browser и так далее. Протокол Web (Click and Script) помещает в файл скрипта операторы, соответствующие использованию объектов пользовательского интерфейса. Последовательность операторов в скрипте соответствует последовательности использования тех или иных объектов (GUI) пользовательского интерфейса. При работе с Web (Click and Script) отпадает необходимость в применении ряда корреляций особенно связанных с сессионными и другими специальными идентификаторами, передаваемыми от сервера к клиенту и обратно. Например, можно забыть о кошмаре корреляции огромных VIEWSTATE-ов при работе с ASP.NET или о корреляции разнообразных cookies и так далее. При работе с Web (Click and Script) Load Runner эмулирует собой Web browser и таким образом берет эти функции на себя. Разумеется, что корреляция, связанная с работой самого Приложения, если таковая необходима, не может быть выполнена Load Runner-ом автоматически. Так что совсем избежать изучения журналов выполнения скриптов может не получится, тем не менее применение технологии Web (Click and Script) во многих случаях позволяло экономить силы и время.