2012-03-06 8 views
0

をGETして、私は次のように提案を得ればそれが役に立つでしょう:私は次のことを実行するためにJUnitのサンプラーを使用のJMeter:HTTP続くHTTPのPOSTの負荷テストは、私は私のトランスポートライブラリの性能を評価しています

HTTP POSTテスト:HTTP POST要求を送信します。これによりDB書き込みが発生します。 POST + DB_WRITE操作では、すべてのパラメータ(スループット、平均応答時間)を全体的に評価する必要があります。このPOST要求への応答として、私は一意のIDを取得します。だから1000回成功したPOST要求を送ると、私は1000個のユニークなIDを持つでしょう。

私の次のテストケースでは、これらのユニークなIDをどのように使用して、作成したユニークIDごとにHTTP GETを実行することができますか。

HTTP POSTレスポンスを解析して一意のIDをファイルに書き込んで、そのファイルをHTTP GETテストに使用できます。しかし、問題は、私は10種類のスレッドのスレッドグループを作成する場合は、ファイルの書き込みに同期の問題があります。

結果をファイルシステムに記録するために使用できるPostProcessorはありますか?

答えて

0

同期に問題はありません(ファイルシステムによって解決されます)。すべてのスレッド(POST中)では、ファイルを開いて書き込みを行い、新しい行を追加する必要があります。ここでも、同期については心配しないでください。OSが対応します。

3

私の場合は、ファイルの使用を避けて、生成されたIDを読み取るように見えます。

ロジックは以下の通りです:

  1. あなたのPOSTリクエストを実行します。
  2. POSTから解析応答が返されました - 正規表現エクストラクターまたは要求に添付されたpost-processorを使用してIDを抽出します。
  3. 抽出されたIDを同じユニークなポストプロセッサ内のユーザー固有の/スレッド固有の変数に格納します。
    正規表現エクストラクターでこれを行う方法を以下に示します。${__javaScript('${username}'+'UnicID')}は、マルチユーザーの場合の干渉を避けるために、各ユーザー/スレッドごとに固有の変数を生成します。
    でも、$ {username}変数の代わりにthreadNum関数を使用することができます。
  4. POSTリクエストが正常に完了した場合、IDを抽出して変数に格納します.GETリクエストを実行すると、IDが抽出され、IDがparamとして使用されます。
    ${__V(${username}UnicID)}構造を使用して、以前に保存したIDを戻します。

また、Debug PostProcessorをPOST要求サンプラーに追加すると、生成された変数とその値を監視できます。

そうですね。

 
Thread Group 
Number of Threads = X 
Loop Count = N 
    . . . 
    HTTP Request POST 
     checkingReturnCode // Response Assertion 
     extractUniqueID  // Regular Expression Extractor (e.g.) 
      Reference Name = ${__javaScript('${username}'+'UnicID')} 
      Regular Expression = ... 
      Template = $1$ 
      Match No. = 1 
      Default Value = NOTFOUND 
    IF Controller   // execute GET only if POST was successful 
    Condition = ${JMeterThread.last_sample_ok} // you may change this to verify that variable with extracted ID is not empty 
     HTTP Request GET 
     param = ${__V(${username}UnicID)} 
    . . . 

は、これが役立つことを願っています。

+0

詳細な対応をありがとうございます。しかし、もう1つの質問、あなたが正しく言うことを理解すれば、単一のテストでHTTP POSTを行い、その後すぐにHTTP GETを行うでしょうか?しかし、私は一束のPOSTとGETの束を別々に測定したいですか、あなたが間違って言ったことを理解しましたか? @ Prasanna @ – Prasanna

+0

実行されたPOSTおよびGET要求は、同じスレッドグループ内で、または別のスレッドグループ内で、または異なるjmxファイル内でも1つずつ実行しても、すべての統計および特性が測定されます。したがって、要求特性を取得するためにリスナーをスクリプトに追加すると、上記の例のように、同じスレッドグループで1つずつ実行されても、POSTとGETの測定結果が個別に表示されます。 –

+1

この場合、POSTとGET要求の実行を分割する必要がある場合は、上記と同じメカニズムを使用できますが、2つのスレッドグループが使用できます。第1 POSTでは実行されIDが抽出され、第2 - GET送信IDをparamとして 2つのスレッドグループの場合、抽出されたIDを変数ではなくプロパティに追加して格納し、次にプロパティから値を読み取る必要があります - スレッドグループ間に値を格納する必要があります。 –

関連する問題