2016-09-22 5 views
0

コントローラを使用して特定の応答を待つテストを書いています。 もっと正確に言えば、私はjmeterでメッセージを送信し、そのメッセージは「送信」状態になり、約30秒後に「受信済み」に変更が示されます。だからコントローラを使用して私はメッセージが受信する必要がある時間を取得しようとします。コントローラが要求に応じてスタックしてループしない間にJmeter

  1. だから私は "状態" 変数を作成し、$ {__のJavaScript( "$ {状態}" に彼のコントローラ条件しばらく値
  2. "未設定" の設定を与えるのindexOfは( "受信")==。 - 1))
  3. コントローラの中で、変更されたときに受信した状態を含むべきhttpリクエスト項目を追加します。
  4. httpリクエストでは、すべてのレスポンステキストを " 。+)」および参照名「State」
  5. httpリクエストで定数タイマーを5秒追加する

このテストを実行すると、http要求後にスタックされ、緑色で実行され、次に何も起こらず、ここで問題になることはありますか?

更新--------------------------------------------- ------------------------

Siunčiamas=

は別の何かをしようとしました送信します。

クラス= "ラベルプライマリラベル -

$ {__ JAVASCRIPT( "$ {状態}" == "Siunčiamas")}

及びREG発現抽出値に - に制御値中に変更それは今「ID =」parentSyncState ">(Siunčiamas)<

とコントローラは、私は状態変数値を与えている間、前に『Siunčiamas』を

それはhttpリクエストにstucksが、私は、それの後にデバッグサンプラーを追加しました5秒ごとに繰り返し続けます。しかし、正規表現抽出が必要な値を見つけず、 "Siunčiamas"と等しくないデフォルト値を返すまでコントローラは失敗するまでループするはずです。私はここに何かを得ていないのですか?

Screenshot

答えて

1

それがループされていない手段、コントローラが満たされていないが、trueを返さないで条件。

ちなみに、${__javaScript("${State}".indexOf("Received") == -1,)}は、StateReceivedが含まれていないとき条件が真であることを意味します。あなたはnot set yetStateを設定し、ため

  • indexOf戻り-1文字列が親(国)で発見されていない場合には

初めて、それは条件がtrueを返すところ、走った(のindexOfは-1を返します「設定されていない、まだ」と「受信」含まれていません)

私はこのテストを実行すると、それは は緑Aで実行されるHTTPリクエスト、後に立ち往生次に何も起こらず、何が問題になるのですか ここですか?

テストは停止したか、まだ実行中ですか?

  1. テストが中断された場合、コントローラが要求の送信を停止して出力されている間、その状態が失敗したとみなすことができます。 whileコントローラの全体的な実行時間は、 "Received"メッセージを取得するのに必要な時間(number of times http request has been sent* (http request response time + 5 seconds))を与えます。 注:コントローラを子として追加すると、全体の実行時間を得るためにトランザクションコントローラになります。
  2. テストがまだ実行されている場合は、テストデザインに問題があります。 5秒ごとにhttpリクエストをSENTする必要があります。

Debug Samplerを追加すると、Reg Ex Extractorを使用してState変数でどのような値が取得されたかを知ることができます。

以下は、シナリオの理解方法のスクリーンショットです。

enter image description here

あなたを助けるために、私たちとあなたのテスト計画を共有します。

+0

デバッグサンプラーを追加し、コントローラーのロジックが異なるテストを更新しました。 – safary

+0

HTTPキャッシュマネージャを削除して、試してください。 HTTPの可能性があります。Jmeterのキャッシュレスポンスが新鮮であるため、リクエストが送信されないため、IDはHTTPリクエストを送信しませんでした。私は同じシナリオをシミュレートし、正規表現の値が条件(真)と一致するので、 "HTTP Request"と "D:After Request"の両方を送信しています。 –

+0

最初にlogon-getを要求した後でキャッシュマネージャテストが停止していないのに、もう一度追加してテストが成功しました。問題コントローラーでいくつかの例を読んだあと、キャッシュマネージャーにチェックインしたので、 各繰り返しをクリアし、 キャッシュコントロール/期限切れのヘッダーを使用しているため、キャッシュマネージャの設定になっていたと思います... したがって、すべてがうまくいった。どうもありがとうございました! – safary

関連する問題