Post 请求总是在 JMeter 中返回错误
Post request always returning error in JMeter
我正在使用 JMeter 创建负载测试。我正在尝试发出 Post 请求来创建新资源,但它总是以 500 错误响应,即使我发送与浏览器相同的 headers 和参数,我也尝试过post伙计,它工作正常,只是 JMeter 不工作。
脚本是使用 BlazeMeter Chrome 扩展记录的,并根据需要进行了调整。
接下来的配置一般用于测试计划:
- HTTP Header 管理器 与 header "User-Agent".
- 用户定义变量只有一个变量"BASE_URL_1".
- HTTP 请求默认值 选择了 "Retrieve All Embedded Resources" 和 "Parallel downloads" 并且 "Number" 设置为 6。
- DNS 缓存管理器 选择了 "Clear cache each iteration" 和 "Use system DNS resolver".
- HTTP 授权管理器 未选择任何内容。
- HTTP Cookie 管理器 选择了 "Clear cookies each iteration?"。
- HTTP 缓存管理器 选择了 "Clear cache each iteration?" 并且 "Max Number of elements in cache" 设置为 5000。
我在[=103=中将"CookieManager.save.cookies"选项设置为"true" ].
这是 "HTTP Request" 的图片:
在 "HTTP Request" 里面有一个 "HTTP Header Manager" 和下一个 headers:
在 "HTTP Request" 里面还有一个 "Uniform Random Timer","Random Delay Maximum" 设置为 26344.0,"Constant Delay Offset" 设置为 13172。
cookie 似乎与 session 数据一起发送正常。在尝试执行 post 请求之前,我确实登录了一个用户并获取了 session 数据,而其他获取请求在相同的 session 下工作正常。我用 Postman 测试了同样的 headers 并且成功了。我不知道为什么这在 JMeter 中不起作用。我尝试对配置进行多项更改,但均未成功。这是一个 .NET 服务。
API 不是最好的构建方式,但是让我认为这个 500 错误可能来自 JMeter 而不是 API 的原因是我能够成功地从post男人.
有人知道测试配置可能有什么问题吗?
编辑
以下是“查看结果树”中的一些图片:
采样器结果
请求Body
请求Headers
响应Headers
响应 Body 是 HTML 说有错误。
鉴于您的请求在 Postman 中有效,您应该能够使用 JMeter 的 HTTP(S) Test Script Recorder 记录它。
准备JMeter进行记录,最快最简单的方法是使用JMeter Templates feature
- 从 JMeter 的主菜单中选择
File -> Template -> Recording
并单击 "Create"
- 打开 HTTP(S) 测试脚本记录器并单击 "Start"
Prepare Postman for recording。
- 从 Postman 主菜单中选择
File -> Settings -> Proxy
使用127.0.0.1
作为代理主机,8888
作为代理端口
运行 您在 Postman 中的请求
- JMeter会抓取Recording Controller下的请求
- Parameterize and correlate 请求
- 它应该工作正常。如果不是 - 使用第 3 方嗅探器工具(如 Wireshark of Fiddler)比较 Postman 和 JMeter 发送的请求,检测并消除任何不一致。
我正在使用 JMeter 创建负载测试。我正在尝试发出 Post 请求来创建新资源,但它总是以 500 错误响应,即使我发送与浏览器相同的 headers 和参数,我也尝试过post伙计,它工作正常,只是 JMeter 不工作。
脚本是使用 BlazeMeter Chrome 扩展记录的,并根据需要进行了调整。
接下来的配置一般用于测试计划:
- HTTP Header 管理器 与 header "User-Agent".
- 用户定义变量只有一个变量"BASE_URL_1".
- HTTP 请求默认值 选择了 "Retrieve All Embedded Resources" 和 "Parallel downloads" 并且 "Number" 设置为 6。
- DNS 缓存管理器 选择了 "Clear cache each iteration" 和 "Use system DNS resolver".
- HTTP 授权管理器 未选择任何内容。
- HTTP Cookie 管理器 选择了 "Clear cookies each iteration?"。
- HTTP 缓存管理器 选择了 "Clear cache each iteration?" 并且 "Max Number of elements in cache" 设置为 5000。
我在[=103=中将"CookieManager.save.cookies"选项设置为"true" ].
这是 "HTTP Request" 的图片:
在 "HTTP Request" 里面有一个 "HTTP Header Manager" 和下一个 headers:
在 "HTTP Request" 里面还有一个 "Uniform Random Timer","Random Delay Maximum" 设置为 26344.0,"Constant Delay Offset" 设置为 13172。
cookie 似乎与 session 数据一起发送正常。在尝试执行 post 请求之前,我确实登录了一个用户并获取了 session 数据,而其他获取请求在相同的 session 下工作正常。我用 Postman 测试了同样的 headers 并且成功了。我不知道为什么这在 JMeter 中不起作用。我尝试对配置进行多项更改,但均未成功。这是一个 .NET 服务。
API 不是最好的构建方式,但是让我认为这个 500 错误可能来自 JMeter 而不是 API 的原因是我能够成功地从post男人.
有人知道测试配置可能有什么问题吗?
编辑
以下是“查看结果树”中的一些图片:
采样器结果
请求Body
请求Headers
响应Headers
响应 Body 是 HTML 说有错误。
鉴于您的请求在 Postman 中有效,您应该能够使用 JMeter 的 HTTP(S) Test Script Recorder 记录它。
准备JMeter进行记录,最快最简单的方法是使用JMeter Templates feature
- 从 JMeter 的主菜单中选择
File -> Template -> Recording
并单击 "Create" - 打开 HTTP(S) 测试脚本记录器并单击 "Start"
- 从 JMeter 的主菜单中选择
Prepare Postman for recording。
- 从 Postman 主菜单中选择
File -> Settings -> Proxy
使用
127.0.0.1
作为代理主机,8888
作为代理端口
- 从 Postman 主菜单中选择
运行 您在 Postman 中的请求
- JMeter会抓取Recording Controller下的请求
- Parameterize and correlate 请求
- 它应该工作正常。如果不是 - 使用第 3 方嗅探器工具(如 Wireshark of Fiddler)比较 Postman 和 JMeter 发送的请求,检测并消除任何不一致。