JMeterを使用したMQプロトコルを使用したサービスの自動テスト

大規模な分散情報システムは、多くの場合、小さなモジュール(サブシステム)で構成され、さまざまなプラットフォームとアプローチを使用するプログラマーのチームによって開発されます。 多くの場合、このようなシステムでのデータ交換は非同期モードで行われるため、メッセージ指向のミドルウェア(英語のメッセージ指向ミドルウェア、MOM)を使用することをお勧めします。

そのようなシステムの単体テストと統合テストには、古き良き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ディレクトリにあります。

必要なライブラリのリスト:


%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など)で機能するサービスの機能テスト中と同じ方法で変更(アサート、変数、ファイルからの読み取りなど)できます。

Source: https://habr.com/ru/post/J248453/


All Articles