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



All Articles