我使用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,但仍然不知道如何做。
答案 0 :(得分:27)
好的,让我们在第一步之前开始:
Right click -> Add -> Threads (Users) -> Thread Group
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
等等......
Xpath Extractor
),并将Server Name or IP
更改为${url}
,这是先前返回的值。 你去的是Voila。如果您有更具体的问题,请告诉我。 Jmeter很有趣。
Per Grace评论:
想要提取https://192.168.100.46/updserver/download?action=signature_download&token=
响应数据:
<responseData class="java.lang.String"><html>
<body>
ERROR=0
MSG=N/A
FILELIST=1555;1340778737370;1526545487;
VERSION=1.002
URL=https://192.168.100.46/updserver/download?action=signature_download&token=
INTERVAL=0
</body>
</html>
</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 Group
和HTTP Requests
当这个带有某些数据的HTTP Requests
响应时(在此示例中为URL),您希望在
让我们走吧:
转到您的第一个 HTTP请求,然后您收到带有变量的响应:
添加 - &gt; 后置处理器 - &gt; 正则表达式提取器
在此窗口中设置:
要检查的响应字段:网址
参考名称: MY-CUSTOM-VARIABLE-NAME
定义变量的名称
正则表达式: permanent.part.of.url.com /([a-zA-Z0-9] *)
所以表达 ([a-zA-Z0-9] *) 负责让所有人 在开始时遇到永久网址后出现字母和数字字符
模板: $ 1 $
在我们的案例中只提取了一个表达式,需要阅读
比赛号码(0为随机): 1
在这种情况下只有一个匹配,但如果发生更多匹配,则可以 选择使用哪个
现在将提取的值放入下一个 HTTP请求
路径: some.other.url.com / ${MY-CUSTOM-VARIABLE-NAME}
请记住,您使用此模式$ {}读取JMeter变量,所以
只要您需要此值,就使用${MY-CUSTOM-VARIABLE-NAME}
运行您的测试,并使用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