news 2026/5/1 9:06:57

如何正确使用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/4/29 20:41:01

Hunyuan 1.8B模型显存优化:<1GB内存运行部署保姆级教程

Hunyuan 1.8B模型显存优化&#xff1a;<1GB内存运行部署保姆级教程 1. 引言&#xff1a;轻量级多语翻译模型的落地挑战 随着大模型在自然语言处理领域的广泛应用&#xff0c;如何在资源受限设备上实现高效推理成为工程落地的关键瓶颈。尤其是在移动端、边缘计算和低功耗场…

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

MacBook也能跑!Qwen3-VL-8B-Instruct轻量部署指南

MacBook也能跑&#xff01;Qwen3-VL-8B-Instruct轻量部署指南 在多模态AI迅速普及的今天&#xff0c;越来越多的应用场景需要模型具备“看图说话”的能力。然而&#xff0c;动辄数十亿甚至上百亿参数的大模型往往对硬件要求极高&#xff0c;普通开发者和中小企业难以负担。Qwe…

作者头像 李华
网站建设 2026/4/30 12:43:20

Qwen3-Embedding-4B模型评测:重排序任务表现全面分析

Qwen3-Embedding-4B模型评测&#xff1a;重排序任务表现全面分析 1. 背景与评测目标 随着信息检索、推荐系统和语义搜索等应用的快速发展&#xff0c;高质量的文本嵌入&#xff08;Text Embedding&#xff09;与重排序&#xff08;Re-Ranking&#xff09;能力已成为构建智能搜…

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

PETRV2-BEV模型部署:训练后的模型剪枝技巧

PETRV2-BEV模型部署&#xff1a;训练后的模型剪枝技巧 1. 引言 随着自动驾驶技术的快速发展&#xff0c;基于视觉的三维目标检测方法逐渐成为研究热点。PETRv2是一种先进的端到端BEV&#xff08;Birds Eye View&#xff09;感知模型&#xff0c;通过将相机视图特征与3D位置编…

作者头像 李华
网站建设 2026/5/1 7:54:57

PaddleSpeech TTS模型极速加载:5个技巧实现零失败下载体验

PaddleSpeech TTS模型极速加载&#xff1a;5个技巧实现零失败下载体验 【免费下载链接】PaddleSpeech Easy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification …

作者头像 李华
网站建设 2026/4/17 18:14:43

RT-DETR实时检测技术深度解析与实战应用

RT-DETR实时检测技术深度解析与实战应用 【免费下载链接】ultralytics ultralytics - 提供 YOLOv8 模型&#xff0c;用于目标检测、图像分割、姿态估计和图像分类&#xff0c;适合机器学习和计算机视觉领域的开发者。 项目地址: https://gitcode.com/GitHub_Trending/ul/ultr…

作者头像 李华