相关分类 分类展开/收起
性能测试
软件性能测试是在交替进行负荷和强迫测试时常用的术语。理想的“软件性能测试”(和其他类型的测试)应在需求文档或质量保证、测试计划中定义。软件性能测试一般包括负载测试和软件压力测试。

目的


为了验证系统是否达到用户提出的性能指标,同时发现系统中存在的性能瓶颈,起到优化系统的目的。

基本概念


通常验证软件的性能在正常环境和系统条件下重复使用是否还能满足性能指标。或者执行同样任务时新版本不比旧版本慢。一般还检查系统记忆容量在运行程序时会不会流失(memory leak)。比如,验证程序保存一个巨大的文件新版本不比旧版本慢。

测试术语


响应时间


我把“响应时间”的概念确定为“对请求作出响应所需要的时间”,把响应时间作`为用户视角的软件性能的主要体现。响应时间划分为“呈现时间”和“系统响应时间”两个部分。
其中“呈现时间”取决于数据在被客户端收到响应数据后呈现页面所消耗的时间、而“响应时间”指J2EE应用服务器从请求发出开始到客户端接受到数据所消耗的时间。软件性能测试一般不关注“呈现时间”,因为呈现时间很大程度上取决于客户端的表现。在这里我们没有使用很多软件性能测试定义中的概念——“系统响应时间”定义为“应用系统从请求发出开始到客户端接收到最后一个字节数据所消耗的时间”,没有使用这种标准的原因是,可以使用一些编程技巧在数据尚未完全接收完成时进行呈现来减少用户感受到的响应时间,对于HNDLZCGLXT的这个项目中,我们针对C/S系统采用前者标准,对于B/S我们依然采用后一种标准。

并发用户数


我把“并发用户数”与“同时在线数”进行区别对待,我的“并发用户数”的标准是:并发用户数取决于测试对象的目标业务场景,因此,在确定这个“并发用户数”前,必须(必要)先对用户的业务进行分解、分析出典型的业务场景(也就是用户最常使用、最关注的业务操作),然后基于场景采用某些方法(有多种计算并发用户数的数学模型与公式)获得“并发用户数”。

这样做的原因是:假设一个应用系统、最高峰有500人同时在线、但这500人却不是并发用户数、因为假设在一个时间点上、有50%的人在填写复杂的表格(填写表格动作对服务器没有任何负担、只有在“提交”动作的时候才会对服务器系统构成压力)、有40%的人在不停的从一个页面跳转到另外一个页面(不停发出请求与回应、产生服务器压力)、还有10%的人挂在线上,没有任何操作在发呆(没有对服务器构成压力的动作)。因此只有那40%的人真正对服务器产生了压力,从这里例子可以看出、并发用户数关心的是不但是业务并发用户数、还取决于业务逻辑、业务场景。因此我们需要本文第六部分软件性能测试文档4、5、6。

吞吐量


我把吞吐量定义为“单位时间内系统处理的客户请求的数量”,直接体现软件系统的性能承载能力,对于交互式应用系统来说、吞吐量反映的是服务器承受的压力、在容量规划的测试中、吞吐量是一个重要指标、它不但反映在中间件、数据库上、更加体现在硬件上。我们在以下方面利用这个指标:

(1) 用来协助设计软件性能测试场景,衡量软件性能测试是否达到了预计的设计目标、比如J2EE应用系统的连接池、数据库事务发生频率、事务发生次数。

(2) 用来协助分析性能瓶颈、参照本文第二部分总的RBI方法。

性能计数器


性能计数器式描述服务器或操作系统性能的一些数据指标、例如对WINDOWS来说使用内存数、CPU使用率、进程时间等都是常见的计数器。 [Page]
对于性能计数器这个指标来说、需要考虑到的不但有硬件计数器、web服务器计数器、Weblogic服务器计数器、Servlet性能计数器、EJB2的性能计数器、JSF性能计数器、JMS性能计数器。找到这些指标是使用性能计数器的第一步、关键是找到性能瓶颈、确定系统阀值、提供优化建议才是性能计数器使用的关键。性能计数器复杂而繁多、与代码上下文环境、系统配置情况、系统架构、开发方式、使用到的规范实现、工具、类库版本都有紧密的联系、在此不作赘述。

思考时间


我把思考时间确定为“休眠时间”。从业务系统的角度来说,这个时间指的是用户在惊醒操作时、每个请求之间的时间间隔、从自动化测试的角度来说、要真实的测试模拟用户操作、就必须在测试脚本中让各个操作之间等待一段时间、体现在脚本上就是在操作之间放置一个Think的函数,体现为脚本中两个请求语句之间的间隔时间、不同的测试工具提供了不同的函数或方法来实现思考时间、比如HP LoadRuner和IBM Rational Performance Tester的方式就完全不同。

测试要点


1、 软件性能测试是在功能测试完成之后进行。

2、 软件性能测试计划、方案一般与测试用例统一在一个文档里。

3、 测试环境应尽量与用户环境保持一致。

4、 软件性能测试一般使用测试工具和测试人员编制测试脚本来完成,软件性能测试的环境应单独运行尽量避免与其他软件同时使用。

5、 软件性能测试的重点在于前期数据的设计与后期数据的分析。

6、 软件性能测试的用例主要涉及到整个系统架构的问题,所以测试用例一旦生成,改动一般不大,所以做软件性能测试的重复使用率一般比较高。(说明:当系统中出现的某个功能点需要修改,它一般只会影响到功能测试的设计用例,而对于软件性能测试,很少影响到软件性能测试的设计用例。但是如果某个功能有较大的修改,软件性能测试也应该进行重新测试。)

探索更多内容