web-dev-qa-db-ja.com

sample1の応答を解析してJMeterで新しいサンプルを作成する方法

JMeterを使用してWebサーバーのパフォーマンステストを行っています。私のテストケースは次のとおりです。

step1: send file update request to server.
step2: server will return some files URL as html response
step3: client need to create new request with the URL returned in step2,thus need to parse 
the response of step2.

私はJMeterを初めて使用しますが、その実装方法がわかりません。私は基本的にプリプロセッサとポストプロセッサについてJMeterを学びましたが、それでもその方法についてはわかりません。

14
Simon Wang

さて、最初のステップの前に始めましょう:

Right click -> Add -> Threads (Users) -> Thread Group

  • ここで、実際の最初のステップ(RESTを使用する場合):

_Add -> Sampler -> Http Request_

下部に_Send Files With the Request_があります。それがあなたが求めたものであるならば、あなたは添付ファイルを加えることができます。

  • サーバーからの応答の抽出:

あなたの応答がこれであると仮定しましょう:

_<Response>
  <name>StackOverflow.com</name>
  <url>http://stackoverflow.com/questions/11186423/how-to-parse-response-of-sample1-to-create-new-sample-in-jmeter</url>
</Response>
_

これがあなたがすることです:

Right click on The http request you previously added (in step 1) -> Post Processors -> Xpath Extractor

_Reference Name_は、値を格納する変数の名前です。 urlという名前を付けましょう。さらに応答タグを取得した場合、_Xpath query_は_Response/url_または_//Response/url_になります。最初のものが必要な場合は_//Response[1]/url_など。

  • 手順1を繰り返し(サンプラーをコピーして貼り付け、不要になった_Xpath Extractor_を削除します)、_Server Name or IP_を以前に返された値である_${url}_に変更します。

そして、出来上がりです。より具体的な質問があれば教えてください。 Jmeterは楽しいです。

グレースごとのコメント:

_https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd;_を抽出したい

応答データから:

_<responseData class="Java.lang.String">&lt;html&gt;&#xd;
&lt;body&gt;&#xd;
ERROR=0&#xd;
MSG=N/A&#xd;
FILELIST=1555;1340778737370;1526545487;&#xd;
VERSION=1.002&#xd;
URL=https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd;
INTERVAL=0&#xd;
&lt;/body&gt;&#xd;
&lt;/html&gt;&#xd;
</responseData>
_

これはかなり簡単なはずです。 _Add a post processor -> Regular Expression Extractor_そして以下を入れてください:

_Reference Name : url 
Regular Expression : (http[\S]+)
Template : $1$
Match No. (0 for Random): 1
_

これで、url変数ができました。これは、テストで_${url}_としてさらに使用できます。それがあなたのために働くかどうか私に知らせてください。私はダミーサンプラーでテストしました、そしてそれは私のために働きます。

27
ant

これは、URLから値を抽出し、それを変数としてさらに渡して、次のリクエストに含まれるようにする方法です。

JMeterでのテストの作成に関するいくつかの素晴らしいスクリーンショットとより広い説明があります http://jmeter.Apache.org/usermanual/build-web-test-plan.html

Thread GroupHTTP Requestsを追加します

このHTTP Requests応答にいくつかのデータ(この例ではURL)が含まれている場合、それを抽出して後で使用します

じゃ、行こう:

  1. 最初のHTTPリクエストに移動し、その後、変数を使用して応答を受け取ります。

    追加->ポストプロセッサ->正規表現エクストラクタ

    このウィンドウセットでは:

    チェックする応答フィールド:URL

    参照名:MY-CUSTOM-VARIABLE-NAME

    好きなように変数の名前を定義します

    正規表現:permanent.part.of.url.com/([a-zA-Z0-9]*)

    so expression([a-zA-Z0-9] *)開始時に永続的なURLを満たした後、アルファベットと数字の文字のすべての出現を取得する責任があります

    テンプレート:$ 1 $

    この場合、1つの式のみが抽出され、読み取る必要があります

    マッチ番号(ランダムの場合は0):1

    この場合、一致するものは1つだけですが、さらに発生する場合は、どちらを使用するかを選択できます

  2. 次に、抽出した値を次のHTTPリクエストパス:some.otherに配置します。 url.com/${MY-CUSTOM-VARIABLE-NAME}

    このパターン$ {}でJMeter変数を読み取ることを忘れないでください。したがって、この値が必要な場合は常に${MY-CUSTOM-VARIABLE-NAME}を使用してください。

テストを実行し、MY-CUSTOM-VARIABLE-NAMEを使用してリクエストのURLで何を取得したかを確認します。正規表現を試して、目的の出力を取得します。

これについてのブログ投稿は次のとおりです。 http://kenning.co.nz/development/extracting-variables-using-regular-expressions-in-jmeter/

そして、常に役立つJMeterドキュメント: http://jmeter.Apache.org/usermanual/component_reference.html#Regular_Expression_Extractor

4
pbaranski