1. 概述
本文参考了B站-黑马程序员-性能测试教程,是在其基础上的总结和提炼
1.1 概述性能测试
- 满足真实场景的业务需求,支持大量用户,满足商用需求
1.2 性能的含义
软件质量属性中的"效率特性"
- 时间特性:系统处理用户请求的响应时间
- 资源特性:系统运行过程中,系统资源的消耗情况(CPU,内存,磁盘)
1.3 性能测试的含义
使用自动化工具,模拟不同的场景,对软件的各项性能指标进行测试和评估的过程
1.4 性能测试的测试对象(服务器+数据库)
- 后台处理程序的性能(代码性能)
- 应用服务器、数据库、架构设计等是否存在瓶颈
- 服务器资源消耗(CPU,内存,磁盘,网络)
1.5 性能测试的目的
- 评估当前系统的能力
- 验收第三方提供的软件
- 获取关键的性能指标,与其他类似的产品进行比较(跑分)
- 寻找性能瓶颈,优化性能
- 12306订票
- 评估软件是否能够满足未来的需要
- 淘宝双11销售趋势
1.6 常见性能需求
- WEB首页打开速度5s以下,登录速度15s以下
- 邮件服务支持50万个在线用户
- 计费话单成功率99.99%以上
- 在100个并发用户的高峰期,邮箱的基本功能,处理能力达到10TPS
- 系统能在高于实际系统运行压力1倍的情况下,稳定运行12小时
- 这个系统能够支撑200万的vu(每天登录系统的人次),vu—visual user虚拟用户
1.7 功能测试和性能测试的对比
功能测试
验证软件系统操作功能是否符合产品功能需求规格,主要焦点在于功能(正向、逆向)
正向:条件满足需求,比如输入正确的用户名密码,登录成功
逆向:输入条件不满足需求,比如输入错误的用户名密码,登录失败给出提示
bug:结果不满足需求
性能测试
只针对正向的功能进行测试
验证软件系统是否满足业务需求场景,主要焦点是业务场景的满足(时间,资源)
- 100w人使用正确的用户名密码登录,1s内能登录成功(时间)
- 同时服务器的CPU使用率低于70%,内存使用率低于60%(资源)
关系
性能测试不是必须的;但对于一个相对大型的项目来说,一般功能测试通过后,进行性能测试
2. 性能测试的类型
2.1 基准测试
原因
-
单用户性能不达标,那就没有必要进行多用户的性能测试了
-
影响性能的因素有很多(服务器配置、资源、代码效率),为了判断到底是哪些因素导致性能变好/变坏,通过建立一个基准,来判断,基准作为一种参考
定义
狭义上讲,就是单用户测试(进行多次重复测试),测试环境确定后,对业务模型中重要业务做单独测试,获取单用户运行时的各项性能指标
广义上讲,通过基准测试建立一个已知的性能基准线,当系统的软硬件环境发生变化后再进行一次基准测试以确定变化对性能的影响
用途
- 基准测试不会单独存在,为综合场景测试提供参考依据
- 为多用户并发测试和综合场景测试提供参考依据
- 为系统/环境配置,系统优化前后的性能提升/下降提供参考指标
2.2 负载测试
平时运行没问题,双十一运行是否没问题
定义
通过逐步增加系统负载,确定在满足系统性能指标的情况下(如响应时间),找出系统所能承受的最大负载量的测试
作用
- 通过负载测试,可以确定系统的最大负载量和极限负