そのようなシステムの単体テストと統合テストには、古き良き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クラスの停止
![画像](https://habrastorage.org/files/e34/bc8/fe3/e34bc8fe32d548a5b74696e10fbfeb83.png)
テスト計画を作成する
テスト計画には、ユーザー定義変数、スレッドグループ、JMSパブリッシャー、JMSサブスクライバー、結果ツリーの表示など、いくつかの基本的な要素が含まれています。
![](https://habrastorage.org/files/619/4f8/966/6194f8966bef471e8de75f5124e1a857.png)
User Defined Variablesエレメントには、MQインフラストラクチャに接続するためのパラメーターが含まれています。
![](https://habrastorage.org/files/8a3/c35/99e/8a3c3599e26146f7b7e1c65a2b8578f3.png)
JMS Publisher要素には、MQキュー(記録モード)を操作するための設定が含まれています。 キューに書き込むメッセージを指定するには、いくつかの方法があります。 この例では、簡単にするために、メッセージはスクリプトステップで直接公開されます。
![](https://habrastorage.org/files/548/726/c90/548726c903f24e21a976ac3a8b1b01aa.png)
JMSサブスクライバー要素には、MQキュー(読み取りモード)を操作するための設定が含まれています。
![](https://habrastorage.org/files/2be/629/a5d/2be629a5d6c645c9a6613627ba54bf90.png)
テストを実行して結果を表示する
テストが必要に応じて機能することを確認するために、使用するメッセージキューをクリアします。 テストがメッセージを読み取るキューに、「Hello、Habrahabr!」の内容を含むテストメッセージを配置します
![](https://habrastorage.org/files/a95/45e/b91/a9545eb91e654b80b5d4491dc47a7419.png)
スクリプトを実行します。
テストメッセージがQUEUE.INに正常にキューイングされたことがわかります。
![](https://habrastorage.org/files/769/737/d81/769737d8182f475c8cb8d703cb41389d.png)
また、QUEUE.OUTキューからのメッセージは正常に読み取られました。
![](https://habrastorage.org/files/f3b/725/3ad/f3b7253ad6fb4c78a1c1968e6a1d8fe7.png)
おわりに
この記事の主な目的は、JMeterがMQプロトコルをどのように使用できるかを示すことです。 それ以外の場合、テストスクリプトは、他のプロトコル(HTTPなど)で機能するサービスの機能テスト中と同じ方法で変更(アサート、変数、ファイルからの読み取りなど)できます。