2016-12-28 5 views
0

特定の値に達するとテストプランを作成しようとしていますが、いくつかの機能が実行されます。テスト計画は、ループで実行されている複数のスレッドで構成されており、何らかの条件が満たされたらHTTPリクエストを発行したいと考えています。インデックスとプロパティの更新でループするJMeter

私のテストでは、論理が複数のスレッドでループしており、条件が満たされたとき(条件が10秒ごとに満たされたとき)、繰り返し処理が必要です前回の反復から保存する値 - 私が定義した値は、プロパティ(user.properties) - startIndex = 0(0に初期化)です。 は、だから私はそれが条件だWhile Controllerはこのようなものです作った:

${__javaScript(${__P(startIndex,)}<=${currBulk},)}

そして、私はしばらくの内側startIndex値に依存HTTPリクエストが、ときstartIndex<=currBulk変数に実行されることを期待します。 While Controllerインサイド

HTTPリクエストは、すべてのインデックスがカバーされるまで、解雇されるようにすべきである、と私はBeanShell PostProcessor内でこのようにそれを書いた:だから

int startIndexIncInt = Integer.parseInt(props.getProperty("startIndex")); //get the initiated index of the loop 
startIndexIncInt = startIndexIncInt + 1; //increment it and see if needed to fire the request again, by the original While condition 
vars.put("startIndexIncIntVar", String.valueOf(startIndexIncInt)); 
props.put("startIndex",vars.get("startIndexIncIntVar")); //the property incremental and update 

、私は次の順序でのようなことにそれを設計し(10秒後)新しいcurrBulk(私のテスト計画によって常に更新される)と比較される更新済みのstartIndexがあります。 そして、私はちょうどそれをやりました。

startIndexIncInt = Integer.parseInt(props.ge . . . '' : Typed variable declaration : Method Invocation Integer.parseInt 

私が定義されてもvar startIndexIncIntVarがsettedされていないことは言うまでもない(私はデバッグサンプラー経由でチェックする):私のようなエラーを受信し続けます。 また、私の問題は時間を入力することではない、私の問題は基本的に私がインクリメントして私のHTTPリクエスト(while条件とbeanshellポストプロセッサスクリプト)の中で使うべき変数である

ただそれについての情報、私はそれは次のようになり擬似コードとしてそれを書いた場合:私はどんなのBeanShellスクリプトを見ることができないよう

答えて

1

を支援

startInc = 0 
----Test plan loop---- 
------ test logic, currBulk incremented through the test----- 
if(time condition to enter while){ 
    while (startIndex <= currBulk){ 
    Send HTTP request (the request depends on startIndex value) 
    startIndex++ 
    } 
} 

してくださいあなたのstartIndexプロパティに問題があるように思われますエラー、コードは良いですので私の期待はそのstartIndexプロパティです設定されていないか、整数にキャストできません。あなたは2つの方法であなたのBeanShellスクリプトの問題についての方法より多くの情報を得ることができます。

  1. は、スクリプトの先頭にdebug()コマンドを追加します - あなたは、コンソールウィンドウにデバッグ出力の多くが表示されます。
  2. ようtry block内にコードを入れてください:

    try { 
        int startIndexIncInt = Integer.parseInt(props.getProperty("startIndex")); //get the initiated index of the loop 
        startIndexIncInt = startIndexIncInt + 1; //increment it and see if needed to fire the request again, by the original While condition 
        vars.put("startIndexIncIntVar", String.valueOf(startIndexIncInt)); 
        props.put("startIndex", vars.get("startIndexIncIntVar")); //the property incremental and update 
    } catch (Throwable ex) { 
        log.error("Beanshell script failure", ex); 
        throw ex; 
    } 
    

    あなたはのJMeterに問題の原因を見ることができますこの方法で。

は実際に、あなたがCounter試験要素または__counter()機能のような組み込みコンポーネントを使用して行うことができる変数をインクリメントするようoverscriptingされていることが表示されますファイルログ。ドメインの詳細については、How to Use a Counter in a JMeter Testの記事を参照してください。

関連する問題