Разделы портала

Онлайн-тренинги

.
Использование HTTP-соединений для VU-скриптов в IBM Rational Robot
02.10.2008 10:46

Авторский коллектив:

  • Вайбхав Теланг, инженер-разработчик ПО IBM
  • Гаррет Брауни, инженер-консультант по системным тестам IBM
  • Мортен Кристиансен, инженер-разработчик ПО IBM

Когда вы записываете диалоги клиент/сервер, Rational Robot создает скрипт виртуального пользователя (VU). Вы можете проиграть созданный скрипт в его первоначальном виде, либо отредактировать его каким-либо образом для достижения необходимой вам функциональности. Например, вы можете задать параметры имени сервера-хоста, чтобы использовать тот же самый скрипт на множественных хостах. В процессе записи VU Rational Robot следит за диалогом клиент/сервер и переводит необработанный поток сообщений в серию VU-команд для хранения в созданном скрипте. Все запросы клиента переводятся в серию VU-команд; поэтому один клик на web-страницу может привести к созданию тысячи строчек VU-кода. Это значительно усложняет процесс понимания, а впоследствии и редактирования VU-скриптов.

Источник публикации

Введение

IBM Rational Robot предоставляет возможность записать скрипты двумя способами:

  • в режиме GUI: основные скрипты SQA для функциональной автоматизации
  • в режиме VU: VU скрипты, используемые для автоматизации исполнения

Далее, мы рассмотрим более подробно, как обращаться с 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 в ваш браузер, то порядок действий, происходящих на заднем плане, будет следующим:

  1. Браузер проводит синтаксический анализ введенного URL.
  2. Браузер запрашивает DNS для IP-адреса хоста (www.ibm.com в данном примере).
  3. DNS отвечает, приводя IP-адрес хоста.
  4. Браузер устанавливает TCP-соединение с портом 80 на web-сервере с возвращенным IP-адресом.
  5. Браузер выдает запрос на HTTP-заголовок, за которым следует URL документа. Для этого запроса используется команда "get", чтобы пришел ответ с сервера на документ rational.html.
  6. Сервер отвечает HTTP-кодом в HTTP-заголовке (200, если все верно), за которым следует запрашиваемый документ HTML.
  7. TCP-соединение отключается.
  8. Браузер проводит синтаксический анализ HTML и отображает web-страницу.
  9. Для каких-либо встроенных запросов в полученном HTML на получение статичного содержимого, наприрмер GIF, CSS или JS-файлов, браузер устанавливает новое TCP-соединение с сервером и загружает файлы подобным образом.

Поэтому каждое изображение на 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;
Соединение ассоциируется с переменной ответа Server_connection.

http_header_recv ["Rational~002"] 200; /* OK */
HTTP-заголовок получен с HTTP-сервера.

http_nrecv ["Rational~003"] 100 %%; /* 20608 bytes */
HTTP-ответ получен.

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.

Ссылки по теме