【问题标题】:How to dynamically set the HTTP Referer header in JMeter?如何在 JMeter 中动态设置 HTTP Referer 标头?
【发布时间】:2011-08-17 20:10:16
【问题描述】:

希望这是 JMeter 测试的常见问题。

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

现在测试已在 DEV 上完成,我们已将代码移至 QA 服务器以进行更多测试 - 我认为我只需更改默认值中的“服务器名称”,然后运行测试即可。

我注意到的一件事是,对于我的测试用例中的每个采样器,该特定采样器的“HTTP Header Manager”中都存在其他标头——例如 User-Agent、Cache-Control、 Referer 标头是我唯一关心的标头,因为它仍然是“硬编码”为 DEV 服务器。

有没有办法动态设置它——以便我可以在多个环境中运行这个记录的测试?这通常是如何处理的?

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

jg

【问题讨论】:

    标签: windows-7 jmeter performance-testing


    【解决方案1】:

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

    作为一种快速修复,在文本编辑器中打开您的 JMX 文件并将域的所有实例替换为空白值。在 Jmeter 中打开文件后,将域值重新添加到 HTTP 请求默认配置元素中。

    为避免以后出现这种情况,请在录制前填写请求默认值。 Jmeter 会自动过滤掉匹配默认值的值。

    您也可以使用变量和user defined values 执行此操作。请注意您设置的默认值。例如,如果您说customerID = 123,那么任何时候Jmeter 在录制时检测到'123',它都会将其替换为${customerID}。所以,如果有值'12345',Jmeter 会记录${customerID}45

    【讨论】:

    • 啊,好吧——这更符合我所说的。因此,快速修复是在 JMX 中搜索/替换。伟大的。但是,假设在测试用例中我有一个引用值domain1.com/mypath?myvariable=myvalue,当运行 domain2 的测试时,如何将默认值设置为domain2.com/mypath?myvariable=myvalue?可以举个例子吗?
    • 啊,好问题。我有两个 HTTP 默认请求元素 - 一个用于 domain1,一个用于 domain2,我通过禁用我不使用的元素在两者之间切换。 (从技术上讲,我使用“用户定义的变量”,所以我可以拥有其他元素 - 管理员用户名/密码也会在服务器之间更改)
    • 太棒了。我需要的是用户定义的变量和多个 HTTP 默认请求元素。谢谢先生。
    【解决方案2】:
    1. 在测试计划的根目录下设置名为 server 的 JMeter 变量
    2. 在 HTTP 请求默认服务器名称字段中使用该变量
    3. 在 HTTP Header Manager Referer 字段设置中使用该变量

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

    【讨论】:

      【解决方案3】:

      我这样做了:

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

      • 将 jmx 文件中的 http referrers 值更改为:

      <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)}
      
      • 在“服务器名称或 IP”和“端口号”文本框中也使用了 HTTP 请求默认值中的变量。

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2012-03-23
        • 1970-01-01
        • 1970-01-01
        • 2018-11-30
        • 2017-01-03
        • 1970-01-01
        • 2011-12-16
        • 2010-12-08
        • 1970-01-01
        相关资源
        最近更新 更多