第1章 软件性能测试基本概念
1.1什么是软件性能
性能是一种指标,表明软件系统或构件对于其及时性要求的符合程度;其次,性能是软件产品的一种特性,可以用时间来进行度量.
性能的及时性用响应时间或者吞吐量来衡量.
对于交互式应用(例如典型的web应用)来说,我们一般以用户感受到的响应时间来描述系统的性能,而对于非交互式应用(嵌入式系统或者银行等的业务处理系统)而言,响应时间是指系统对事件产生响应所需要的时间.
1.1.1用户视角的软件性能
软件对用户操作的响应时间.分客观和主观两种情况.
1.1.2管理员视角的软件性能
系统的响应时间+系统状态的相关信息.(系统的可扩展性\并发能力等指标)
1.1.3开发视角的软件性能
响应时间+性能瓶颈.
如何通过调整设计和代码实现,或是如何通过调整系统设置等方法提高软件的性能表现.
对软件性能问题进行定位,了解性能的制约因素和引起性能问题的关键原因.
1.1.4总结
1.2软件性能的几个主要术语
1.2.1响应时间
对请求做出响应需要的时间.
合理的响应时间取决于实际的用户需求.
1.2.2并发用户数
1)业务角度 业务并发数
2)服务端承受的压力 并发数
1.2.3吞吐量
吞吐量是指”单位时间内系统处理的客户请求的数量”,直接体现软件系统的性能承载能力.一般来说,吞吐量用请求数/秒或者是页面数/秒来衡量,从业务的角度,吞吐量也可以用访问人数/天或者是处理的业务数/小时等单位来衡量.当然,从网络的角度来说,也可以从字节数/天来考察网络流量.
不同的并发用户数,对同一个系统施加相同的吞吐量压力,很可能得到不同的测试结果.
吞吐量本身是个直观的指标,两个不同系统可能具有不同的用户数和用户使用模式,但如果具有基本一直的吞吐量,则可以说,他们具有基本相同的平均处理能力.
1.2.4性能计数器
性能计数器(Counter)是描述服务器或者操作系统性能的一些数据指标.例如,对于windows系统来说,使用内存数(Memory In Usage),进程时间(Total Process Time)等都是常见的计数器.
在性能测试中常用资源利用率进行横向的对比.e.g.在进行测试时发现,资源A的使用率达到了接近100%的数值,而其他资源利用率都处于比较低的水平,则可以很清楚地知道,资源A就很有可能是系统的一个性能瓶颈.
1.2.5思考时间
业务角度:这个时间指的是用户在进行操作时,每个请求之间的间隔时间.
如果测试的目的是为了”验证应用系统具有预期的能力”(也就是所说的”能力验证”的应用领域),就应该尽量模仿用户在使用业务时的真实思考时间;如果目的是进行更一般的研究,例如”了解系统在压力下的性能水平”或者”了解系统承受压力的能力”(也就是所说的”规划能力”的应用领域),则可以采用0思考时间.
1.3软件性能测试方法论
1.3.1SEI负载测试计划过程
关注于负载测试计划的方法,其目标是产生”清晰,易理解,可验证的负载测试计划”.过程包括6个区域:目标,用户,用例,生产环境,测试环境和测试场景.
1.3.2RBI方法
RBI(Rapid Bottleneck Identify)方法是一种用于快速识别系统性能瓶颈的方法.给方法基于以下一些事实:
1.发现的80%系统的性能瓶颈都有吞吐量制约.
2,并发用户数和吞吐量瓶颈之间存在一定的关联;
3.采用吞吐量测试可以更快速定位问题.
1.3.3性能下降曲线分析法
性能下降曲线实际上描述的是性能随用户数增长而出现下降趋势的曲线.这里所说的性能可以是响应时间,也可以是吞吐量或者点击数/秒的数据.一般主要指响应时间.
这种分析法主要关注性能下降曲线上的各个区间和响应的拐点,通过识别不同的区间和拐点,从而为性能瓶颈识别和性能调优提供依据.
1.3.4LoadRunner的性能测试过程
计划测试,测试设计,创建VU脚本,创建测试场景,运行测试场景和分析结果6个步骤.
1.3.5Segue提供的性能测试过程
从确定性能基线开始,通过单用户对应用的访问获取性能取值的基线,然后设定克接受的性能目标(响应时间),用不同的并发用户数等重复进行测试.适合性能调优和性能优化.
1.3.6本书提供的PTGM模型
过程分为测试前期准备,测试工具引入,测试计划,测试设计与开发,测试执行和管理以及测试分析等6个步骤.