性能测试入门

1. 什么是性能测试

性能测试时通过压测根据(Jmeter, Loadrunner),通过特定方式,对系统施加一定的压力:正常、异常负载以及峰值,得到各项性能指标、保证系统的性能需求。

价值和目的:

1. 评估系统的能力;

2. 识别系统的弱点、瓶颈;

3. 检查系统的隐藏问题;

4. 检验系统的稳定性和可靠性。

2. 性能测试指标

1. 虚拟用户数:线程=用户

2. 并发数:指在某一时间,一定数量的虚拟用户同时对系统的某个功能进行交互,一般通过集合点实现。

3. 事务:一个接口可以时事务,多个接口也可以时事务,一个流程也可以是事务,事务代表一个完整的功能,由测试人员决定。

4. 场景:性能测试的用例。

5. 响应时间 RT:Response Time

        5.1 平均响应时间

        5.2 中位数

        5.3 90%

        5.4 95%

        5.5 99%

        5.6 基准测试:1个用户请求接口,200-500 ms

        5.7  压力测试:N 个用户并发请求接口, 2秒

6. TPS:每秒事务数,表示系统每秒能处理的事务(事务通常指一组原子性操作,如银行转账)。

        Transactions per second

         计算公式:总的事务数 / 总的运行时间

         比如:某一个系统1分钟处理 1000 个事务,那么 TPS = 1000/60 = 16.7

7. QPS:每秒查询数,表示系统每秒能够处理的请求(一般指 查询类请求,如接口请求、SQL查询)。一般情况下 TPS <= QPS

8. 吞吐率:系统在单位时间内处理的数据量(比如 MB/s,文件下载、视频流场景常用)。

9. 资源利用率:服务器:CPU、内存、磁盘、网络

CPU 使用率系统 CPU 占用百分比,重点关注是否接近 100%。
内存使用率系统内存消耗情况,是否存在内存泄漏或溢出。
磁盘 I/O读写速率(MB/s)、I/O 等待时间。
网络带宽网络上传/下载流量,是否成为瓶颈(单位:Mbps、KBps)。
连接数系统同时打开的网络连接数(Web 服务、数据库连接池常关注)。

3. 性能测试流程

3.1 需求分析及需求制定(指标值、场景、环境、人员)

3.2 性能测试计划和方案制定

类型目标测试方式重点指标
基准测试 (Benchmarking)确定系统在标准条件下的性能基线固定、理想负载下运行,记录响应时间、吞吐量等,作为后续优化和比较的基线吞吐量 (TPS/QPS)、响应时间
负载测试 (Load Testing)检查系统在期望负载范围内是否正常运行持续增加负载(用户数/请求数)到业务期望值,观察是否还能正常服务吞吐量、响应时间、错误率
压力测试 (Stress Testing)评估系统在超负荷情况下的极限能力持续超出预期负载直到系统崩溃,观察系统的极限承载能力和崩溃恢复能力最大并发、崩溃点、资源利用率
稳定性测试 (Soak / Endurance Testing)检查系统在长时间运行后的稳定性正常负载下运行长时间(几小时~几天),观察是否有内存泄漏/性能下降等问题内存占用、CPU负载、错误率增长趋势

3.3 性能测试准备

3.4 性能测试执行

5. Jmeter 

5.1 逻辑控制器:事务控制器、仅一次控制器、吞吐量控制器

控制器作用典型用途
事务控制器统计整体事务耗时多接口组成一个业务流程
仅一次控制器只执行一次用户登录一次,后续循环业务操作
吞吐量控制器控制执行比例模拟不同业务请求的流量占比

5.2 定时器

5.3 同步定时器(集合点)

📖 定义

  • 它会让一定数量的线程先等待,然后同时释放,实现“并发冲击”的效果。

  • 本质上就是模拟多个用户在同一时间点一起访问系统的场景。

关键点

  • 等待线程达到设定数量 → 一起放行

  • 如果线程数没达到要求,等待时间到了,也会把已有线程一起放行。

参数说明
Number of Simultaneous Users同时释放的线程数,达到后触发。
Timeout (可选)等待的最长时间(毫秒)。超时后即使没满员也会释放当前已有的线程。

总结

作用

使用场景
控制线程同时发起请求模拟并发登录/抢购高峰
检查后端瞬时承载能力压测接口瓶颈、瞬时流量冲击

4. Jmeter 插件的安装及监控的使用

1. 下载一个插件管理包 jmeter-plugins-manager.jar,放到 Jmeter 的 lib/ext 目录下,重启 Jmeter,就有了插件管理

PerfMon Metrics Collector 使用原理:

1. 需要在服务器安装一个 SeverAgent.zip,用于手机服务器的性能参数

2. 在 PerfMon Metrics Collector 组件中通过 4444 端口取捕服务器性能参数

监控图的作用:

1. 看趋势,找性能拐点

2. 写性能测试报告

5. 实际性能压测的场景设置

场景:性能测试用例

1. 旧系统来自于运维

2. 新系统来自于合理预估

服务器(集群)和压力机(集群)

1. 单接口基准测试:使用一个用户测试接口 5 分钟

目的:为了在没有任何压力的情况下查看各项性能指标

2. 单接口负责测试:通过逐渐的对一个接口进行施压直到出现性能拐点,获得被测接口的最大处理能力以及它的相关的性能指标。

3. 混合负载压测场景:目的是为了验证整个业务的最大的最优的性能体现。重点在于模型的设计。模型来源于数据。

  • This group will start: 启动多少个线程
  • First wait for 等待多少秒才开始,一般为 0
  • Then start 一开始有多少个线程数,一般为 0
  • Next add threads every using ranm-up: 每多少秒启动多少个虚拟用户数,每组数据持续运行多少秒
  • Then hold load for 全部加载完毕后,负载运行多少秒
  • Finally stop threads every 每一秒停止 X 个虚拟用户

4. 压力测试场景:验证系统的极限。直到有任何一个性能指标超出预期。

5. 稳定性测试场景:在压力测试的场景下持续运行 4-24 个小时。

5. 无界面压测

1. 节约系统资源

2. 更便捷,只需要启动命令即可进行压测

3. 主要是用于性能压测集成

-n 无界面压测

-t 指定 jmx 脚本

-l 生成 jtl 测试报告

-e -o 直接生成报告

-r 表示启动所有远程压力机进行压测

-R 指定特定的远程压力机进行压测,多台用 , 隔开

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值