首页 > 解决方案 > 云系统上的 JMeter 对网关的支付请求失败

问题描述

我有一个 JMeter 测试计划 (JMX),它模拟用户最后下订单和信用卡付款。

该脚本在我的机器上运行时运行良好。仅当从第三方 JMeter 在线服务(例如 Redline13、Blazemeter 和 Loadium)执行脚本时,对支付网关的请求才会失败。

第一个请求失败并出现以下错误。 在此处输入图像描述

我尝试了几种标题配置

  1. 发送没有任何预定义标头的请求
  2. 在标头管理器中显式设置用户代理 在此处输入图像描述
  3. Browser Compatible Headers在 HTTP 请求中 启用在此处输入图像描述

还对比了第三方服务商产生的请求和我机器产生的请求。还复制了标题并在本地计算机中使用它们。 在此处输入图像描述

它在本地机器上运行良好,但在来自第三方服务(Redline13、Blazemeter 和 Loadium)的请求中继续失败。

任何解决方案或方向都受到高度赞赏。

标签: jmeterjmeter-5.0blazemeter

解决方案


根据JMeter 项目主页

JMeter 不是浏览器,它在协议级别工作。就 Web 服务和远程服务而言,JMeter 看起来像一个浏览器(或者更确切地说,是多个浏览器);但是 JMeter 并不执行浏览器支持的所有操作。特别是,JMeter 不执行 HTML 页面中的 Javascript。它也不像浏览器那样呈现 HTML 页面(可以将响应视为 HTML 等,但时间不包含在任何示例中,并且一次只显示一个线程中的一个示例)。

所以这个消息是相当预期的。

该脚本在您的本地机器上运行而在云中不起作用这一事实很可能意味着无法从 Internet 访问支付网关(或其模拟)。

您可以通过将下一行添加到log4j2.xml文件(位于 JMeter 安装的“bin”文件夹中)来增加 HTTP 协议的JMeter 日志详细程度

<Logger name="org.apache.http" level="debug" />

并比较来自本地和云运行的jmeter.log 文件,它将包含请求和响应详细信息,您将能够比较并找出不同之处。


推荐阅读