Автоматизированное тестирование сервисов, использующих протокол MQ с помощью JMeter

в 12:50, , рубрики: jmeter, mq, Тестирование IT-систем, Тестирование веб-сервисов

Крупные распределенные информационные системы зачастую состоят из более мелких модулей (подсистем) и разрабатываются группами программистов с использованием разных платформ и подходов. Часто, обмен данными в таких системах происходит в асинхронном режиме и предпочтительно использование промежуточного программного обеспечения, ориентированного на обработку сообщений (англ. Message-Oriented Middleware, MOM).

Для модульного и интеграционного тестирования таких систем удобно использовать старый добрый Apache JMeter.

Для примера выделим небольшой стандартный модуль такой системы. Допустим, есть некий адаптер, который читает XML сообщение из очереди входящих сообщений, выполняет преобразование структуры XML сообщения и публикует преобразованное сообщение в очередь исходящих сообщений. В качестве MOM, в данном случае, используется Websphere MQ 7.5.

Настройка JMerter

Для ручного тестирования такой системы можно использовать утилиту rfhutil, которая поставляется с Websphere MQ. Однако, если вариантов преобразования структуры XML документа много, то проверка таких изменений “руками” не оправдана. Есть большой риск не найти ошибку.

Для тест плана нам потребуются следующие элементы: User Defined Variables, Thread Group, JMS Publisher, JMS Subscriber. Для того, чтобы в JMeter появилась возможность использовать элементы JMS Publisher, JMS Subscriber необходимо добавить jar библиотеки в папку %jmeter_home%/lib/ext в зависимости от того, какое MOM вы используете.

В случае Websphere MQ 7.5 необходимые jar библиотеки находятся в директории %wmq_home%/java/lib.

Список необходимых библиотек:

  • com.ibm.mq.commonservices.jar
  • com.ibm.mq.headers.jar
  • com.ibm.mq.jar
  • com.ibm.mq.jmqi.jar
  • com.ibm.mq.pcf.jar
  • com.ibm.mqjms.jar
  • connector.jar
  • dhbcore.jar
  • fscontext.jar
  • jms.jar
  • jta.jar
  • mqcontext.jar
  • providerutil.jar

Необходимо создать папку %jmeter_home%/bindings и поместить туда файл .bindings, сгенерированный с помощью утилиты JMSAdmin, которая поставляется с Websphere MQ.

Создание файла .bindings

Файл .bindings содержит всю необходимую информацию для подключения к менеджеру очередей. Для того, чтобы создать файл .bindings для JMeter, нужно использовать утилиту JMSAdmin, которая поставляется с Websphere MQ. %WebSphere_MQ_home%javabin>JMSAdmin.bat

Запуск классов WebSphere MQ для администрирования JMS
InitCtx> DEF CF(LOCAL.QCF) QMGR(TEST.QM) TRANSPORT(CLIENT) HOSTNAME(localhost) PORT(1415)
InitCtx> DEF Q(QUEUE.IN) QMGR(TEST.QM) QUEUE(QUEUE.IN)
InitCtx> DEF Q(QUEUE.OUT) QMGR(TEST.QM) QUEUE(QUEUE.OUT)
InitCtx> end
Остановка классов WebSphere MQ для администрирования JMS

image

Создание тест-плана

Наш тест план содержит несколько базовых элементов: User Defined Variables, Thread Group, JMS Publisher, JMS Subscriber, View Results Tree.

Автоматизированное тестирование сервисов, использующих протокол MQ с помощью JMeter - 2

Элемент User Defined Variables содержит параметры подключения к MQ инфраструктуре.

Автоматизированное тестирование сервисов, использующих протокол MQ с помощью JMeter - 3

Элемент JMS Publisher содержит настройки для работы с MQ очередью (режим запись). Есть несколько способов указать, какое сообщение должно быть записано в очередь. В данном примере для простоты сообщение публикуется непосредственно в шаге сценария.

Автоматизированное тестирование сервисов, использующих протокол MQ с помощью JMeter - 4

Элемент JMS Subscriber содержит настройки для работы с MQ очередью (режим чтение).

Автоматизированное тестирование сервисов, использующих протокол MQ с помощью JMeter - 5

Запуск теста и просмотр результатов

Чтобы проверить, что наш тест работает так как нужно очистим очереди сообщений, с которыми будем работать. В ту очередь, из которой тест будет читать сообщения, поместим тестовое сообщение с содержимым “Hello, Habrahabr!”

Автоматизированное тестирование сервисов, использующих протокол MQ с помощью JMeter - 6

Теперь запустим наш сценарий.
Видим, что тестовой сообщение успешно помещено в очередь QUEUE.IN.

Автоматизированное тестирование сервисов, использующих протокол MQ с помощью JMeter - 7

Также, успешно вычитано сообщение из очереди QUEUE.OUT.

Автоматизированное тестирование сервисов, использующих протокол MQ с помощью JMeter - 8

Заключение

Основной замысел статьи, показать, как JMeter может работать с протоколом MQ. В остальном, сценарии тестирования могут модифицироваться (работа с Assert’ами, переменными, чтение из файла и т.д.) так же, как при функциональном тестировании сервисов работающих по другим протоколам (например HTTP).

Автор: darthkwisatzhaderach

Источник

* - обязательные к заполнению поля