11. JMS トピックのテスト計画の構築¶
このセクションでは、 JMS プロバイダーをテストするためのテスト計画を作成する方法を学習します。5 つのサブスクライバーと 1 つのパブリッシャーを作成します。2 つのスレッド グループを作成し、それぞれを 10 回の繰り返しに設定します。メッセージの合計は、(6 スレッド) x (1 メッセージ) x (10 回繰り返す) = 60 メッセージです。テスト計画を作成するには、次の要素を使用します: Thread Group、 JMS Publisher、 JMS Subscriber、および Graph Results。
JMS に関する一般的な注意事項: 現在、2 つの JMS サンプラーがあります。1 つは JMS トピックを使用し、もう 1 つはキューを使用します。トピック メッセージは、一般に pub/sub メッセージングとして知られています。トピック メッセージングは、通常、メッセージがプロデューサーによってパブリッシュされ、複数のサブスクライバーによって消費される場合に使用されます。キュー メッセージングは、通常、送信者が応答を期待するトランザクションに使用されます。メッセージング システムは、通常の HTTP リクエストとはかなり異なります。HTTP では、1 人のユーザーが要求を送信し、応答を受け取ります。メッセージング システムは、同期モードと非同期モードで動作できます。JMS サンプラーには、JMS 実装の jar ファイルが必要です。たとえば、Apache ActiveMQ から。ActiveMQが提供するjarの一覧はこちらをご覧ください。
11.1 ユーザーの追加¶
最初のステップは、スレッド グループ 要素を追加することです。スレッド グループは、シミュレートするユーザーの数、ユーザーが要求を送信する頻度、送信する要求の数を JMeter に伝えます。
] メニュー を表示し、[ ]を選択して、ThreadGroup 要素を追加します。
Test Plan の下に Thread Group 要素が表示されます。要素が表示されない場合は、テスト計画要素をクリックしてテスト計画ツリーを「展開」します。
次に、デフォルトのプロパティを変更する必要があります。まだ選択していない場合は、ツリーでスレッド グループ要素を選択します。JMeter ウィンドウの右側のセクションにスレッド グループ コントロール パネルが表示されます (下の図 11.1 を参照)。
まず、スレッド グループにわかりやすい名前を付けます。名前フィールドにSubscribersと入力します。
次に、ユーザー (スレッドと呼ばれる) の数を5に増やします。
次のフィールドである Ramp-Up Period で、値を0 秒に設定します。このプロパティは、JMeter に各ユーザーの開始までの遅延時間を伝えます。たとえば、5 秒の Ramp-Up Period を入力すると、JMeter は 5 秒の終わりまでにすべてのユーザーの起動を終了します。したがって、5 人のユーザーと 5 秒のランプアップ期間がある場合、開始ユーザー間の遅延は 1 秒になります (5 ユーザー / 5 秒 = 1 秒あたり 1 ユーザー)。値を 0 に設定すると、JMeter はすぐにすべてのユーザーを開始します。
「 Forever 」というラベルの付いたチェックボックスをクリアし、「ループ数」フィールドに値10を入力します。このプロパティは、テストを繰り返す回数を JMeter に伝えます。ループ カウント値として0を入力すると、JMeter はテストを 1 回だけ実行します。JMeter でテスト計画を繰り返し実行するには、Forever チェックボックスを選択します。
このプロセスを繰り返して、別のスレッド グループを追加します。2 番目のスレッド グループについて、名前フィールドに「 Publisher 」と入力し、スレッド数を1に設定し、反復を10に設定します。
11.2 JMS サブスクライバーとパブリッシャーの追加¶
必要な jar ファイルが JMeter のlibディレクトリにあることを確認してください。そうでない場合は、JMeter をシャットダウンし、jar ファイルをコピーして、JMeter を再起動します。
まず、サンプラーJMS サブスクライバー をサブスクライバー要素に追加します ( )。次に、ツリーで JMS Subscriber 要素を選択し、次のプロパティを編集します。
- Name フィールドを「Sample Subscriber」に変更します。
- JMS プロバイダーがjndi.propertiesファイルを使用する場合は、チェックボックスをオンにします。
- InitialContextFactory クラスの名前を入力します。たとえば、ActiveMQ 5.4 の場合、値は「org.apache.activemq.jndi.ActiveMQInitialContextFactory」です。
- プロバイダーの URL を入力します。JNDI サーバーがある場合、これはその URL です。たとえば、デフォルト ポートを持つローカル マシン上の ActiveMQ 5.4 では、値は「tcp://localhost:61616」です。
- 接続ファクトリーの名前を入力します。詳細については、JMS プロバイダーのドキュメントを参照してください。ActiveMQ の場合、デフォルトは「ConnectionFactory」です。
- メッセージ トピックの名前を入力します。ActiveMQ 動的トピック (トピックを動的に作成) の場合、値の例は " dynamicTopics/MyStaticTopic1 "
です。
注: 起動時のセットアップとは、JMeter が名前変更の可能性なしにテストの開始時に宛先でリッスンを開始することを意味します。各サンプルのセットアップは、JMeter が各 JMS サブスクライバー サンプルを実行する前にリッスンを (再) 開始することを意味します。この最後のオプションでは、いくつかの JMeter 変数を使用して宛先名を指定できます。
- JMS プロバイダーで認証が必要な場合は、「必須」にチェックを入れ、ユーザー名とパスワードを入力します。たとえば、Orion JMS には認証が必要ですが、ActiveMQ と MQSeries には必要ありません。
- 「集計するサンプル数」に10を入力します。小さなメッセージは非常に迅速に到着するため、パフォーマンス上の理由から、サンプラーはメッセージを集約します。サンプラーがメッセージを集約しなかった場合、JMeter は追いつくことができません。
- 回答を読みたい場合は、チェックボックスをオンにします
- サブスクライバーには 2 つのクライアント実装があります。JMS プロバイダーが 1 つのクライアントでゾンビ スレッドを示している場合は、別のクライアントを試してください。
次に、サンプラーJMS パブリッシャー をパブリッシャー要素に追加します ( )。次に、ツリーで JMS Publisher 要素を選択し、次のプロパティを編集します。
- Name フィールドを「Sample Publisher」に変更します。
- JMS プロバイダーがjndi.propertiesファイルを使用する場合は、チェックボックスをオンにします。
- InitialContextFactory クラスの名前を入力します。たとえば、ActiveMQ 5.4 の場合、値は「org.apache.activemq.jndi.ActiveMQInitialContextFactory」です。
- プロバイダーの URL を入力します。JNDI サーバーがある場合、これはその URL です。たとえば、デフォルト ポートを持つローカル マシン上の ActiveMQ 5.4 では、値は「tcp://localhost:61616」です。
- 接続ファクトリーの名前を入力します。詳細については、JMS プロバイダーのドキュメントを参照してください。ActiveMQ の場合、デフォルトは「ConnectionFactory」です。
- メッセージ トピックの名前を入力します。ActiveMQ 動的トピック (トピックを動的に作成) の場合、値の例は「dynamicTopics/MyStaticTopic1」です。
注: 起動時のセットアップとは、JMeter が名前変更の可能性なしにテストの開始時に宛先との接続を開始することを意味します。各サンプルのセットアップは、各 JMS パブリッシャー サンプルを実行する前に JMeter が接続を (再) 開始することを意味します。この最後のオプションでは、いくつかの JMeter 変数を含む宛先名を使用できます。
- JMS プロバイダーで認証が必要な場合は、「必須」にチェックを入れ、ユーザー名とパスワードを入力します。たとえば、Orion JMS には認証が必要ですが、ActiveMQ と MQSeries には必要ありません。
- 「集計するサンプル数」に10を入力します。小さなメッセージは非常に迅速に到着するため、パフォーマンス上の理由から、サンプラーはメッセージを集約します。サンプラーがメッセージを集約しなかった場合、JMeter は追いつくことができません。
- パブリッシュするメッセージを取得するための適切な構成を選択します。サンプラーでメッセージをランダムに選択する場合は、メッセージをディレクトリに配置し、ブラウズを使用してディレクトリを選択します。
- メッセージの種類を選択します。メッセージがオブジェクト形式またはマップ メッセージの場合は、メッセージが正しく生成されていることを確認してください。
11.3 テスト結果を表示するためのリスナーの追加¶
テスト計画に追加する必要がある最後の要素は Listenerです。この要素は、HTTP 要求のすべての結果をファイルに保存し、データのビジュアル モデルを提示する役割を果たします。
Test Plan 要素を選択し、Graph Resultsリスナーを追加します ( )。次に、出力ファイルのディレクトリとファイル名を指定する必要があります。ファイル名フィールドに入力するか、[参照] ボタンを選択してディレクトリを参照し、ファイル名を入力します。