定义:测试人员借助性能测试工具,模拟系统在不同场景下,对应的性能指标是否达到预期(满足需求)。
性能测试是一项综合性的工作,致力于暴露性能问题,评估系统性能趋势。实质上是利用工具去模拟大量用户操作来验证系统能够承受的负载情况,找出潜在的性能问题分析并解决,找出系统性能变化趋势,为后续的扩展做准备。
性能测试和功能测试的区别:
功能测试 依靠人工执行,只关心软件是否实现了需求;性能测试 靠工具完成,检查软件在一些极端场景下,是否能正常运行。
影响软件性能的因素:
硬件:服务器CPU利用率、内存、磁盘操作频率、CPU核心数
软件:算法、编程语言
用户:用户数量、用户使用时长、用户访问频率
进行性能测试的原因:
获取系统的性能指标,作为性能指标的基准;
根据需求,验证系统的性能指标是否达到了要求;
能够发现系统的性能瓶颈,内存泄漏等问题;
确定系统正常工作的情况下的最大容量;
帮助系统运维部门更好的规划硬件配置
性能测试常见术语及性能指标
并发:①大量用户 ②同时
业务层面的并发用户数:同时向服务器发送请求的用户的数量
后端服务器层面的并发用户数:同时向服务器发送请求的请求数量
用户数:系统用户数(系统注册的用户)、在线用户数(成功登录系统的用户数)、并发用户数
响应时间 RT / 并发响应时间 ART
用户响应时间:完成某个操作所需要的时间(N1+A1+N2+A2+N3+A3+N4)
请求响应时间:服务器收到请求到发出响应的时间(A1+N2+A2+N3+A3)
影响软件响应时间的因素:网络、服务器(硬盘、CPU、算法逻辑)、数据库性能、用户设备
事务响应时间:程序处理一个事务花费的时间
事务:业务度量单位,是指一组密切相关的子操作的组合
每秒事务通过数:处理的事务数量/事务花费的时间
点击率:用户向web服务器提交的HTTP请求数 / 时间
吞吐量:用户一次请求和服务器之间的数据交互量
吞吐率:吞吐量 / 时间
思考时间:每个请求的间隔时间
性能测试分类
基准性能测试
系统的第一个版本,系统在正常情况下运行的性能指标,针对软件性能进行摸底。
通过性能测试获取系统的性能指标,建立一个性能基准,作为以后性能测试的参考。
负载性能测试
验证软件在一定的压力情况下运行,观察性能指标是否出现拐点。
压力测试
验证系统长期处于临界饱和阶段的稳定性以及性能指标的变化,试图找到系统处于临界状态时的主要瓶颈点。
可靠性测试
验证系统在一个持续的时间段内(满足性能要求的情况)运行,在这个运行时间段,观察系统各项性能指标是否正常。
执行流程
功能测试执行流程:需求分析 ——> 测试计划 ——> 测试设计 ——> 测试执行 ——> 测试评估(测试报告) ——> 上线
性能测试执行流程:需求分析 ——> 测试计划 ——> 选择性能测试工具 ——> 性能测试脚本编写 ——> 执行性能测试脚本 ——> 产生一个性能测试报告
性能测试中出现了不符合预期的情况,不叫bug,叫 性能瓶颈 。出现性能瓶颈,开发修复过程叫优化。