こんにちは !
私の問題を明確に説明しようとします。
コンテキスト
HTTPリクエストをサーバーに送信するJMeter TestPlanがあります。返されるエラーのさまざまなケースをアサートする Beanshell スクリプトがあります。
- 302 応答コード -> OK
- 200 応答コード -> ?
エラー 200 ごとに、応答データ文字列をチェックして、それがエラーか正しいケースかを確認します。( User don't have right rightsのようなユーザー エラーはOK ですが、Server is availableはERRORで、どちらも応答コードとして 200 を持っています。)
ここに私のテスト計画があります:
目標
1 つのアサーション スクリプトだけで複数のエラーが返されるため、ViewResultTree
. ただし、テストを起動するときは無効にし、TestPlan をリモートで起動します。
各エラーを手動でカウントするというアイデアがありました。サンプルはすべてアサーション スクリプトに入り、if
その内容に従って正しいブロックに移動します。各ブロックでいくつかの変数(実際には JMeter.properties)をインクリメントします。
int test = Integer.parseInt(props.getProperty("302"));
test++;
props.setProperty("302", ""+test);
次のように、テストプランの最後にこれらすべての変数を JFrame に表示したいと思います。
問題
私の問題は、TestPlan の前後に Beanshell スクリプトを起動する方法がわからないことです。
サンプルが send になる前に最初のスクリプトを開始して、すべてのプロパティ変数を 0 に初期化するだけです (それ以外の場合は、最後の TestPlan の値を保持します)。
そして、テスト計画が終了した後、すべての変数を含むフレームを表示する 2 つ目のフレームが必要です。(現在は JFrame ですが、このままではありません。)
テスト済みのソリューション
1) 私の最初のスクリプトでCounter
は、テスト計画の最初に (JMeter > Config Element > Counter) を 0 に設定しましたIf Controller
。
props.set("302","0");
「302」がすべての 302 応答コードをカウントするプロパティである Pre-Processor Beanshell があります。
それは正しく機能しますが、これを行う適切な方法があるかどうか知りたいです。
2) 次に、2 番目のスクリプトで aswell を使用しようとし${JMeterThread.last_sample_ok}
ましたIf Controller
が、期待どおりに動作しません。サンプルの後に配置すると、OK アサーションが開始され、テスト計画の最後に配置すると、呼び出されません。
すべてのスレッドが停止した後 (つまり、すべてのサンプルが終了した後)、beanshell スクリプトを 1 回実行するにはどうすればよいですか?
よろしくお願いします。すべてを理解していただければ幸いです。