2011-08-17 297 views
4

希望这是JMeter测试的常见问题。如何在JMeter中动态设置HTTP Referer头文件?

我通过JMeter设置代理服务器,在我们的开发环境中'记录'一个测试用例。这工作得很好,我设置了一些'HTTP请求默认值'全局设置默认的'服务器名称或IP'和'协议'。

既然在DEV上完成了测试,我们已经将代码移动到我们的QA服务器以进行更多测试 - 并且我认为我只需在默认情况下更改“服务器名称”,然后运行测试。

有一两件事我注意到的是,在我的测试情况下,每个采样,其它的头文件存在于“HTTP头经理”对于具体的采样 - 就像用户代理,缓存控制等。Referer header是唯一一个关注我的人,因为它仍然是'硬编码'成为DEV服务器。

有没有一种方法来动态设置它 - 以便我可以在多个环境中运行此记录的测试?这通常如何处理?

任何帮助表示赞赏!谢谢。

JG

回答

1

只有在HTTP请求中没有提供值时,Jmeter才会读取HTTP请求默认值。如果您在请求中将域留空,它将从请求中读取;否则它使用本地值。

作为一个快速修复,在文本编辑器中打开JMX文件,并用空白值替换域的所有实例。一旦在Jmeter中打开文件,将域值添加回HTTP Request Default配置元素。

为避免将来出现这种情况,请在录制前填写请求默认值。 Jmeter会自动过滤出符合默认值的值。

你也可以用变量和user defined values来做到这一点。小心你设定的默认值。例如,如果你说customerID = 123,任何时候Jmeter在录音时检测到'123',它都会用${customerID}代替它。所以,如果有值 '12345',JMeter会记录${customerID}45

+0

啊,还好 - 这是什么以及我谈论的线条更。所以,快速修复就是在JMX中搜索/替换。大。但是,在测试案例中说,我有http://www.domain1.com/mypath?myvariable=myvalue的引用值,我如何设置默认值为http://www.domain2.com/mypath?myvariable = myvalue,运行domain2的测试时?你可以给我一个例子吗? – tresstylez

+1

啊,好问题。我有两个HTTP默认请求元素 - 一个用于domain1,另一个用于domain2,通过禁用不使用的元素,我可以在两者之间切换。 (技术上我使用“用户定义的变量”,所以我可以有其他元素 - 管理员用户名/密码也在服务器之间改变) – BlackGaff

+0

太棒了。用户定义的变量和多个HTTP默认请求元素是我所需要的。谢谢你,先生。 – tresstylez

3
  1. 设置JMeter的变量在测试计划
  2. 的根命名server使用在HTTP请求的默认服务器名称字段
  3. 变量使用的HTTP标头经理引荐字段设置该变量

另外,如果您想将它从命令行传递到非GUI JMeter运行,您可以使用JMeter属性而不是变量运行

0

我这样做:

  • 创建用户定义的变量命名SRVNAME和SRVPORT

  • 改变HTTP参照在JMX文件中的值是这样的:

<elementProp name="Referer" elementType="Header"> 
    <stringProp name="Header.name">Referer</stringProp> 
    <stringProp name="Header.value">http://${SRVNAME}:${SRVPORT}/SomePage.html?querystring=blah</stringProp> 
</elementProp> 
  • 分配的值与覆盖变量,这样,性能可通过命令行提供:
${__P(srvname,www.defaultserver.org)} 
${__P(srvport,80)} 
  • 用于HTTP请求默认值的变量也是如此,在“服务器名称或IP“和”端口号“文本框。

希望这有助于