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

Великі розподілені інформаційні системи часто складаються з більш дрібних модулів (підсистем) і розробляються групами програмістів з використанням різних платформ і підходів. Часто, обмін даними в таких системах відбувається в асинхронному режимі і переважно використання проміжного програмного забезпечення, орієнтованого на обробку повідомлень (англ. 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%\java\bin>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(ЧЕРГА.IN)
InitCtx> DEF Q(QUEUE.OUT) QMGR(TEST.QM) QUEUE(ЧЕРГА.OUT)
InitCtx> end
Зупинка класів WebSphere MQ для адміністрування JMS

image

Створення тест-плану

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



Елемент User Defined Variables містить параметри підключення до MQ інфраструктурі.



Елемент JMS Publisher містить налаштування для роботи з MQ чергою (режим запис). Є кілька способів вказати, яке повідомлення повинно бути записано в чергу. У даному прикладі для простоти повідомлення публікується безпосередньо в кроці сценарію.



Елемент JMS Subscriber містить налаштування для роботи з MQ чергою (режим читання).



Запуск тесту і перегляд результатів

Щоб перевірити, що наш тест працює так як потрібно очистимо черги повідомлень, з якими будемо працювати. В ту чергу, з якої тест буде читати повідомлення, помістимо тестове повідомлення з вмістом «Hello, Habrahabr!»



Тепер запустимо наш сценарій.
Бачимо, що тестовій повідомлення успішно поміщено в чергу QUEUE.IN.



Також, успішно вичитане повідомлення з черги QUEUE.OUT.



Висновок

Основний задум статті, показати, як JMeter може працювати з протоколом MQ. В іншому, сценарії тестування можуть модифікуватися (робота з Assert'ами, змінними, читання з файлу і т. д.) так само, як при функціональному тестуванні сервісів працюють за іншими протоколами (наприклад, HTTP).

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.