核心结论,JMeter 做 APP 压力测试,本质是模拟 APP 客户端向后端服务器发起大量并发请求,测试接口在高并发下的响应时间、吞吐量、错误率、服务器负载,JMeter 不能直接压测 APP 前端界面,压测对象是 APP 对应的后端 API 接口,流程是抓包拿到 APP 接口请求,导入 JMeter 编写压测脚本,配置并发线程组、参数化、断言、监听器,执行压测,最后分析报告,适合登录、首页加载、下单、评论这类核心接口性能验证。原因是 APP 所有业务都依赖后端 HTTP/HTTPS 接口,前端卡顿很多根源是后端接口性能瓶颈,所以用 JMeter 模拟多用户并发访问后端,提前发现高并发下的性能问题,避免上线之后用户激增导致服务器异常。
一 前期准备工作
表格
| 准备项 | 说明 |
|---|---|
| 环境准备 | 安装 JDK,安装 Apache JMeter,准备抓包工具 Charles 或者 Fiddler |
| 抓包获取接口 | 手机设置代理,抓 APP 业务请求,拿到接口 URL、请求方法 GET/POST、请求头 Header、参数、返回报文 |
| 测试目标确认 | 确定压测接口、预期并发数、压测时长、性能指标阈值(响应时间、错误率、TPS) |
| 测试环境 | 优先使用独立测试环境,不要直接压生产环境,避免影响真实用户 |
二 第一步 抓包提取 APP 接口请求
1 电脑和手机连接同一个 WiFi,手机代理指向电脑 IP 和抓包工具端口
2 安装抓包工具证书,HTTPS 请求才可以解密
3 操作 APP,执行要压测的业务,比如登录、获取列表、提交订单
4 在抓包软件里面找到目标接口,复制请求头、请求体、请求参数,保存接口信息
三 第二步 JMeter 搭建压测脚本
1 添加线程组
打开 JMeter,测试计划右键 添加 线程(用户) 线程组
线程组核心参数
- 线程数:模拟并发用户数量
- Ramp-Up 时间:所有并发用户全部启动完成的时间
- 循环次数:每个线程重复执行请求次数,也可以设置调度器,设置压测持续时长
2 添加 HTTP 请求默认值
添加 HTTP 请求默认值,填写后端服务器域名、端口,后续所有接口就不用重复填写服务器地址。
3 添加 HTTP 请求取样器
在线程组下面添加 HTTP 请求取样器,填入接口路径,选择请求方法,填入请求参数,POST 请求在消息体里面填写 JSON 参数。
4 添加 HTTP 信息头管理器
把抓包得到的 Header 复制进去,常见有 token、Content-Type、User-Agent,APP 接口大多需要 token 鉴权,这个步骤非常关键,缺少 Header 会请求失败。
5 参数化配置(重点)
多并发用户不能全部使用同一个账号,需要参数化多组账号
添加 CSV Data Set Config,导入账号密码 csv 文件,脚本循环读取不同账号,模拟真实多用户。
如果接口需要动态 token,可以添加 JSON Extractor 后置处理器,登录接口提取 token,传给后续业务接口。
6 添加断言
添加响应断言,校验接口返回码、返回报文关键字,判断请求是否成功,区分真实成功请求和报错请求。
7 添加监听器,采集压测数据
常用监听器
- 查看结果树:调试脚本,查看每一条请求返回内容
- 聚合报告:核心报表,展示 TPS、平均响应时间、90% 响应时间、错误率
- Summary Report:汇总压测数据
- Response Times Over Time:响应时间随时间变化曲线
四 第三步 执行压测
1 保存 jmx 脚本
2 推荐使用非 GUI 命令行模式执行压测,性能更稳定,适合大并发
命令示例:
jmeter -n -t test.jmx -l result.jtl -e -o report
参数说明:
-n 非 GUI 模式
-t 指定压测脚本
-l 保存结果 jtl 文件
-e -o 压测结束自动生成 HTML 可视化报告
3 压测过程可以同步监控服务器 CPU、内存、磁盘 IO、数据库负载,定位瓶颈。
五 第四步 压测结果分析
重点指标解读
- TPS:每秒事务数,代表接口处理能力
- 平均响应时间:接口平均耗时
- 90%/95% 响应时间:绝大多数用户请求耗时,比平均值更有参考价值
- 错误率:并发升高之后是否出现超时、500 错误
- 吞吐量:单位时间处理请求总量 根据指标判断:如果并发升高,响应时间急剧上涨,错误率上升,说明接口到达性能瓶颈,需要优化代码、数据库索引、缓存、扩容服务器。
六 进阶优化要点
1 动态关联:APP 接口很多依赖上一步返回的 token、订单 id,使用后置处理器提取变量,实现业务链路压测,模拟完整业务流程,不只是单接口压测
2 思考时间:添加定时器,模拟真实用户操作间隔,不要请求无间断疯狂并发,更贴近真实 APP 用户行为
3 分布式压测:单机 JMeter 并发上限有限,超大并发可以搭建 JMeter 分布式压测,一台 master,多台 slave 节点协同发压
4 压测后清理:压测环境测试数据及时清理,避免污染测试库
【相关 FAQ】
问题 1 APP 怎么利用 JMeter 进行压力测试可以直接压 APP 前端页面吗
回答 1 APP 怎么利用 JMeter 进行压力测试,JMeter 不能直接压测 APP 前端 UI 界面,它是压测 APP 对应的后端 API 接口,模拟客户端请求后端服务。
问题 2 APP 怎么利用 JMeter 进行压力测试 HTTPS 接口需要证书吗
回答 1 APP 怎么利用 JMeter 进行压力测试,HTTPS 接口抓包需要安装抓包证书,JMeter 请求一般不需要额外证书,只要 Header 和参数正确即可。
问题 3 APP 怎么利用 JMeter 进行压力测试为什么要参数化账号
回答 1 APP 怎么利用 JMeter 进行压力测试,参数化账号是为了模拟多个独立用户,如果全部使用同一个账号,会触发接口限流或者鉴权冲突,不符合真实并发场景。
问题 4 APP 怎么利用 JMeter 进行压力测试可以直接压生产服务器吗
回答 1 APP 怎么利用 JMeter 进行压力测试,不建议直接压生产环境,高并发压测会影响线上真实用户,优先使用独立测试环境压测。
【免责申明】
本文内容仅为 JMeter 对 APP 后端接口压测通用技术教程,压测操作请在授权测试环境执行,未经许可压测线上服务器存在合规风险,请遵守相关规范,本文不构成任何官方承诺。


