目录
1. 什么是性能测试
1.1 常见的性能问题
- 资源泄漏,包括内存泄露
- CPU 使用率达到 100%,系统被锁定等
- 线程死锁,阻塞等造成系统越来越慢
- 查询速度慢,或者列表的效率低
- 受外部系统影响越来越大
1.2 性能测试的概念
测试人员借助性能测试工具,模拟系统在不同情况下性能指标是否正常。
1.3 性能测试和功能测试的区别
功能测试关注软件的功能是否实现,而性能测试不仅要实现功能同时要测试在极端条件下(用户的访问量增加)能否正常实现。
性能测试在功能测试完成后执行。
1.4 性能的好坏如何定义
-
用户登录所需时间短的性能好
-
页面不卡顿的性能好
-
....
1.5 影响性能的因素
- 硬件:服务器 CPU、服务器内核、内存、磁盘、网络带宽...
- 软件:编程语言、算法
- 用户:用户数量、用户操作频率
2. 为什么进行性能测试
- 获取系统性能的指标,作为性能标准的基准
- 验证系统的性能指标是否达到要求(性能需求)
- 应用程序是否能够满足系统要求的各种性能指标
- 应用程序是否能够处理预期的用户负载并有盈余能力
- 应用程序是否能够处理业务所需要的业务数量
- 在预期和非预期的用户负载下,应用程序是否稳定
- 是否能确保用户在真正使用软件时获得舒服的体验
- 发现系统的性能瓶颈,内存泄漏等问题
- 系统正常工作的情况下的最大容量
- 帮助系统运维部门能更好的规划硬件配置
3. 性能测试常见专业术语以及衡量指标
并发:软件在运行的过程中,有大量的用户同时访问。
并发用户数:大量用户请求系统,此时的用户数量就是并发用户数。
并发请求数:大量用户请求系统,服务器接收到的请求数。
用户数:
- 系统用户数:系统数据库中维护的用户数据对应的数量
- 在线用户数:登录系统的用户数量
- 并发用户数:同时对系统发起请求对应的用户数量
系统用户数 > 在线用户数 > 并发用户数(系统限制用户登录成功才能访问系统)
响应时间/平均响应时间(RT/ART):
- 用户响应时间:用户从发起请求到接受到请求花费的时间。
- N1 + A1 + N2 + A2 + N3 + A3 + N4
- 请求响应时间:服务器接受到请求到发出响应的时间。
- A1 + N2 + A2 + N3 + A3
用户的设备、网络、服务器的配置(CPU、内存、带宽)、服务器对应的算法、逻辑处理、数据查询的速度等都会影响响应时间。
事务:此时的事务是针对一个业务单位来定义的。
事务响应时间:服务器处理一个事务所花费的时间。
每秒事务通过数:TPS 指每秒系统能够处理的事务数,它是衡量系统处理能力的重要指标。
点击率:用户在单位时间内提交的 HTTP 请求数。点击率越大,服务器压力越大。
吞吐量:用户和服务器之间数据传输量。
吞吐率:吞吐量/时间(Size/time),单位时间内系统处理的客户请求的数量。吞吐率越大性能越好。
思考时间:用户在进行操作时,每个请求之间的间隔时间。
资源利用率:不同系统资源的使用情况,包含 CPU、内存、硬盘、网络等。
4. 性能测试分类
- 代码级别的性能测试
- 基准性能测试
- 并发测试
- 压力测试
- 配置测试
- 可靠性测试
4.1 基准测试
基准测试也叫一般性能测试。
什么是基准性能测试?
让系统在正常情况下运行,观察系统的性能指标是否正常。
跟前一个版本的性能指标进行对比。
4.2 负载测试
负载测试是指让系统背负一定的压力,运行一段时间观察系统是否存在性能拐点。
4.3 压力测试
让系统处于极限或者饱和状态时,观察系统性能指标(压力测试会使系统崩溃)。
4.4 可靠性测试
使系统长时间运行,观察系统性能是否出现异常。
5. 性能测试如何展开
功能测试展开的流程:
需求分析 -> 测试计划 -> 测试开发、测试设计 -> 测试执行 -> 测试评估
性能测试展开的流程:
需求分析(性能需求) -> 测试计划(确定性能测试的工具) -> 测试开发(性能测试脚本编写) -> 测试执行(跑脚本) -> 测试评估(测试报告,包括性能问题和优化方案)
性能测试的时候,发现的问题不叫 BUG,叫性能瓶颈;开发进行修复的过程叫性能优化。