news 2026/5/10 22:47:34

如何正确使用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/10 21:22:25

Hunyuan-MT-7B环境变量配置:影响性能的关键参数调整

Hunyuan-MT-7B环境变量配置:影响性能的关键参数调整 1. 引言 1.1 Hunyuan-MT-7B-WEBUI 概述 Hunyuan-MT-7B 是腾讯开源的70亿参数多语言翻译大模型,专为高精度、低延迟的跨语言理解任务设计。其衍生版本 Hunyuan-MT-7B-WEBUI 提供了图形化交互界面&am…

作者头像 李华
网站建设 2026/5/8 21:20:01

Unitree机器人强化学习部署完整教程:从仿真到实物的终极指南

Unitree机器人强化学习部署完整教程:从仿真到实物的终极指南 【免费下载链接】unitree_rl_gym 项目地址: https://gitcode.com/GitHub_Trending/un/unitree_rl_gym 欢迎来到机器人强化学习的实战世界!本教程将带您深入掌握Unitree机器人从仿真训…

作者头像 李华
网站建设 2026/4/29 7:35:40

实时语音输入新选择!Paraformer WebUI实测体验分享

实时语音输入新选择!Paraformer WebUI实测体验分享 1. 引言:中文语音识别的新实践路径 随着人工智能技术的不断演进,语音识别在会议记录、内容创作、智能助手等场景中的应用日益广泛。如何实现高精度、低延迟、易部署的中文语音识别方案&am…

作者头像 李华
网站建设 2026/5/10 11:29:22

Marlin 3D打印机固件:从零到精通的终极使用指南

Marlin 3D打印机固件:从零到精通的终极使用指南 【免费下载链接】Marlin Marlin 是一款针对 RepRap 3D 打印机的优化固件,基于 Arduino 平台。 项目地址: https://gitcode.com/GitHub_Trending/ma/Marlin Marlin作为全球最受欢迎的开源3D打印机固…

作者头像 李华
网站建设 2026/5/4 4:55:15

Glyph压缩率高达8倍?实测结果来了

Glyph压缩率高达8倍?实测结果来了 1. 引言 随着大模型对长上下文处理需求的不断增长,传统基于文本token的上下文扩展方式正面临计算成本高、内存占用大等瓶颈。在此背景下,智谱AI联合清华大学提出了一种全新的视觉-文本压缩框架——Glyph&a…

作者头像 李华
网站建设 2026/5/9 15:25:37

提升首字延迟:IndexTTS-2-LLM预加载优化实战

提升首字延迟:IndexTTS-2-LLM预加载优化实战 1. 引言 在实时语音合成(Text-to-Speech, TTS)系统中,首字延迟(Time to First Token, TTFT)是衡量用户体验的关键指标之一。尤其在交互式场景如智能客服、语音…

作者头像 李华