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

Фотография

Как правильно параметризировать скрипт?


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

#1 Azart

Azart

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

  • Members
  • Pip
  • 72 сообщений
  • Город:Moscow, Zelenograd

Отправлено 16 декабря 2008 - 16:06

Добрый вечер коллеги. Не получается добится правильной параметризации, нудна помощь.

Система выглядит так - упращённое предстваление:
Web портал:
1. Пользователь вводит уникальный код(ID) по маске 111ххххх, к примеру 11122233
2. Кликает "Login"
3. Открывается страница с набором контролов, пусть будут радиобаттноны и кнопкой "OK"
3.1 Если пользователь с ID уже был, то система показывает страницу с текстом "Выбор сделан"
4. Пользователь выбирает радиобатон и кликает "OK"
5. Показывается страница с текстом "Выбор сделан"

На Ajax(Click&Script) написал скрипт для тестирования производительности. Для параметра ID сделал раметризацию, настройки параметризации:
Parametr type: File
Select next row: Sequential
Update value on: Each iteration

Запуская сценарий на 1 пользователе в контроллере "выполнять до конца скрипт" - всё работает отлично.
Ещё раз запускаю сценарий на 1 пользователе в контроллере "выполнять до конца скрипт" - ошибка: не находит контролы, смотрю в логах приложения оказывается, скрипт запустился и из файла был использован тот же ID, что и в первом случае.
Удалил из файла параметром первый ID, запустил заново работает. Но это неудобно.

Если запускать на 2 и более пользователей сразу, то выполняется скрипт только для первого пользователя, для остальных ситуация описанная выше.

Подскажите как решить данныую проблему. Предпологаю, что можно брать ID рандомно, но нет гарантии, что ID не совпадут. Мне кажется должно быть более красивое решение проблемы, чтоб все виртуальные пользователи знали, как ID уже были использованы.
  • 0
The system is not ideal.

#2 Dmitry_NJ

Dmitry_NJ

    Консультант

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

Отправлено 16 декабря 2008 - 22:12

Подскажите как решить данныую проблему. Предпологаю, что можно брать ID рандомно, но нет гарантии, что ID не совпадут. Мне кажется должно быть более красивое решение проблемы, чтоб все виртуальные пользователи знали, как ID уже были использованы.

Виртуальным пользователям все по барабану, они не будут знать ничего более того, что вы им сами скажете делать. Если речь идет о наборе ID в течение одного тестового прогона, то Data Assignment Method должен быть Unique, а не Sequential. При этом вам самому придется позаботиться о том, чтобы уникальных ID хватило всем виртуальным пользователям на все время теста. Для примера - при 3 пользователях, выполняющих скрипт 5 итераций, ваш файл параметров должен содержать, как минимум, 15 уникальных ID.

Что касается повторного использования этих же ID для последующих прогонов, то это опять же ваша головная боль. Если приложение "запоминает" все ранее использованные ID (неважно введенные вручную или во время нагрузочного теста), то вам надо либо делать reset БД (или где эти ID запоминаются приложением?) перед каждым новым тестом, либо каждый раз обновлять файл параметров в скрипте новой порцией уникальных ID.
  • 0
Дмитрий Шевченко

HP Software

#3 Azart

Azart

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

  • Members
  • Pip
  • 72 сообщений
  • Город:Moscow, Zelenograd

Отправлено 17 декабря 2008 - 10:00

Спасибо за ответ.

Было решено, что сценарий будет такой прогоняться последовательно на 20, 30 и 60 пользователей выполняют скрипт до конца, т.е. по 1 итерации.

1.Поставил как советовали "Data Assignment Method должен быть Unique" - непомогло, все пользователи берут первый ID из файла.
Заменил "Each iteration" на "Each occurrence" - помогло.

2. Остался вопрос "как обнавлять файл параметров уникальными ID". В моём файле почти 30 000 ID. Хочу сделать, что бы в скрипте был функционал: удалять из файла параметров параметр который был взят виртуальным пользователем.

У меня есть скрипт AJAX(Click&Script) - вот его начало:

Action()
{
	web_browser("TIMSSLogin.aspx", 
		DESCRIPTION, 
		ACTION, 
		"Navigate=http://100.100.100.100/ECTS/Anonymous/TIMSSLogin.aspx", 
		LAST);

	lr_think_time(2);

	web_edit_field("lStudentLogin$UserName", 
		"Snapshot=t1.inf", 
		DESCRIPTION, 
		"Type=text", 
		"Name=lStudentLogin$UserName", 
		ACTION, 
		"SetValue={TimssID}", 
		LAST);

//----------------
//Сюда хочу вставить код редактирования файла параметров
//----------------

...

И код редактирвоания код делает следующие: открывает файл ищет ID удаляет его, сохраняет файл.
typedef long time_t;

char *filename = "c:\\timssid.dat";
char *filenameTmp = "c:\\tmp.dat";

Action() {

	 long file, fileTmp, thetime;
	 int id, id2;
	 time_t t;
	 char s[32];

	 /* Create a new file */
	 if ((file = fopen(filename, "r" )) == NULL) {

		  lr_output_message("Unable to create %s", filename);
		  return -1;
	 }
	  if ((fileTmp = fopen(filenameTmp, "w" )) == NULL) {

		  lr_output_message("Unable to create %s", filenameTmp);
		  return -1;
	 }

	 /* Write the Vuser id and time */
	 lr_whoami(&id, NULL, NULL);
	 fprintf(file, "Vuser %d %ld", id, time(&t));

	 /* Now read what we've just written. Rewind to start of file */
	 fseek(file, 0, 0); /* 0 is SEEK_SET */
	 while(!feof(file))
	 {
	 
	 fscanf(file, "%s", &s);
	 if(strcmp(s, "11122256")!=0)
		fprintf(fileTmp, "%s\n", &s);
		//lr_output_message("%s ", s );
	 }
	 fclose(file);
	 fclose(fileTmp);

	 remove (filename);
	 rename (filenameTmp, filename);
	 remove (filenameTmp);

	 return 0; 
}

Я не знаю как за место "11122256" подставить TimssID.
Я не знаю как правильно вставить этот код в тело скрипта. Если вставляю код где это указано компилятор ругается.
  • 0
The system is not ideal.

#4 Dmitry_NJ

Dmitry_NJ

    Консультант

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

Отправлено 17 декабря 2008 - 23:39

2. Остался вопрос "как обнавлять файл параметров уникальными ID". В моём файле почти 30 000 ID. Хочу сделать, что бы в скрипте был функционал: удалять из файла параметров параметр который был взят виртуальным пользователем.

Зачем вам такие сложности? Вместо одного огроменного файла сделайте набор мелких по 20/30/60 записей и работайте с ними. Сделать copy/paste намного быстрее, чем писать и отлаживать такой fancy код. Ну если уж совсем хочется все автоматизировать ради автоматизации, то делайте эти pre-test приготовления отдельно, а не в самом VuGen скрипте. Иначе у вас во время работы нагрузочного сценария расходуется куча времени на вещи, абсолютно не относящиеся к самому предмету тестирования.
  • 0
Дмитрий Шевченко

HP Software


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

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