Запись скриптов в LR
#1
Отправлено 02 марта 2012 - 04:20
Добрый день всем, я начинающий тестировщик...
Часто приходится нагружать веб, хотелось бы получше разобраться в вопросе, как правильно записывать скрипты, и как это может влиять на результаты нагрузки.
1. я сейчас использую простой способ с авторизацией одного виртуального пользователя и записью одноо скрипта(и дальше эмулируется работа 50-100), а если входить будут 50 виртуальных пользователей и выполнять один и тот же сценарий, как это может повлиять например на время отклика? Или правильнее делать, что будут входить 50 пользователей и у каждого из них будет свой сценарий.
2. При записи скрипта робот сам расставляет задержки внтури транзакций (ну видимо то время которое реально было потрачено на загрузку каких либо компонентов), далее я ручками удаляю эти задержки и проставляю их перед транзакцией (для того чтобы замерить время отклика конкретной операции), например, по 10 сек. Или все таки нужно учитывать то время которое записывал робот.
Заранее спасибо.
#2
Отправлено 02 марта 2012 - 08:05
Привет!Запись скриптов в LR.
Добрый день всем, я начинающий тестировщик...
Часто приходится нагружать веб, хотелось бы получше разобраться в вопросе, как правильно записывать скрипты, и как это может влиять на результаты нагрузки.
1. я сейчас использую простой способ с авторизацией одного виртуального пользователя и записью одноо скрипта(и дальше эмулируется работа 50-100), а если входить будут 50 виртуальных пользователей и выполнять один и тот же сценарий, как это может повлиять например на время отклика? Или правильнее делать, что будут входить 50 пользователей и у каждого из них будет свой сценарий.
2. При записи скрипта робот сам расставляет задержки внтури транзакций (ну видимо то время которое реально было потрачено на загрузку каких либо компонентов), далее я ручками удаляю эти задержки и проставляю их перед транзакцией (для того чтобы замерить время отклика конкретной операции), например, по 10 сек. Или все таки нужно учитывать то время которое записывал робот.
Заранее спасибо.
Стоит всё-таки начать с основ, что такое параметризация.. зачем она нужна в скриптах.. У вас бизнес задачи какие? Какие пути следования пользователей по сайту? Сделайте несколько скриптов с разными сценариями, параметризируйте их и вперёд.. Также играет роль время нагрузки (если вы грузите реальную систему).. загрузка сети в разное время - разная.
По второму вопросу.. тут вообще либо я не понял описания, либо какая-то путаница.. что такое think time более-менее понятно? Если нет, тогда стоит поискать материал по этому вопросу. Чтобы замерить время отклика конкретной операции не нужно проставлять задержки перед транзакциями..
#3
Отправлено 02 марта 2012 - 10:16
1. Вопрос в том стоит ли тратить время на параметризацию и запись нескольких скриптов, или не париться и записывать один скрипт и использовать одного виртуального пользователя. Мне просто сейчас интересно эмулируется одинаковая нагрузка на приложение в 1-м и во 2-м случае?
2. Как грамотно пользоваться задержками между транзакциями.
3. Я так понимаю основная характеристика при оценке производительности приложения - это время отклика операции, вот и соотвественно надо же как то выявлять эти проблемы. Т.е если я вижу высокое время отклика на какой то операции, я делаю выводы что нужно оптимизировать запрос. Отсюда и вытекают вопросы а правильно ли я записываю скрипт, я правильно ли я расставляю задержки. Т.е когда записывается скрипт, задержки как раз таки проставляются внутри транзакций и как результат в отчете мы видим очень большое время. Я думаю это может привести к неправильной оценке результа. Вот просветите по этому вопросу. Если я ошибаюсь, то поправьте.
#4
Отправлено 02 марта 2012 - 11:06
Во втором случае вы получаете более реальную нагрузку на сервер, более приближенную к тому, что будет происходить при работе пользователей с вашим сайтом.1. Вопрос в том стоит ли тратить время на параметризацию и запись нескольких скриптов, или не париться и записывать один скрипт и использовать одного виртуального пользователя. Мне просто сейчас интересно эмулируется одинаковая нагрузка на приложение в 1-м и во 2-м случае?
Во втором случае вы получаете больше информации о том, что происходит, потому как зацепите больше частей сайта (если сайт достаточно большой). Например, какой-то запрос. вообще никогда не создастся при работе вашего скрипта, и, возможно, именно он - самый тормознутый, так сказать слабое звено системы.
Первый вариант оправдан разве что, если сайт маленький.. или если вам надо очень быстро сделать тест (да и то - тут сомнительно).
В моём понимании вводить искусственные задержки между транзакциями вообще не нужно, а зачем?2. Как грамотно пользоваться задержками между транзакциями.
Время выполнения транзакции - обычно это и есть та характеристика, которую пытаются получить при нагрузочном тестировании. Нет, ну плюс ряд других конечно, но ни одна из них не является временем между транзакциями.
Вот ситуация, вы убираете задержки в транзакциями, нагружаете 1к пользователями и сервер загибается. Проблема? - Проблема!3. Я так понимаю основная характеристика при оценке производительности приложения - это время отклика операции, вот и соотвественно надо же как то выявлять эти проблемы. Т.е если я вижу высокое время отклика на какой то операции, я делаю выводы что нужно оптимизировать запрос. Отсюда и вытекают вопросы а правильно ли я записываю скрипт, я правильно ли я расставляю задержки. Т.е когда записывается скрипт, задержки как раз таки проставляются внутри транзакций и как результат в отчете мы видим очень большое время. Я думаю это может привести к неправильной оценке результа. Вот просветите по этому вопросу. Если я ошибаюсь, то поправьте.
Запускаете 1к реальных пользователей - сервер подгружен.. но справляется.. почему? Потому что реальный пользователь не может нажать на объект, который он ещё не видит.. а ЛР - легко! Если убрать естесственные задержки, ЛР может оооочень быстро слать запросы на сервер (собственно DDos-ить), это ж программа.
Далее разовьём ситуацию - у вас на сайте могут быть постоянные пользователи (давног к вам заходят), они будут работать быстрее (задержка "думания" пользователя следовательно - ниже), а есть новенькие, которые тоже делают эти действия, но задержка у них выше.. пока прочитают текст, пока поймут куда им жать и прочея. Поэтому выше я писал о необходимости создавать скрипты с разными "ролями".
Как-то так.. много нюансов, но в принципе.. более-менее подробно :) Если чего не понятно, уточняй.. вдруг я чем помогу.. может и эксперты подтянутся ;)
#5
Отправлено 02 марта 2012 - 11:15
В этом нет необходимости: достаточно для сценария в контроллере в Run-Time Setting for Script в разделе ThinkTime выбрать Ignore think time (по аналогии с настройками для скрипта в Virtual User Generator)..... далее я ручками удаляю эти задержки ....
Тогда все задержки скрипта будут игнорироваться при выполнении сценария в контроллере.
#6
Отправлено 02 марта 2012 - 11:21
#7
Отправлено 05 марта 2012 - 04:23
В этом нет необходимости: достаточно для сценария в контроллере в Run-Time Setting for Script в разделе ThinkTime выбрать Ignore think time (по аналогии с настройками для скрипта в Virtual User Generator).
.... далее я ручками удаляю эти задержки ....
Тогда все задержки скрипта будут игнорироваться при выполнении сценария в контроллере.
А какая у Вас версия LR?
Я так понимаю задержки, все такие нужны, нам же нужно сэмулировать боле-менее реальную работу пользователей. Другое дело, что если их не убирать из тела транзакций, в отчете получается большое время отклика, поэтому я их и выношу за рамки транзакции. И как по Вашему нужно замерять время отклика конкретной операции, может еще какие то возможности инструмента есть?
#8
Отправлено 05 марта 2012 - 05:45
Во время работы скрипта возникают ошибки:
Action.c(219): Error – 27995: Requested link (“Text = Поиск”) not found
В скрипте строка, на которой падает данная ошибка, выглядит следующим образом:
web_link("Поиск",
"Text=Поиск",
"Snapshot=t5.inf",
LAST);
Решение проблемы: необходимо перезаписать скрипт так, чтобы нажатие на ссылку записывалось в другом виде, например,
web_url("index.php_2",
"URL=http://хххххх-ххх.ххххххх.хх/ххх/index.php?show=bill_search",
"Resource=0",
"RecContentType=text/html",
"Referer=http://хххххх-ххх.ххххххх.хх/ххх/index.php?",
"Snapshot=t3.inf",
"Mode=HTML",
LAST);
return 0;
Кто то может уже разбирался с такой проблемой, в чем принципиальное отличие 1-го способа от второго. Почему в первом случае падают ошибки при прогоне скрипта, а во втором нет. Или это косяк LR?
#9
Отправлено 05 марта 2012 - 08:21
Еще такой вопрос.
Во время работы скрипта возникают ошибки:
Action.c(219): Error – 27995: Requested link (“Text = Поиск”) not found
В скрипте строка, на которой падает данная ошибка, выглядит следующим образом:
web_link("Поиск",
"Text=Поиск",
"Snapshot=t5.inf",
LAST);
Решение проблемы: необходимо перезаписать скрипт так, чтобы нажатие на ссылку записывалось в другом виде, например,
web_url("index.php_2",
"URL=http://хххххх-ххх.ххххххх.хх/ххх/index.php?show=bill_search",
"Resource=0",
"RecContentType=text/html",
"Referer=http://хххххх-ххх.ххххххх.хх/ххх/index.php?",
"Snapshot=t3.inf",
"Mode=HTML",
LAST);
return 0;
Кто то может уже разбирался с такой проблемой, в чем принципиальное отличие 1-го способа от второго. Почему в первом случае падают ошибки при прогоне скрипта, а во втором нет. Или это косяк LR?
в качестве одной из причин может быть отсутствие опции "Ковертировать в/из UTF-8". При выключенной опции LoadRunner не может найти русский текст в ответе сервера. Принципиальная разница, как мне кажется (но точно не уверен), в том, что web_link заставляет LoadRunner найти в тексте ответа ссылку с указанным текстом, распарсить ее, определив ее url и выполнить собственно тот же web_url с полученным адресом. Т.е., в одном случае LoadRunner сам выдергивает URL из ответа сервера, а во втором нужно самостоятельно указать адрес. Какой вариант удобнее, это уже философский вопрос.
По опции конвертирования, она включается в Run-time settings (вложение)
Прикрепленные файлы
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных