4

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

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

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

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

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

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

jg

4

3 回答 3

3
  1. server设置以测试计划根命名的 JMeter 变量
  2. 在 HTTP 请求默认服务器名称字段中使用该变量
  3. 在 HTTP Header Manager Referer 字段设置中使用该变量

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

于 2011-08-18T07:19:15.320 回答
3

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

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

为避免将来出现这种情况,请在记录之前填写请求默认值。Jmeter 将自动过滤掉与默认值匹配的值。

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

于 2011-08-18T16:59:56.043 回答
0

我这样做了:

  • 创建名为 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-12-13T11:06:53.000 回答