Перейти к содержимому

Тестирование безопасности
онлайн, начало 16 июня
Автоматизатор мобильных приложений
онлайн, начало 16 июня
Автоматизация тестирования REST API на Python
онлайн, начало 16 июня
Selenium WebDriver: полное руководство
онлайн, начало 18 июня
Фотография

Loadrunner Mdrv.exe


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 Artur

Artur

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Artur Shokin

Отправлено 07 сентября 2007 - 13:54

Добрый день всем.
Несколько месяцев назад я написал приложение для мониторинга Citrix приложения. Для сбора данных использовал LoadRunner точнее mdrv.exe вызвваемого из batch следующим образом:
D:\LoadRunner\bin\mdrv.exe -usr D:\test.usr -out D:\testlogs\-vugen_win 0

Ниже приведу пример времени ответов для одной транзакции:
5,31057
5,310176
5,310394
5,5078
5,310396
5,310205
5,310295
5,310749
5,311049
5,430626
6,311809
5,330365
6,311877
5,310679
5,310309
5,310353
5,310537
9,316064
5,305545
5,310425
5,310447
6,311752
5,310495

Выглядит крайне подозрительно т.к. в принципе есть в 5,31 и 6,31 секунды как время ответа. При этом если запускаю тот же скрипт в VuGen значения выглидять более реально.

Может быть кто-то сталкивалься с подобным вопросом?
  • 0

#2 Dmitry_NJ

Dmitry_NJ

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 3 122 сообщений
  • ФИО:Дмитрий Шевченко
  • Город:New Jersey, USA

Отправлено 08 сентября 2007 - 01:45

Кусок скрипта с транзакцией хотелось бы увидеть. Заодно неплохо было бы понять что значит "более реально". Намного больше? Намного меньше? Скрипт в VuGen и через mdrv.exe запускается с одной и той же машины?
  • 0
Дмитрий Шевченко

HP Software

#3 stef

stef

    Активный участник

  • Members
  • PipPip
  • 76 сообщений

Отправлено 09 сентября 2007 - 11:57

Добрый день всем.
Несколько месяцев назад я написал приложение для мониторинга Citrix приложения. Для сбора данных использовал LoadRunner точнее mdrv.exe вызвваемого из batch следующим образом:

Artur, 2 вопроса:

Какая версия LoadRunner используется?
Используются ли в скрипте функции ctrx_sync_on_bitmap?
  • 0

#4 Artur

Artur

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Artur Shokin

Отправлено 20 сентября 2007 - 09:05

Artur, 2 вопроса:

Какая версия LoadRunner используется?


8.1 FP4

Используются ли в скрипте функции ctrx_sync_on_bitmap?

да, для синхронизации
  • 0

#5 Artur

Artur

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Artur Shokin

Отправлено 20 сентября 2007 - 12:35

Кусок скрипта с транзакцией хотелось бы увидеть. Заодно неплохо было бы понять что значит "более реально". Намного больше? Намного меньше? Скрипт в VuGen и через mdrv.exe запускается с одной и той же машины?


Теперь я знаю почему в VUgen and dmrv.exe время выглядит по-разному.
http://kb-web.mercur...3384;Product=LR
Дело в том, что VUgen включает wasted_time, a mdrv - нет.
Вопрос для меня остается в том, почему значения времени в mdrv настолько дискретны? т.е. если округлить значения до второго знака, то результирующие значения выглядят след. образом:
5,31
5,33
6,31
4,31
и тд. Закономерность видна на лицо. Но никак не могу понять в чем дело



Кусок скрипта:
...навигация к месту где открывается документ
startTrans("01_TLC_CTRDOK_02_CA"); //Модифицированная lr_start_transaction

ctrx_type(" ",CTRX_LAST);//тут нажатие пробел и инициирование открытия документа

ctrx_sync_on_bitmap(31, 179, 16, 12, "f17ab25aadbca37af9920a0b6e82e848", CTRX_LAST); //синхронизация

endTrans("01_TLC_CTRDOK_02_CA"); // Модифицированная функция для записи времени в опредиленный логфайл



void startTrans(char *transname)
{
iTranCount=iTranCount+1;
itoa(iTranCount,cTranCount,10);
strcat(cTranCount,"_");
strcat(cTranCount, lr_eval_string(transname));
transname=cTranCount;
lr_continue_on_error(1);
lr_start_transaction( cTranCount);
}



void endTrans(char *transname)
{

itoa(iTranCount,cTranCount,10);
strcat(cTranCount,"_");
strcat(cTranCount, lr_eval_string(transname));
transname=cTranCount;

//lr_output_message({Time});
if ((file = fopen(filename, "a" )) == NULL)
{
lr_output_message("Unable to create %s", filename);
}

if ((filecsv = fopen(filenamecsv, "a" )) == NULL)
{
lr_output_message("Unable to create %s", filenamecsv);
}

if (lr_get_transaction_status( lr_eval_string(transname)) == LR_PASS)
{
char message[1024];
char messagecsv[1024];
char suffix[1024];
char qsuffix[1024];
messagecsv[0] = '\';
message[0] = '\';
suffix[0] = '\';
qsuffix[0] = '\';

transtime = lr_get_transaction_duration(lr_eval_string(transname));
strcat(message, lr_eval_string( "<trans><name>"));
strcat(message, lr_eval_string( transname));
strcat(message,"</name><starttime>");

sprintf (qsuffix, "%s</starttime>",lr_eval_string("{Time}"));
sprintf (suffix, "<duration>%f</duration></trans>\n", transtime);

strcat(message, qsuffix);
strcat(message, suffix);

sprintf(messagecsv, "%s,%s,%f\n",lr_eval_string( transname),lr_eval_string("{Time}"),transtime);

fwrite(message, strlen(message), 1, file);
fwrite(messagecsv, strlen(messagecsv), 1, filecsv);
lr_end_transaction(lr_eval_string(transname),LR_AUTO);

}
else
{

char message[1024];
char messagecsv[1024];

char suffix[1024];
char qsuffix[1024];
messagecsv[0] = '\';
message[0] = '\';
suffix[0] = '\';
qsuffix[0] = '\';

strcat(message, "<trans><name>");
strcat(message, lr_eval_string( transname));
strcat(message,"</name><starttime>");

sprintf (qsuffix, "%s</starttime>",lr_eval_string("{Time}"));
sprintf (suffix, "<duration>-1</duration></trans>\n");

strcat(message, qsuffix);
strcat(message, suffix);

sprintf(messagecsv, "%s,%s,-1\n",lr_eval_string( transname),lr_eval_string("{Time}"));

fwrite(message, strlen(message), 1, file);
fwrite(messagecsv, strlen(messagecsv), 1, filecsv);

lr_end_transaction(lr_eval_string(transname), LR_FAIL);

lr_exit(LR_EXIT_MAIN_ITERATION_AND_CONTINUE, LR_AUTO);



}
fclose(file);
fclose(filecsv);
lr_continue_on_error(3);
}
  • 0

#6 stef

stef

    Активный участник

  • Members
  • PipPip
  • 76 сообщений

Отправлено 20 сентября 2007 - 13:19

Artur, 2 вопроса:

Какая версия LoadRunner используется?


8.1 FP4

Используются ли в скрипте функции ctrx_sync_on_bitmap?

да, для синхронизации


Так и думал. В 8.1 FP4 есть проблема при вычислении времени выполнения Citrix-скриптов в которых используется функция ctrx_sync_on_bitmap.
Собственно, варианта 2:
  • связаться с кастомер-саппорт и обсудить с ними, как можно решить эту проблему
  • переписать скрипт без использования ctrx_sync_on_bitmap()

  • 0

#7 Dmitry_NJ

Dmitry_NJ

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 3 122 сообщений
  • ФИО:Дмитрий Шевченко
  • Город:New Jersey, USA

Отправлено 20 сентября 2007 - 18:39

Вопрос для меня остается в том, почему значения времени в mdrv настолько дискретны? т.е. если округлить значения до второго знака, то результирующие значения выглядят след. образом:
5,31
5,33
6,31
4,31
и тд. Закономерность видна на лицо. Но никак не могу понять в чем дело

А что за закономерность то? Разброс в пределах 2 секунд. Что не так?
  • 0
Дмитрий Шевченко

HP Software

#8 Artur

Artur

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Artur Shokin

Отправлено 21 сентября 2007 - 06:37

Вопрос для меня остается в том, почему значения времени в mdrv настолько дискретны? т.е. если округлить значения до второго знака, то результирующие значения выглядят след. образом:
5,31
5,33
6,31
4,31
и тд. Закономерность видна на лицо. Но никак не могу понять в чем дело

А что за закономерность то? Разброс в пределах 2 секунд. Что не так?


закономерность в том, что имея около 100000 итераций всего около 100 значений времени. Проще говоря если взять кубик для игры в кости и бросать его 100 раз. При этом выпадают ТОЛЬКО значения, скажем, 2 и 4. Понятно что с кубиком не все в порядке :)
  • 0

#9 Artur

Artur

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Artur Shokin

Отправлено 21 сентября 2007 - 06:38

Artur, 2 вопроса:

Какая версия LoadRunner используется?


8.1 FP4

Используются ли в скрипте функции ctrx_sync_on_bitmap?

да, для синхронизации


Так и думал. В 8.1 FP4 есть проблема при вычислении времени выполнения Citrix-скриптов в которых используется функция ctrx_sync_on_bitmap.
Собственно, варианта 2:
  • связаться с кастомер-саппорт и обсудить с ними, как можно решить эту проблему
  • переписать скрипт без использования ctrx_sync_on_bitmap()



спасибо, попробую!
  • 0

#10 Dmitry_NJ

Dmitry_NJ

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 3 122 сообщений
  • ФИО:Дмитрий Шевченко
  • Город:New Jersey, USA

Отправлено 22 сентября 2007 - 05:25

закономерность в том, что имея около 100000 итераций всего около 100 значений времени. Проще говоря если взять кубик для игры в кости и бросать его 100 раз. При этом выпадают ТОЛЬКО значения, скажем, 2 и 4. Понятно что с кубиком не все в порядке :)

Странная ассоциация. Что выпадает на кубике это абсолютно случайный процесс. Вы же в скрипте, насколько я понимаю, замеряете транзакцию какой-то работающей системы. И эта транзакция, наверное, все-таки не должна занимать каждый раз какое-то абсолютно случайное время.
  • 0
Дмитрий Шевченко

HP Software

#11 stef

stef

    Активный участник

  • Members
  • PipPip
  • 76 сообщений

Отправлено 22 сентября 2007 - 15:17

закономерность в том, что имея около 100000 итераций всего около 100 значений времени. Проще говоря если взять кубик для игры в кости и бросать его 100 раз. При этом выпадают ТОЛЬКО значения, скажем, 2 и 4. Понятно что с кубиком не все в порядке :)

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

Дмитрий,
Времена транзакций генерируются с шагом примерно в 1 секунду - и это будет верно для любого окружения.
В данном случае наиучшим решением будет переписать скрипт без ctrx_sync_on_bitmap() - проблема возникает только в случае ее использования - или узнать у кастомер саппорт что они предложат сделать в этой ситуации.
  • 0

#12 Artur

Artur

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Artur Shokin

Отправлено 22 октября 2007 - 09:39

Наконец то получил ответ от НР.
В LR 8.1 ошибка в протоколе Цитрикс. Прислали патч. И действительно - помогло. Только время Логин увеличилось в 5 раз. Трагично конечно. Жалко что у меня так и не появилось время переписать скрипт без использования ctrx_sync_on_bitmap().
  • 0

#13 stef

stef

    Активный участник

  • Members
  • PipPip
  • 76 сообщений

Отправлено 22 октября 2007 - 09:55

Да, я так и предполагал, что вам предложат этот патч.
Переписать было бы быстрее, конечно. :)
  • 0




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале