私はjmeterでBean Shellスクリプトを実行しましたが、その例、jmeterでどのように役立つか、どの方法を見つけることができませんでした。サンプラーの値を読み取ることを意味します。 beanshellポスト/プリプロセッサスクリプト。スクリプトを記述します。私はこれに苦労しています。実際の使用方法は何ですか?これで説明してください。それは私または他の人にとってもその使用法を理解するのに非常に役立ちます。
Beanshell Post Processorの「スクリプト」セクションを見ると、以下が表示されます。
Script(variables: ctx, vars, props, prev, data, log)
ctx- JMeterContext の略で、JMeter Context APIへのアクセスを提供します(詳細についてはJavaDocを参照)。使用例:
int threadNum = ctx.getThreadNum(); // get current thread number
vars- JMeterVariables を表します。 vars
を使用すると、変数値を取得/設定できます。
String myvar = vars.get("myvar"); // get ${myvar} variable value and store it to myvar string
myvar = myvar + "something"; // append "something" to myvar
vars.put("myvar", myvar); // put new value into ${myvar} variable
props-JMeter Propertiesの略です。基本的に変数と同じですが、変数の可視性は現在のスレッドグループのみに制限され、プロパティは「グローバル」です
prev-前の短縮形 SampleResult 。まさにあなたが探しているもののようです。開始時間、終了時間、実行時間、待ち時間、URL、応答コード、応答メッセージなどを取得/設定できます。包括的な情報については、JavaDocを参照してください。使用例:
String code = prev.getResponseCode();
String message = prev.getResponseMessage();
data-親サンプラーの応答データを含むバイト配列
String samplerData = new String(data);
System.out.println(samplerData);
log-jmeter.logファイルに何かを出力するために使用できます
log.info("This line has been written by Beanshell Post Processor");
詳細と実際の例については、 BeanShellの使用方法:JMeterのお気に入りの組み込みコンポーネント ガイドを参照してください。
リクエスト間で計算を実行する場合、Beanshellはjmeterでそれを実現するのに役立ちます。 Beanshell Sampler 、 Beashell Pre Processor および Beanshell Post Processor があります。例として、図のようにスレッドグループを作成し、beanshellサンプラーを追加します。スクリプトの下に入力します
_var a=1;
var b=2;
var c=a+b;
log.info("sum="+c);
_
ログビューアを有効にして実行します([オプション]メニュー> [ログビューア])。
Beanshellスクリプトを使用して、jarのJava jmeter_folder/lib/extにある必要があります)メソッドを呼び出すことができます。
Beashell Pre Processorは、計算を実行し、要求とともに値を送信するために使用されます。送信前にユーザー名とパスワードを暗号化する場合を考えます。資格情報を提供し、beanshell/Javaメソッドを使用して暗号化し、beanshellスクリプト(vars.put("variablename",variablevalue)
)の変数として設定できます。 _http://test.com?parameter=${variablename}
_として要求する変数を追加できます。
同様に、応答の処理にはBeashell PostProcessorsが使用されます。応答から値を復号化し、値を抽出して(正規表現エクストラクターを使用)、beanshellスクリプトを使用して復号化するとします。
たとえば、JMeterを使用して顧客を作成します。応答メッセージがCreated
の場合、結果をPass
に設定します。それ以外の場合は、結果をFail
に、失敗メッセージをNote:Creation failed
に設定します。手順は次のとおりです。
TTP Request Sampler
を使用してhttp要求を組み立てます。BSF Assertion Sampler
を追加します。Http Request Sampler
を操作する必要があるため、パッケージorg.Apache.jmeter.protocol.http.sampler
に直接移動します。これらの方法に精通している場合は、この手順をスキップしてください。BeanShell(またはJSR223 PreProcessor/PostProcessor/Sampler)スクリプトエンジンを使用して、テストに必要なパラメーターを計算できます。これをいくつかの異なる種類の操作に使用します。
ランダムファイルを選択し、ファイルの詳細を変数に書き込むサンプルスクリプトは、次の手順でアクセスできます。
File folder = new File(vars.get("image_path"));
File[] imageFiles = folder.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return !pathname.isHidden();
}
});
Random rnd = new Random();
File selected = imageFiles[rnd.nextInt(imageFiles.length)];
String file = selected.getAbsolutePath();
String extension = file.substring(file.lastIndexOf('.')+1);
String mimetype = URLConnection.guessContentTypeFromName(file);
vars.put("CURRENT_FILE", file);
vars.put("FILE_EXT", extension.toUpperCase());
vars.put("MIME_TYPE", mimetype);