そのようなシステムの単体テストと統合テストには、古き良きApache JMeterを使用すると便利です。
たとえば、このようなシステムの小さな標準モジュールを選択します。 着信メッセージキューからXMLメッセージを読み取り、XMLメッセージの構造を変換し、変換されたメッセージを発信メッセージキューに発行する特定のアダプターがあるとします。 この場合、Websphere MQ 7.5がMOMとして使用されます。
JMerterセットアップ
そのようなシステムを手動でテストするには、Websphere MQに付属のrfhutilユーティリティを使用できます。 ただし、XMLドキュメントの構造を変換するためのオプションが多数ある場合、そのような変更を「手で」チェックすることは正当化されません。 間違いを見つけられないという大きなリスクがあります。
テスト計画には、ユーザー定義変数、スレッドグループ、JMSパブリッシャー、JMSサブスクライバーの要素が必要です。 JMeterでJMS Publisher要素を使用するには、使用するMOMに応じて、JMSサブスクライバーがjarライブラリを%jmeter_home%/ lib / extフォルダーに追加する必要があります。
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フォルダーを作成し、Websphere MQに付属のJMSAdminユーティリティーを使用して生成された.bindingsファイルを配置する必要があります。
.bindingsファイルを作成する
.bindingsファイルには、キューマネージャーに接続するために必要なすべての情報が含まれています。 JMeter用の.bindingsファイルを作成するには、Websphere MQに付属のJMSAdminユーティリティを使用する必要があります。 %WebSphere_MQ_home%\ java \ bin> JMSAdmin.bat
JMS管理のためのWebSphere MQクラスの実行
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
JMS管理のためのWebSphere MQクラスの停止

テスト計画を作成する
テスト計画には、ユーザー定義変数、スレッドグループ、JMSパブリッシャー、JMSサブスクライバー、結果ツリーの表示など、いくつかの基本的な要素が含まれています。

User Defined Variablesエレメントには、MQインフラストラクチャに接続するためのパラメーターが含まれています。

JMS Publisher要素には、MQキュー(記録モード)を操作するための設定が含まれています。 キューに書き込むメッセージを指定するには、いくつかの方法があります。 この例では、簡単にするために、メッセージはスクリプトステップで直接公開されます。

JMSサブスクライバー要素には、MQキュー(読み取りモード)を操作するための設定が含まれています。

テストを実行して結果を表示する
テストが必要に応じて機能することを確認するために、使用するメッセージキューをクリアします。 テストがメッセージを読み取るキューに、「Hello、Habrahabr!」の内容を含むテストメッセージを配置します

スクリプトを実行します。
テストメッセージがQUEUE.INに正常にキューイングされたことがわかります。

また、QUEUE.OUTキューからのメッセージは正常に読み取られました。

おわりに
この記事の主な目的は、JMeterがMQプロトコルをどのように使用できるかを示すことです。 それ以外の場合、テストスクリプトは、他のプロトコル(HTTPなど)で機能するサービスの機能テスト中と同じ方法で変更(アサート、変数、ファイルからの読み取りなど)できます。