2016-09-09 10 views
1

私は、2つのhttpリクエストを持つjMeterテストプランを持っています。 最初にサーバーにデータを送信します。それで大丈夫です。jMeterは条件でhttpリクエストを送信します

次に、2番目のタスクでは、サーバーから情報を取得する必要があります。応答はjsonで、taskStatusを含んでいます。これは「保留中」でも「完了」でもかまいません。ロジックは次のとおりです。 taskStatusが "保留中"の場合この http要求をある遅延(たとえば3秒)で自動的に繰り返す必要があります。 しかし、私はHttp Request Samplerでこれを行う方法が見つけられませんでした。誰かが私を助けることを願っています。 (HTTPリクエストサンプラーは必須ではありません)

答えて

2

HTTPリクエストサンプラーだけではできませんが、While Controllerがレスキューになります。このような

構造テスト:

enter image description here

  • リセット状態(ShellBeanサンプラー、またはその他のプログラム可能なサンプラー)が実行される最初の項目ですそのテストが始まります。テストの状態がリセットされるので、以前の反復では混同されません。あるよう

    enter image description here

  • 滞在を提出したが、はコントローラながら移動を取得し、今それに接続されているポストプロセッサを持っている:それがないすべてがあります。一緒にこれらの2つの要素(コントローラおよびポストプロセッサが、は、ループ内での実行を取得し、そのループは、すぐにステータスが「完了」になるとして存在していることを確認します。だから、

  • コントローラはこのように見えますが:それはすなわち

    enter image description here

    は(​​)

  • 変数「ステータス」の値をチェックし、ステータスが「行って」されていない場合にのみ、ループに入ります
  • 最後に、実行するたびに${Status}の変数を更新する必要があります。を取得します。を取得します。これはによって行われます。からステータスを抽出します。ポストプロセッサの場合、私はあなたの結果がどのように見えるかは言いませんでしたので、具体的にはできませんが、基本的にステータスを抽出するように設定する必要があります( 'ペンディング'または '完了'のいずれかを変数${Status}に保存してください)。

    enter image description here

だからここには方法の例です:それはこのように見えるかもしれません(単なる例、あなたの構文、またはポストプロセッサのも、タイプは応答のタイプに応じて、異なる場合があります)それだけで数回繰り返した後、[完了]受信していた場合には、このテストでは、実行します:

enter image description here

1

長い話を短くして(擬似コードで):

Make Submit request 
Make Retreive request and extract respopnse to varialbe taskStatus 
While tastSTatus != 'done' 
    Make Retreive request and extract respopnse to varialbe taskStatus 

短い(JMeterの)での長い話:SubmitRequestwhileControllerRetreiveRequestにReceiveRequest rigth内部

にReceiveRequest - 対等であり、内部に同じ正規表現が含まれています。理論的には、唯一の違いは、ConstantTimerです。

enter image description here

関連する問題