接口
大多测试接口,软件工程领域,接口(API ,Application Programming Interface)是一组预先定义的规则、协议和工具,用于构建软件和应用程序。明确规定了不同软件组件之间如何进行交互和数据交换。
接口测试则是一种直接对应用程序的编程接口进行测试的软件测试类型,绕过了用户界面UI,直接验证系统核心业务逻辑的正确性,数据的安全可靠性以及服务的性能表现。
接口测试的核心价值:
- 实现测试左移:极大地提前了发现问题的时间,降低了修复成本
- 提升测试效率:接口测试的执行速度要快几个数量级
- 增强测试覆盖率
- 保障系统稳定性:集成测试的一种
Jmeter
安装
Jmeter本身是一个纯Java开发的应用程序,其运行依赖于Java虚拟机(JVM)。因此安装JMeter之前必须确保系统中已正确安装和配置JDK。
区分手动安装和自动安装的区别(自动安装:解压,配置环境变量,注册表)。
安装Jmeter我就不说,到官网下载即可。然后配置环境变量,并添加到path中。
启动Jmeter,可以有两种方式:
- 在解压目录中bin目录中点击jmeter.bat
- 或者直接命令行输入jmeter
界面与组件
启动时会默认打开命令行,不要关闭命令行。
如上所示的分区:
- 文件的管理
- 组件的管理
- 实现的管理
- 辅助的按钮
- 组件的列表
- 组件的面板
核心组件
在测试过程中必不可少的内容,
- 测试计划Test Plan
- 是所有测试元素的顶级容器,描述了一系列测试步骤的执行逻辑
- 任何测试脚本都必须置于测试计划之下
- 线程组Thread Group
- 用于模拟一组虚拟用户执行用例,决定了用户总数、启动的节奏、测试的执行次数或时长
- 取样器Sampler
- 用于模拟用户的具体动作,通常是向服务器发送请求,有多种类型,其中最常用的是HTTP取样器,因为绝大部分是Http接口。
- 是大部分非核心组件的服务对象
辅助组件
- 监听器Listener:展示取样器工作细节和结果
- 配置元件Cofig Element:配置修改取样器的设置
- 定时器Timer:延迟取样器的执行
- 断言Assertion:判断取样器的执行
- 前置处理器:Pre Processor:取样器之前,自动执行
- 后置处理器:Post Processor:取样器之后,自动执行
- 逻辑控制器Logic Controller:对取样器进行逻辑控制(分支、条件、循环、跳过)
实战
放置多个接口,可以通过按钮实现禁用与启动的切换。
如图所示可以创建多个线程组,每个线程组如果同时测多个接口,可以创建多个接口请求,或者创建多个线程组,每个线程组可以设置不同线程数量进行测试。
然后双击线程组新增取样器中HTTP请求,
找一个访问接口,例如请求URL为:http://xx.xxx.xx.xxx/api/user/login
显然这是按照协议、域名、端口、路径构成的,所以可以对应拆分到HTTP请求面板中进行填写,
要看请求结果怎么样,可以添加辅助组件的监听器——》查看结果树。
后续性能测试会用到汇总报告、聚合报告等。
注意修改请求头,例如要求application/json,但实际请求请求头为:
对返回数据格式可以按照json格式展示。
如何修改请求头,可以利用辅助组件中的配置元件。添加Http信息头管理器,
性能测试
响应时间图和TPS曲线图
性能测试过程中通常需要观测接口TPS和响应时间的曲线图,从而明确整个压测过程中,接口性能是否表现稳定,接口TPS和响应时间的曲线图也是性能测试报告中必不可少的内容。
这两个内容对应了Jmeter中监听器为:
- Response Times Over Time
- Transactions per Second
上述Jmeter没有自带,影刺需要安装插件,然后在插件中安装,插件下载地址
下载插件后把jar包放到 lib/ext 目录,然后重启Jmeter,可以在选项最后看到安装的插件,
上述监听器需要安装Standard Set插件,然后重启即可。
然后就可以添加响应时间曲线图,TPS曲线图了。
响应时间图
直观看到响应时间趋势,能看到响应时间随时间的变化趋势,不同百分位的响应时间,实时更新的曲线图。主要用于监听整个测试期间响应时间的变化趋势,帮助判断系统是否存在性能退化。
分析技巧:
- 如果曲线持续上升,说明系统性能在恶化
- 如果曲线平稳,说明系统性能稳定
- 关注90%和95%分位值,它们反映大多数用户的体验
- 坐标轴含义:
- 横坐标 (X轴):测试运行的持续时间(Elapsed time),通常以秒(sec)或毫秒为单位的时间间隔。
- 纵坐标 (Y轴):响应时间(Response times),单位为毫秒(ms)。代表从发送请求到接收完整响应所耗费的时间。
- 能看出的信息与诊断:
- 平稳的直线:理想状态。说明在当前的并发压力下,系统处理每个请求的能力非常稳定。
- 持续上升的趋势:最典型的“性能衰减”信号。如果曲线随着测试进行不断攀升,说明系统遇到了瓶颈。常见原因包括:内存泄漏、数据库连接池未释放、缓存失效或慢 SQL 导致的数据积压。
- 突然的毛刺或飙升:如果响应时间在某个时间点突然急剧增加,可能意味着系统在该时刻遇到了突发异常(如垃圾回收 GC 停顿、外部依赖超时或触发了限流机制)。
TPS 图
用于分析系统的吞吐量(处理能力),反映了系统在同一时间内处理业务的最大能力。
- 坐标轴含义:
- 横坐标 (X轴):测试运行的持续时间(Elapsed time),通常以秒为单位。
- 纵坐标 (Y轴):每秒处理的事务数/请求数(TPS/QPS)。数值越高,说明系统处理能力越强。在部分插件中,通常会用不同颜色(如红色代表成功,绿色代表失败)来区分事务状态。
- 能看出的信息与诊断:
- 平稳的直线:理想状态。说明在压力恒定的情况下,系统整体处理能力稳定,没有发生性能退化。
- 持续下降的趋势:危险信号。如果 TPS 曲线开始持续走低,往往意味着系统处理能力在衰减。这通常与响应时间图“持续上升”同时出现,说明请求处理变慢,导致单位时间内能完成的请求数减少。
- 剧烈波动:说明系统性能不稳定,可能在临界负载下频繁触发熔断、降级或资源争抢。
- 先上升后趋于平稳:这是压测寻找“拐点”时的正常表现。随着并发量增加,TPS 逐渐升高;当达到系统处理极限时,TPS 会达到峰值并保持水平。
在性能分析中,这两张图必须联动观察才能得出准确结论:
- 最佳状态:响应时间曲线平稳 + TPS 曲线平稳。
- 性能瓶颈预警:响应时间曲线持续上升 + TPS 曲线持续下降。这说明系统正在走向崩溃,请求开始大量排队,必须立即停止加压并排查瓶颈(如优化数据库、扩容或修复代码泄漏)。
此外还要随时观测服务器状况,例如右键监听器-添加jp@gc-Transactions per Second组件,jp@gc-Response Times Over Time组件,jp@gc - PerfMon Metrics Collector组件。组件依次查看的内容是TPS,RT,监控服务器资源如cpu、内存、IO。
压测步骤:https://blog.csdn.net/weixin_45720473/article/details/128221771
https://blog.csdn.net/weixin_72982596/article/details/134011108
聚合报告
性能测试中需要重点关注的数据有请求数、平均响应时间、最小响应时间、最大响应时间、吞吐量和错误率
JMeter 的聚合报告(Aggregate Report)是性能测试中最核心的结果分析工具。
可将这些指标分为三大类:基础负载指标、响应时间指标和系统能力指标
基础负载指标
这部分反应测试的整体规模和稳定性
Label:每个 JMeter 的元素(如 HTTP请求)都有一个 Name 属性,Label显示的就是 Name 属性的值
#样本:总共发给服务器的请求数,表示这次测试中一共发出了多少个请求。如模拟100个线程数(即100个用户),每个线程迭代10次,这里就显示100*10 = 1000
Error%:异常率容错率,失败请求占总请求的百分比,通常要求错误率<1%, 如果>5%,说明系统存在严重问题。
平均值:平均响应时间,默认情况下是单个请求的平均响应时间。
响应时间指标
反映了用户真实的等待体验,单位通常为毫秒ms,
平均值:所有请求响应时间的算数平均值,容易受到极端慢请求的拉高影响,因此不能仅凭平均值判断性能
中位数:50% 用户的响应时间,比平均值更能反应典型用户的体验,不受极端值的影响
90%/ 95%/ 99% 百分位:90%/ 95%/ 99% 用户的响应时间,反映了绝大多数用户的真实体验,如果 90% Line 和 Average 差距过大,说明系统存在明显的响应时间波动(长尾效应),可能存在慢查询或缓存失效。
最小值:最小响应时间
最大值:最大响应时间,Max值通常是性能瓶颈的警示指标
异常%:请求错误率,即错误请求数/请求总数
吞吐量:——默认情况下表示每秒完成的请求数(Request per Second)
接收KB/Sec:每秒从服务器端接收到的数据量
发送KB/Sec:每秒发送到服务器端的数据量
系统能力指标
这部分反映了服务器的处理效率和网络状况。
- Throughput(吞吐量):系统每秒处理的请求数(Requests per Second)。
分析指南:这是衡量系统处理能力的核心指标(类似 TPS)。吞吐量越高,说明服务器处理能力越强。 - Received KB/sec & Sent KB/sec(接收/发送吞吐量):每秒从服务器接收或发送到服务器的数据量(KB)。
分析指南:用于评估网络带宽压力。如果这两个值达到了服务器或压测机的带宽上限,说明瓶颈在网络而非代码。
Jmeter响应时间和tps监听器使用教程
Jmeter专栏
JMeter的基本使用与性能测试,完整入门篇保姆式教程
Jmeter响应时间和tps监听器使用教程,导出等