Использование HTTP-соединений для VU-скриптов в IBM Rational Robot |
02.10.2008 10:46 |
Авторский коллектив:
Когда вы записываете диалоги клиент/сервер, Rational Robot создает скрипт виртуального пользователя (VU). Вы можете проиграть созданный скрипт в его первоначальном виде, либо отредактировать его каким-либо образом для достижения необходимой вам функциональности. Например, вы можете задать параметры имени сервера-хоста, чтобы использовать тот же самый скрипт на множественных хостах. В процессе записи VU Rational Robot следит за диалогом клиент/сервер и переводит необработанный поток сообщений в серию VU-команд для хранения в созданном скрипте. Все запросы клиента переводятся в серию VU-команд; поэтому один клик на web-страницу может привести к созданию тысячи строчек VU-кода. Это значительно усложняет процесс понимания, а впоследствии и редактирования VU-скриптов. ВведениеIBM Rational Robot предоставляет возможность записать скрипты двумя способами:
Далее, мы рассмотрим более подробно, как обращаться с HTTP-соединениями в VU-скриптах Rational Robot. Если вы записываете свой первый VU-скрипт Rational Robot, вам необходимо прочесть статью IBM developerWorks под названием «HTTP VU-скрипты». Это поможет вам разобраться в записанных скриптах и других основных понятиях. VU-скрипты Rational RobotКогда вы записываете диалоги клиент/сервер, Rational Robot создает скрипт виртуального пользователя (VU). Вы можете проиграть созданный скрипт в его первоначальном виде, либо отредактировать его каким-либо образом для достижения необходимой вам функциональности. Например, вы можете задать параметры имени сервера-хоста, чтобы использовать тот же самый скрипт на множественных хостах. В процессе записи VU Rational Robot следит за диалогом клиент/сервер и переводит необработанный поток сообщений в серию VU-команд для хранения в созданном скрипте. Все запросы клиента переводятся в серию VU-команд; поэтому один клик на web-страницу может привести к созданию тысячи строчек VU-кода. Это значительно усложняет процесс понимания, а впоследствии и редактирования VU-скриптов. В следующем примере мы рассмотрим типичный обмен HTTP-сообщениями запрос/ответ, а затем соотнесем его с VU-скриптом, записанным с помощью Rational Robot. Обычно на web-сайте существует серверный процесс прослушивания на TCP-порте 80 (или на другом порте) для входящих запросов на соединение от клиентов. Например, если впечатать запрос на web-страницу http://www.ibm.com/rational.html в ваш браузер, то порядок действий, происходящих на заднем плане, будет следующим:
Поэтому каждое изображение на web-странице, означает, что должно существовать отдельное TCP-соединение, и повторяется один и тот же процесс. Теперь, когда вы знаете это фундаментальное понятие, длинный VU-код, созданный в скрипте Rational Robot, несомненно, имеет для вас больше смысла. VU-скрипты Rational Robot составлены из повторяющихся кодовых блоков, которые отражают все эти шаги. Эти кодовые блоки являются отдельными TCP-соединениями, установленными клиентом для выполнения HTTP запросов get и post. На рисунке 1 показан скриншот записанного VU-скрипта Rational Robot: Рисунок 1. VU-скрипт Rational Robot Как код VU-скрипта влияет на HTTP-соединенияДалее показано, как эти шаги соотносятся с соответствующими операторами машинной программы VU-скрипта, созданного Rational Robot: www_ibm_com = http_request ["Rational~001"] "www.ibm.com:80" TCP-соединение с www_ibm_com активировано, что открывает сетевое соединение от машины клиента с HTTP-сервером, чтобы послать http_request "Rational~001". Set Server_connection = www_ibm_com; http_header_recv ["Rational~002"] 200; /* OK */ http_nrecv ["Rational~003"] 100 %%; /* 20608 bytes */ http_disconnect(www_ibm_com); В записанном VU-скрипте будет целый ряд операторов, установленных сервером соединения, которые последовательно закрываются до того, как заканчивается скрипт. Инженеры по автоматизации могут выбрать или отредактировать скрипты, чтобы задать параметры, или ввести в работу заказные логические схемы, или добавить или удалить недействительные HTTP-запросы. Тем не менее, если вы редактируете скрипты, то необходимо обратить внимание на команды http_request и http_disconnect. Эти две команды выделяют и освобождают системные ресурсы для клиента или агентов Rational Test, поэтому вам следует объединять их в пары, иначе ваши скрипты могут привести к сбоям в соединениях или даже случайно заблокировать системные ресурсы. Поэтому очень важно запомнить, что каждый раз, когда вы используете оператор http_request в скрипте, чтобы открыть HTTP-соединение, вам нужен соответствующий оператор http_disconnect, который закрывает соединение. Выбор оптимального соотношенияЕсли оставлять HTTP-соединения в VU-скриптах открытыми, то это приведет к более значительным объемам занимаемой памяти в расчете на одного виртуального пользователя (VU), следовательно, слишком много памяти будет отводиться на машинах TestManager и Test Agent. Если закрывать каждое HTTP-соединение, то это приведет к эффективному использованию памяти, тем самым, помогая соизмерять большее число виртуальных пользователей с имеющимися ресурсными возможностями. На рисунках 2 и 3, в которые включены наблюдения, выполненные в ходе работы с IBM Rational TestManager и IBM Rational Test Agent, показаны результаты. Далее следуют снимки изображений с экрана монитора Windows Performance для rtsvui-процессов на одном из агентов Rational Test. Рисунок 2. Снимок скрипта виртуального пользователя, если есть незакрытые HTTP-соединения Рисунок 3. Снимок скрипта виртуального пользователя, если все HTTP-соединения правильно закрыты Примечание: Цифры 18 and 8 MB могут варьироваться от случая к случаю, в зависимости от скрипта и автоматизированных операций. Rational TestManager и Rational Test Agent также накладывают ограничения по наибольшему числу соединений, которые могут быть открыты одновременно. Число ограничений по умолчанию составляет 256 соединений. Если неэффективное редактирование скрипта приводит к достижению вами этого предела в любой момент во время ваших тестов, то вы можете увидеть сообщения об аномальном завершении VU на соответствующей закладке: "Failed to connect to "9.182.230.90:80" after 100 attempts: [24.7.5.4] Maximum number of allowed open connections (256) exceeded" Если общее число открытых HTTP-соединений достигает указанного ограничения на соединения на HTTP-сервере, то скорее всего вы увидите соединения, лимит времени которых истек. В результате чего ваш тест тоже закончится досрочно. ЗаключениеТеперь, когда вам стало более понятно, как IBM Rational Robot работает с HTTP-соединениями, вы знаете, какие меры предосторожности предпринять в процессе редактирования VU-скриптов, чтобы предотвратить сбои и разъединения. Если вовремя отслеживать предпосылки таких отказов, то это поможет вам распознать сбои в HTTP-соединениях в вашем VU-скрипте IBM Rational Robot. Ссылки по теме
|