发布请求总是在 JMeter 中返回错误
Posted
技术标签:
【中文标题】发布请求总是在 JMeter 中返回错误【英文标题】:Post request always returning error in JMeter 【发布时间】:2020-02-07 23:32:31 【问题描述】:我正在使用 JMeter 创建负载测试。我正在尝试发出 Post 请求以创建新资源,但它总是以 500 错误响应,即使我发送与浏览器相同的标头和参数,并且我也尝试使用邮递员并且它工作正常,它只是与JMeter 不工作。
脚本是使用 BlazeMeter Chrome 扩展程序录制的,并根据需要进行调整。
接下来的配置一般用于测试计划:
HTTP 标头管理器,标头为“User-Agent”。 用户定义变量,只有一个变量“BASE_URL_1”。 HTTP 请求默认值,选择了“检索所有嵌入式资源”和“并行下载”并将“数量”设置为 6。 DNS 缓存管理器,选中“每次迭代清除缓存”和“使用系统 DNS 解析器”。 HTTP 授权管理器,未选择任何内容。 HTTP Cookie 管理器,带有“每次迭代都清除 cookie?”已选中。 HTTP 缓存管理器,带有“每次迭代清除缓存?”已选中并将“缓存中的最大元素数”设置为 5000。我在 "jmeter.properties" 中将 "CookieManager.save.cookies" 选项设置为 "true"。
这是“HTTP 请求”的样子:
在“HTTP 请求”中有一个“HTTP 标头管理器”,其中包含下一个标头:
在“HTTP 请求”内还有一个“统一随机计时器”,其中“随机延迟最大值”设置为 26344.0,“恒定延迟偏移”设置为 13172。
cookie 似乎与会话数据一起发送良好。在尝试执行发布请求之前,我确实登录了一个用户并获取了会话数据,而其他获取请求在同一会话下工作正常。我用 Postman 测试了相同的标题并且它有效。我不知道为什么这在 JMeter 中不起作用。我尝试对配置进行多次更改但没有成功。这是一个 .NET 服务。
API 不是以最好的方式构建的,但让我认为这个 500 错误可能来自 JMeter 而不是 API 的原因是我能够成功地从邮递员发出请求。
有人知道测试配置可能有什么问题吗?
编辑
以下是查看结果树中的一些图片:
采样器结果
请求正文
请求标头
响应标头
响应正文是表示有错误的 html。
【问题讨论】:
您希望端口为 80? 尝试删除“内容类型”并检查多部分表单数据,如果您从视图结果树发布图像也会很好 你好@user7294900,我不太确定,我用 BlazeMeter 记录器创建了测试。 嗨@zeeshan 我尝试删除“Content-Type”并检查了 miltipart-form 数据,但我得到了同样的错误。此外,将使用结果树图像更新帖子。 【参考方案1】:鉴于您的请求在 Postman 中有效,您应该能够使用 JMeter 的 HTTP(S) Test Script Recorder 记录它。
准备JMeter进行录音,最快最简单的方法是使用JMeter Templates feature
从 JMeter 的主菜单中选择File -> Template -> Recording
并单击“创建”
打开 HTTP(S) 测试脚本记录器并点击“开始”
Prepare Postman for recording。
从 Postman 主菜单中选择File -> Settings -> Proxy
使用127.0.0.1
作为代理主机,8888
作为代理端口
在 Postman 中运行您的请求
JMeter 将在 Recording Controller 下捕获请求 Parameterize and correlate请求 应该可以正常工作。如果不是 - 使用第 3 方嗅探器工具(如 Wireshark 或 Fiddler)比较 Postman 和 JMeter 发送的请求,检测并消除任何不一致。【讨论】:
谢谢@Dmitri T,问题是我发送了错误的令牌值。我从错误的地方获取令牌值,很难找到,因为它具有相同的名称......无论如何,这帮助我找到了令牌中的值差异。以上是关于发布请求总是在 JMeter 中返回错误的主要内容,如果未能解决你的问题,请参考以下文章
JMeter POST 请求返回 200 OK 而不是 302(重定向)
在 Jmeter 的 Post 请求中出现 400 Bad Request 错误
Nestjs - @nestjs/graphql GraphQLGatewayModule 总是返回错误请求