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

вторник, 9 декабря 2008 г.

Программирование динамического оператора

Описываемая техника применялась в работе с Web (http/html) протоколом в HP Load Runner.

Иногда может быть полезным не добавлять параметры в датапулы, увеличивая их количество и усложняя структуру, а генерировать данные внутри скрипта, меняя их от итерации к итерации. При этом необходимая часть оператора строится динамически в виде строки, в которую каждый раз вставляются обновленные данные. В примере, динамически меняющимися на каждой итерации данными, являются даты начала и конца периода (переменные day_start и day_stop меняются каждую итерацию), используемые для построения отчета. Пример приведен в качестве иллюстрации динамического конструирования операторов и перебирает дни в диапазоне только от 1 до 30.
Сконструированными частями оператора будут строковые переменные url и referer. Обе они включаются в состав оператора web_url.

Action()
{

static int dstart = 1, dstop = 1;
int i,j;
char tr_name[50],
url[512],
referer[512],
param[512],
host_name[128],
day_start[4],day_stop[4];
...

strcpy(host_name,lr_eval_string("{host}"));
itoa(dstart,day_start,10);
itoa(dstop,day_stop,10);

lr_message(host_name);
lr_message(" %s %s", day_start, day_stop);

....

strcpy(url,"URL=");
strcpy(referer,"Referer=");
strcpy(param,"https://");
strcat(param,host_name);
strcat(param,"/site/transactions/TransactionsReport?sortBy=0&sortName=fine&sortOrder=A");

lr_output_message(param);

strcat(param,"&dayFrom=");
strcat(param,day_start);
strcat(param,"&monthFrom=8&yearFrom=2005&dayTo=");
strcat(param,day_stop);
strcat(param,"&monthTo=1&yearTo=2006&dateType=delta&Status=S");

lr_output_message(param);

strcat(url,param);
strcat(referer,param);

lr_message(url);
lr_message(referer);

lr_start_transaction("Search transactions");

web_url("TransactionsReport",
url,
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t3.inf",
"Mode=HTML",
EXTRARES,
"Url=/site/images/big_s.gif", referer, ENDITEM,
"Url=/site/images/link_list_head.gif", referer, ENDITEM,
LAST);

lr_end_transaction("Search transactions", LR_AUTO);

dstart++;
dstop++;
if (dstart == 31)
{
dstart = 1;
dstop = 1;
}
....
return 0;
}

Комментарии: 3:

Отправить комментарий

Подпишитесь на каналы Комментарии к сообщению [Atom]



<< Главная страница