news 2026/5/5 4:31:16

如何正确使用Jmeter进行性能测试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何正确使用Jmeter进行性能测试

在性能测试中,很多时候我们都会选择Jmeter来做性能测试。但是很多测试同学并不清楚如何正确的使用Jmeter去做性能测试,不规范的操作方式难以得到我们真正想要的正确结果,导致做了无用功。

那么我们如何正确地使用Jmeter去做性能测试呢,下面我将一步步讲述,我以一个登录接口和购买商品的接口为例子。

1.我们打开Jmeter,在测试计划中添加线程组。

2.添加完线程组后,添加HTTP请求

3.添加HTTP请求参数

4.添加请求头,在配置元件中找到HTTP信息头管理器,把自己需要请求接口的请求头添加进去

5.添加购买商品接口的HTTP请求,那么这一次会有一点不同。因为购买商品请求会用到登录的token,那么在添加完购买商品的HTTP请求参数后,我们需要在登录请求中添加一个Json提取器去提取token,以及要在购买商品的请求头中也添加token。

这个提取token要注意,如果你的接口返回请求参数为下面的格式,token提取方法就是$..token

{

"success": true,

"message": "登录成功",

"data": {

"token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxMzgwMDEzODMwMCIsImV4cCI6MTc2ODgzOTM4MywiaWF0IjoxNzY4NzUyOTgzfQ.kCdR4HOQfzcfevOOQuX0mhnJNWgp1P9tV-eJIDZzdAJGH-kplBnH2haKldF9yaFjm-AWXRAWe15ujDX39hfRBw"

}

}

但如果接口请求返回参数为下面的例子就应该填写$.token

{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","code":200}

但如果 token 在嵌套结构中(如{"data":{"token":"xxx"}}),则 JSON 路径应改为$.data.token

添加完Json提取器我们继续在购买商品接口的请求头添加token,格式为下图Authorization:Bearer ${token}

6.在我们添加完两个接口以后,可以添加查看结果树,请求一下看看接口通不通,如果通了我们就可以做下一步工作,即导入CSV数据文件设置。为什么我们要使用CSV数据文件设置呢,因为我们在压测的时候,肯定是需要模拟真实用户的登录和购买商品请求,如果我们只是单纯的设置线程组以及循环次数,这并不能模拟出真实的场景,是无效的压测。

如果请求需要账号和密码,我们在工作中要如何去模拟得到数据呢,我们可以直接在对应用户的表去拉去用户的账号密码,如果密码不同,这可能会浪费时间,我们可以设置一个统一的密码。或者就是写一个脚本去批量的生成用户。

7.CSV数据文件设置,我列举了一些常用的,如果你们接口有不同,要修改配置一下设置。当然实际上的性能测试中,你们的接口参数会更多,不过原理是一样的。如果有参数的接口都应该使用csv配置。

8.修改我们接口请求配置,因为我们因为导入了CSV文件配置,Jmeter就会从CSV文件中读取数据,那么我们请求的参数也要修改一下。如下图,后续的接口也是一样的操作。

9.添加断言,在多接口压测中,我们不确定接口所有的压测请求是否都是有效的请求,所有需要添加断言。这个情况就需要添加断言去判断,一般来说我们使用响应断言是最多的。

我一般通过"success": true这个字段去判断,一般来说现在正常的接口规范,请求成功这个接口就是首先返回的是success:true,然后才是商品购买成功/失败。购买成功和失败其实都是正常业务会出现的情况,所以在压测中我会根据请求是否成功失败去进行断言,大家也可以根据自己的业务以及场景进行适当的调整。

10.后面我们可以添加聚合报告初步跑一下看看我们编写的脚本是否通了。如果都是可以正常提取到我们的数据中值,我们还可以再添加一个高斯随机定时器,因为用户在购买商品的时候可能会犹豫什么的,更贴近实际;如果要测试秒杀场景的就需要添加同步定时器。

11.当我们的脚本跑通了,并设置完线程组的压测参数就要保存。不要在页面中直接进行压测!!!Jmeter官方也是不建议我们这样操作,核心原因是GUI 模式会影响压测的准确性、稳定性和资源利用率。所以我们要使用命令的方式去操作

我们关闭页面后,打开CMD,输入jmeter -n -t 脚本路径 -l 压测结果存放路径

例如 jmeter -n -t D:\login_and_buy.jmx -l D:\result.jtl

当性能压测执行完以后呢,我们想要查看可视化的HTML报告,可以在CMD中继续输入执行

jmeter -g 压测结果存放路径 -o HTML报告的路径以及文件命名(自定义)

例如jmeter -g D:\result.jtl -o D:\jmeter_report

执行完以后我们在对应的路径可以看到一个html的文件,打开即可看到压测结果的可视化报告

当然如果你们公司有什么Skywalking这类工具就不需要我后面这些导入导出压测报告的操作,直接在Skywalking查看报告结果就行。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 13:09:15

gRPC-Java服务端线程池性能优化实战指南:从瓶颈定位到极致调优

gRPC-Java服务端线程池性能优化实战指南:从瓶颈定位到极致调优 【免费下载链接】grpc-java The Java gRPC implementation. HTTP/2 based RPC 项目地址: https://gitcode.com/GitHub_Trending/gr/grpc-java 你是否曾在深夜被生产环境告警惊醒?服务…

作者头像 李华
网站建设 2026/5/1 13:44:51

年龄性别识别系统架构:多租户方案设计

年龄性别识别系统架构:多租户方案设计 1. 引言 1.1 AI 读脸术 - 年龄与性别识别 在智能安防、用户画像构建、无人零售等场景中,基于人脸的属性分析技术正逐步成为关键基础设施。其中,年龄与性别识别作为最基础且实用的人脸属性推断任务&am…

作者头像 李华
网站建设 2026/5/1 17:28:16

PyTorch-2.x-Universal镜像让科研更简单,学生党福音

PyTorch-2.x-Universal镜像让科研更简单,学生党福音 1. 引言:深度学习环境配置的痛点与解决方案 在深度学习科研和项目开发中,环境配置往往是第一步也是最令人头疼的一步。尤其是对于刚入门的学生开发者而言,面对复杂的依赖关系…

作者头像 李华
网站建设 2026/5/3 5:52:20

UI-TARS:让电脑真正成为你的智能助手

UI-TARS:让电脑真正成为你的智能助手 【免费下载链接】UI-TARS 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS 你是否曾经历过这样的时刻?每天清晨打开电脑,面对着一成不变的工作流程:登录邮箱、整理报表、填…

作者头像 李华
网站建设 2026/5/1 17:02:11

思源笔记终极性能优化指南:让你的知识库运行效率提升300%

思源笔记终极性能优化指南:让你的知识库运行效率提升300% 【免费下载链接】siyuan A privacy-first, self-hosted, fully open source personal knowledge management software, written in typescript and golang. 项目地址: https://gitcode.com/GitHub_Trendin…

作者头像 李华
网站建设 2026/5/2 22:40:21

Qwen3-4B模型冷启动优化:预加载机制部署提速实战

Qwen3-4B模型冷启动优化:预加载机制部署提速实战 1. 引言 在边缘设备和端侧场景中,大语言模型的部署面临显著的性能挑战,其中最影响用户体验的便是冷启动延迟。通义千问 3-4B-Instruct-2507(Qwen3-4B-Instruct-2507)…

作者头像 李华