2 つの IP アドレス/サーバー名をヒットするために使用される Jmeter スクリプトがあります。現在、2 つのサーバー名をヒットするために 2 つの Jmeter インスタンスを使用しています。HTTP Request Default でのサーバー名/IP アドレスのパラメータ化のように、単一の Jmeter インスタンスでこれを行う方法はありますか?
2 に答える
面白い。これまで試したことはありませんが、リクエストのデフォルトで定義する動的な値は常に再評価されるようです。
したがって、ランダムな値に応じて、JavaScript のランダムと 2 つの文字列として定義できます。
${__javaScript((Math.random()<0.5)?'ALMA':'KORTE')}
計画と結果のスクリーンショット:
一般的に、名前を csv ファイルに入れ、CSV 構成要素を使用し、CSV にロールオーバーがあると言う方が良いでしょう。ベスト プラクティスからの引用:
16.5 ユーザー変数 一部のテスト計画では、ユーザー/スレッドごとに異なる値を使用する必要があります。たとえば、ユーザーごとに一意のログインが必要なシーケンスをテストする場合があります。これは、JMeter が提供する機能を使用して簡単に実現できます。
例えば:
コンマで区切られたユーザー名とパスワードを含むテキスト ファイルを作成します。これをテスト計画と同じディレクトリに配置します。テスト計画に CSV DataSet 構成要素を追加します。変数に USER および PASS という名前を付けます。適切なサンプラーで、ログイン名を ${USER} に、パスワードを ${PASS} に置き換えます。CSV データ セット要素は、スレッドごとに新しい行を読み取ります。
私はGábor Liptákの回答が好きですが、楽しみのために代替案を提供するつもりです.
DEV
とPROD
環境 (架空の環境) の両方でテストを実行するとします。DEV
に接続する場所host1
、PROD
接続する場所、host2
およびエンドポイントが同じである/myserviceendpoint
User Defined Variables
そのため、スレッド グループに追加することから始めます。2 つの変数を追加しましょう:
ENVIRONMENT
->${__P(environment,host1)}
と
ENDPOINT_PATH
->/myserviceendpoint
追加Http Request sampler
して内部Server Name or IP
に値を設定する${ENVIRONMENT}
と、それに応じて他のポートなどが変更されます。
したがって、デフォルトの環境はDEV
です。環境を変更して変数をインスタンスにPROD
追加BSF Preprocessor
および変更する場合。ENVIRONMENT
PROD
vars.put("ENVIRONMENT", "host2");
BSF Post Processor
したがって、テストでこれを無効/有効にして、 DEV
/を切り替えることができますPROD
。これは GUI モード用です。
これは、大きなテストがあり、GUI モードなしで jmeter を実行している場合に便利です。この部分はクール${__P(environment,host1)}
です。コマンド ライン経由でパラメータを渡さない場合はDEV
値が使用されます。それ以外の場合は、値を注入して環境を上書きできますDEV
(詳細はこちらを参照)。
jmeter -n -t yourtest.jmx -l testresults.xml -Jenvironment=host2 //running `PROD`
jmeter -n -t yourtest.jmx -l testresults.xml //running `DEV`
これがスクリーンショットのように見える方法です(テスト計画):
結果(わかりやすくするためにいくつかのサンプルを追加):
したがって、環境を切り替えるか、GUI を使用せずに実行し、コマンド ライン経由で注入します。ポート/エンドポイントなど、他の属性に対してもこれを行うことができます。