【软件性能测试-过程详解与案例剖析-第二版(段念)】
1. 什么是软件性能
- 用户视角
软件对用户操作的响应时间。从开始操作到所有数据返回。(c/s架构可采用少部分数据返回便呈现的技巧,b/s可通过前端性能优化) - 管理员视角
管理员关心的问题 | 软件性能描述 |
---|---|
服务器的资源使用状况合理吗 | 资源利用率 |
应用服务器和数据库服务器的资源使用状况合理吗 | 资源利用率 |
系统是否能够扩展 | 系统可扩展性 |
系统最多支持多少用户访问?系统最大业务处理量是多少 | 系统容量 |
系统性能可能的瓶颈在哪 | 系统可扩展性 |
系统能否支持7*24小时的业务访问 | 系统的稳定性 |
- 开发视角
开发人员关心的问题 | 问题所属层次 |
---|---|
架构设计是否合理 | 系统架构 |
数据库设计是否合理 | 数据库设计 |
代码是否存在性能瓶颈 | 代码 |
系统中是否有不合理的内存使用方式 | 代码 |
系统中是否有不合理的线程同步方式 | 设计与代码 |
系统中是否存在不合理的资源竞争 | 设计与代码 |
- web前端性能
前端响应时间指浏览器的页面加载时间。包括对html的解析,对页面上图片和css等文件等获取和加载,javascript的执行时间以及对页面进行展示所花费的时间。
2. 软件性能的几个主要术语
- 响应时间:
对请求做出响应所需要的时间。合理的响应时间取决于实际的用户需求,而不能依据测试人员的设想来决定。 - 并发用户数:
一般的估算公式------C=nL/T;C为平均并发用户数;L为login session的平均长度;T为考察的时间段长度,典型oa系统为8小时工作时间;n为login session的数量; - 吞吐量:
一般的估算公式-------F=NR/T;F表示吞吐量;N表示virtual user的个数;R表示每个vu发出的请求数量;T表示性能测试的时间; - 性能计数器(counter):
描述服务器或操作系统性能的一些数据指标。比如内存,cpu, 磁盘io,进程时间等都是常见的计数器。计数器在性能测试中发挥着监控和分析的作用,尤其是在分析系统的可扩展和性能瓶颈定位时。 - 思考时间:
也称休眠时间,从业务角度讲,该时间指的是用户进行操作时,每个请求之间的间隔时间。
3. 软件性能测试方法论
-
SEI负载测试计划过程:
SEI load testing planning process 是一个关注于负载测试计划的方法,主要有六个关注域:目标、用户、用例、生产环境、测试环境、和测试场景。 -
RBI方法:
rapid bottleneck identify 是用于快速识别系统性能瓶颈的方法。该方法基于以下事实:
一、发现的80%系统的性能瓶颈都由吞吐量制约。
二、并发用户数和吞吐量瓶颈之间存在一定的关联。
三、采用吞吐量测试可以更快速的定位问题。 -
性能下降曲线分析法:
描述的是性能随着用户数的增加而出现下降趋势的曲线。这里的性能可以是响应时间,也可以是吞吐量或单击数/秒单数据。一般来说,性能主要指响应时间。
下降曲线可分为以下几个部分:单用户区域;性能平坦区;压力区域;拐点; -
LoadRunner的性能测试过程:
计划测试–测试设计–创建VU脚本–创建测试场景–运行测试场景–分析结果 -
Segue提供的性能测试过程:
通过单用户对应用的访问获取性能取值的基线,然后设定可接受的性能目标(响应时间),用不同的并发用户数等重复进行测试。该过程数一个不断try–check的过程。非常适合性能调优和优化。 -
敏捷性能测试:
一、在每个迭代目标中包含明确的性能目标。该目标可能基于端到端的,接口的,面向具体的函数的。
二、建立不同层次的性能测试。该目标可能基于端到端的,接口的,面向具体的函数的。
三、完全或接近完全自动化的性能测试。因为要达成敏捷与快速,自动化三必须的选择。
四、使用测试驱动开发的方法保证性能和性能优化。不低于上一个版本的性能表现可以作为一个基本通用的标准。 -
本书提供的性能测试模型:
一、通用性能测试模型(PTGM: Performance Testing General Model):
测试前期准备–测试工具引入–测试计划–测试设计与开发–测试执行与管理–测试分析
二、敏捷模型(ATML)
三、TMap