如何解析sample1的响应以在JMeter中创建新样本

时间:2012-06-25 09:12:54

标签: 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,但仍然不知道如何做。

2 个答案:

答案 0 :(得分:27)

好的,让我们在第一步之前开始:

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 queryResponse/url//Response/url。如果你想要第一个//Response[1]/url等等......

  • 重复步骤1(复制/粘贴采样器并删除不再需要它的Xpath Extractor),并将Server Name or IP更改为${url},这是先前返回的值。

你去的是Voila。如果您有更具体的问题,请告诉我。 Jmeter很有趣。

Per Grace评论:

想要提取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}作为{{1}}。如果这对您有用,请告诉我。我用虚拟采样器进行测试,它对我有用。

答案 1 :(得分:4)

这就是我如何从url中提取一些值并将其作为变量进一步传递,以便下一个请求将包含它。

以下是关于在JMeter http://jmeter.apache.org/usermanual/build-web-test-plan.html

中进行测试的一些很好的截图和更广泛的描述

添加Thread GroupHTTP Requests

当这个带有某些数据的HTTP Requests响应时(在此示例中为URL),您希望在

之后提取它并将其提取出来

让我们走吧:

  1. 转到您的第一个 HTTP请求,然后您收到带有变量的响应:

    添加 - &gt; 后置处理器 - &gt; 正则表达式提取器

    在此窗口中设置:

    要检查的响应字段:网址

    参考名称: MY-CUSTOM-VARIABLE-NAME

    定义变量的名称

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

    所以表达 ([a-zA-Z0-9] *) 负责让所有人 在开始时遇到永久网址后出现字母和数字字符

    模板: $ 1 $

    在我们的案例中只提取了一个表达式,需要阅读

    比赛号码(0为随机): 1

    在这种情况下只有一个匹配,但如果发生更多匹配,则可以 选择使用哪个

  2. 现在将提取的值放入下一个 HTTP请求 路径: some.other.url.com / ${MY-CUSTOM-VARIABLE-NAME}

    请记住,您使用此模式$ {}读取JMeter变量,所以 只要您需要此值,就使用${MY-CUSTOM-VARIABLE-NAME}

  3. 运行您的测试,并使用MY-CUSTOM-VARIABLE-NAME检查您在请求的网址中获得了什么 尝试使用regexp来获得所需的输出。

    以下是有关此内容的博文: http://kenning.co.nz/development/extracting-variables-using-regular-expressions-in-jmeter/

    始终有用的JMeter文档: http://jmeter.apache.org/usermanual/component_reference.html#Regular_Expression_Extractor