web-dev-qa-db-ja.com

Jmeter。 BeanShellポストプロセッサ

私はjmeterでBean Shellスクリプトを実行しましたが、その例、jmeterでどのように役立つか、どの方法を見つけることができませんでした。サンプラーの値を読み取ることを意味します。 beanshellポスト/プリプロセッサスクリプト。スクリプトを記述します。私はこれに苦労しています。実際の使用方法は何ですか?これで説明してください。それは私または他の人にとってもその使用法を理解するのに非常に役立ちます。

19
zeus.atr

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のお気に入りの組み込みコンポーネント ガイドを参照してください。

42
Dmitri T

リクエスト間で計算を実行する場合、Beanshellはjmeterでそれを実現するのに役立ちます。 Beanshell SamplerBeashell Pre Processor および Beanshell Post Processor があります。例として、図のようにスレッドグループを作成し、beanshellサンプラーを追加します。スクリプトの下に入力します

_var a=1;
var b=2;
var c=a+b;
log.info("sum="+c);
_

ログビューアを有効にして実行します([オプション]メニュー> [ログビューア])。

enter image description here

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スクリプトを使用して復号化するとします。

4
Nidheesh

たとえば、JMeterを使用して顧客を作成します。応答メッセージがCreatedの場合、結果をPassに設定します。それ以外の場合は、結果をFailに、失敗メッセージをNote:Creation failedに設定します。手順は次のとおりです。

  1. TTP Request Samplerを使用してhttp要求を組み立てます。
  2. その下にBSF Assertion Samplerを追加します。
  3. 使用する必要があるメソッドを http://jmeter.Apache.org/api/index.html から検索します。 Http Request Samplerを操作する必要があるため、パッケージorg.Apache.jmeter.protocol.http.samplerに直接移動します。これらの方法に精通している場合は、この手順をスキップしてください。

enter image description here

  1. BSFサンプラーを終了します。 prevは前のサンプル結果を表します enter image description here
1
wenwen

BeanShell(またはJSR223 PreProcessor/PostProcessor/Sampler)スクリプトエンジンを使用して、テストに必要なパラメーターを計算できます。これをいくつかの異なる種類の操作に使用します。

  • ディレクトリからアップロードするランダムファイルを選択する
  • アップロード/ダウンロード認証のためのhmacキーの計算(Swiftに必要)
  • 特定の環境の変数の設定(パラメーターに基づく)

ランダムファイルを選択し、ファイルの詳細を変数に書き込むサンプルスクリプトは、次の手順でアクセスできます。

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);
0
Sven