14

我使用 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 关于预处理器和后处理器的知识,但仍然不知道该怎么做。

4

2 回答 2

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}返回的值。

瞧,你去。如果您有更具体的问题,请告诉我。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}. 让我知道这是否适合你。我用虚拟采样器进行了测试,它对我有用。

于 2012-06-25T11:19:06.627 回答
4

这就是我从 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]*)

    所以表达式 ([a-zA-Z0-9]*) 负责在开始时遇到永久 url 后获取所有出现的字母和数字字符

    模板: $1$

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

    比赛编号(0 表示随机): 1

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

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

    请记住,您使用此模式 ${} 读取 JMeter 变量,因此${MY-CUSTOM-VARIABLE-NAME}在需要此值时使用

运行您的测试并检查您在请求的 url 中得到了什么MY-CUSTOM-VARIABLE-NAME使用正则 表达式进行实验以获得所需的输出。

这是关于这些东西的博文:http: //kenning.co.nz/development/extracting-variables-using-regular-expressions-in-jmeter/

并且总是有用的 JMeter 文档:http: //jmeter.apache.org/usermanual/component_reference.html#Regular_Expression_Extractor

于 2013-05-13T12:38:50.607 回答