この記事では、Azure Load Testing で Apache JMeter ユーザー プロパティを構成して使用する方法について説明します。 ユーザー プロパティを使用すると、テスト設定を JMeter テスト スクリプトの外部に保持することで、テストを構成できます。 ユーザー プロパティのユース ケースは次のとおりです。
- アプリケーション エンドポイントが異なる複数のデプロイ環境で JMX テスト スクリプトを使用する必要があります。
- テスト スクリプトでは、スモーク テスト、ピーク時の負荷、またはソーク テストなど、複数のロード パターンに対応する必要があります。
- 結果ファイル形式などの JMeter 設定を構成して、既定の JMeter 動作をオーバーライドする必要があります。
Azure Load Testing では、標準の Apache JMeter プロパティ がサポートされており、ユーザー プロパティ ファイルをアップロードできます。 ロード テストごとに 1 つのユーザー プロパティ ファイルを構成できます。
または、 Azure Load Testing で環境変数とシークレットを使用して、 テストを構成可能にすることもできます。
注
Azure Load Testing は、特定の JMeter プロパティをオーバーライドし、これらのプロパティに指定した値を無視します。 Azure Load Testing によってオーバーライドされる JMeter プロパティの一覧について説明します。
[前提条件]
- アクティブなサブスクリプションを持つ Azure アカウント。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- Azure Load Testing リソース。 Azure Load Testing リソースを作成する必要がある場合は、ロード テストの作成と実行に関するクイックスタートを参照してください。
ロード テストに JMeter ユーザー プロパティ ファイルを追加する
ロード テストに .properties ファイルをアップロードすることで、JMeter テスト スクリプトのユーザー プロパティを定義できます。 Azure Load Testing では、ロード テストごとに 1 つの JMeter プロパティ ファイルがサポートされます。 追加のプロパティ ファイルは無視されます。
次のコード スニペットは、3 つのユーザー プロパティを定義し、 jmeter.save.saveservice.thread_name 構成設定を構成するユーザー プロパティ ファイルの例を示しています。
# peak-load.properties
# User properties for testing peak load
threadCount=250
rampUpSeconds=30
durationSeconds=600
# Override default JMeter properties
jmeter.save.saveservice.thread_name=false
Azure portal を使用してロード テストにユーザー プロパティ ファイルを追加するには、次の手順に従います。
Azure portal の Azure Load Testing リソースに移動します。
左側のペインで [テスト] を選択して、テストの一覧を表示します。
チェック ボックスをオンにして一覧からテストを選択し、[編集] を選択 します。 または、[テストの 作成 ] を選択して新しいロード テストを作成します。
[テスト計画] タブを選択します。
コンピューターからプロパティ ファイルを選択し、[ アップロード ] を選択してファイルを Azure にアップロードします。
[ファイルの関連性] ドロップダウン リストで [ユーザー のプロパティ] を選択します。
ロード テストのユーザー プロパティ ファイルとして選択できるファイルは 1 つだけです。
[ 適用] を選択してテストを変更するか、 確認と作成を選択し、[ 作成 ] を選択して新しいテストを作成します。
JMeter のプロパティを参照する
Azure Load Testing では、JMeter テスト スクリプト (JMX) でユーザー プロパティを参照するための組み込みの Apache JMeter 機能がサポートされています。 __propertyまたは__P関数を使用して、前にアップロードしたプロパティ ファイルからプロパティ値を取得できます。
次のコード スニペットは、JMX ファイル内のプロパティを参照する方法の例を示しています。
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Test home page" enabled="true">
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
<boolProp name="LoopController.continue_forever">false</boolProp>
<intProp name="LoopController.loops">-1</intProp>
</elementProp>
<stringProp name="ThreadGroup.num_threads">${__P(threadCount,1)}</stringProp>
<stringProp name="ThreadGroup.ramp_time">${__P(rampUpSeconds,1)}</stringProp>
<boolProp name="ThreadGroup.scheduler">true</boolProp>
<stringProp name="ThreadGroup.duration">${__P(durationSeconds,30)}</stringProp>
<stringProp name="ThreadGroup.delay"></stringProp>
<boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
</ThreadGroup>
または、JMeter ユーザー インターフェイスでプロパティも指定します。 次の図は、プロパティを使用して JMeter スレッド グループを構成する方法を示しています。
JMeter エラー ログをダウンロードして、ロード テスト中のエラーのトラブルシューティングを行うことができます。
次のステップ
- Azure Load Testing によってオーバーライドされる JMeter プロパティの詳細について説明します。
- 環境変数とシークレットを使用したロード テストのパラメーター化の詳細について説明します。
- 失敗したロード テストを診断する方法について説明します。