如何解析Jmeter响应并发出新请求

时间:2012-07-03 07:47:31

标签: jmeter

我正在使用jMeter来测试Tomcat应用程序。我需要解析jMeter响应并发出第二个请求。第一个回答如下:

<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>

我需要提取“FILELIST”和“URL”变量并将它们注入新的URL:

https://192.168.100.46/updserver/download?action=signature_download&amp;token=1555;1340778737370;1526545487;&#xd;

我知道有一些后处理器可以做到这一点,但不知道如何做到这一点。顺便说一下,第二个请求会从Tomcat servlet下载一些文件,有没有办法让jMeter只下载流但不写入物理文件?这样我就可以对我的servlet进行负载性能测试。

2 个答案:

答案 0 :(得分:21)

好的,所以你已经知道如何从你的回复中提取网址了,我在之前的回答中描述了如何:

https://stackoverflow.com/a/11188349/169277

但在这里,我将扩展它。所以你有你的采样器,你已经得到了$ {url}。现在您需要FILELIST并组装新网址。

假设您已经有请求和网址提取器。添加新的Regular expression extractor

Right click on request sampler -> Post Processors -> Regular Expression Extractor

Reference Name : FILELIST
Regular Expression : FILELIST=(\S+)
Template : $1$
Match No. (0 for Random): 1

现在你有1个请求采样器和2个正则表达式提取器。您需要添加额外的后处理器才能组合新的URL。

Right click on request sampler -> Post Processors -> BSF PostProcessor

beanshell下的语言下拉列表中选择Script language,然后在大字段Script:中粘贴以下内容:

vars.put("NEW_URL", "${__javaScript('${url}'.replace('&#xd;'\,'${FILELIST}'))}");

现在你有${NEW_URL}可以在测试中进一步使用。

总有不止一种解决问题的方法,这一条线条看起来很丑陋,但却符合目的。

在我的测试中,结果是您所请求的(Debug Sampler):

url=https://192.168.100.46/updserver/download?action=signature_download&amp;token=&#xd;
FILELIST=1555;1340778737370;1526545487;&#xd;
NEW_URL=https://192.168.100.46/updserver/download?action=signature_download&amp;token=1555;1340778737370;1526545487;&#xd;

编辑:

我想我不明白你如何命名你的变量。但最终的结果是你在问题中描述的那个。请参阅附带工作示例的.jmx测试:

http://www.filefactory.com/file/1q7nfitmh4qd/n/so_11309469_jmx

这是一个jmeter .jmx文件,使用2.6+版本的jmeter

答案 1 :(得分:7)

capture部分回复,请使用Regular Expression Extractor

您可以使用ViewResultsTree侦听器在响应数据上测试正则表达式。只需在ViewResultsTree监听器左侧面板底部的下拉框中选择Regexp tester。