软件性能测试理论分析研究

文章摘要:通过软件性能测试可以测算出当前系统可以承载的负荷,保证系统在实际的压力①下正常工作。本文主要阐述了∏软件性能测试的分类和衡量指标,并提出了分析和调优的方法,最后罗列了一些常见的性能瓶颈和产生原因。

一、软件性能测试的分类及衡量指标

软件性能测试是系统测试的一种,在软件质量模型中,软件性能『测试是属于效率这一类的。对软件的性能进行衡量,需要考虑软件效率的时间特性、资源利用率及效率依从性。时间特性是指在特定的软硬件条件下,软件产品在运行功能时需要满足的系统响应时间及吞吐率能力。资源利用率是指软件产品在执行功能时需要满足合适的数量和类别的软硬件◎资源的能力。效率依从性是指软件产品遵循与▓效率相关的标准或约定的能力。

软件性能测试的最终目的是验证软件系统的各种性能指标是否满足用户需求及根据测试结果对系统中可能存在的性能瓶颈进行分析和优化。主要包括以下几个方︾面:

1、对系统的负载能力进行∮评估。根据测试数据,可以对系统的内存、进程、磁盘、网络等负载能力进行评〗估,并根据评估结果分析定位性能瓶颈,为性能的优化提供决策依据。

2、识别系统弱点。大量的负载可以评估系统在极端情况下的性能状况,找到系统的薄弱点并进行修ζ 复。

3、系统调优。通过反复运∮行测试,对系统性能优化后的结果进行验证,检查其是否得到了预期的结果。同时,长时间运行测试,可能会导致内存泄漏、系统崩溃等问题的发生,揭示程序中隐含的问题或冲突。

4、验证◥系统的可靠性、稳定性。在特定的负载情况下,长时间运行测试可以对系统的可靠性和稳定性进行验∴证。

对一个软件系统而言,性能主要包括软件的资源占用率,系统的稳定性、可靠性等。本文中提到的软件性能测试主要是通过自动化测试工具Performance Center模拟测试业务时正常、异常及峰值负载条ㄨ件来对比模块的各项性↑能指标进行测试。

软件性能测试的方法很多,本文主要介绍以下四种类别的测试。

??? 1、负载测试(Load Testing)。指在不同的软硬件及网络环境下,运行一种或多种业务,通过对系统逐步增加负载的方式,对系←统性能的变化进行测试,并确定系统在满足各项性能指标的情况下,所能承受的各项阀值。

??? 2、基准测试(Benchmark Testing)。指模拟〇一定数量的虚拟用户行为,在系统测评或调优过程中,根据测试出的基准数据运行相同的业务场景并对测试结果进行分析比较,以确定测试结果是否能对系统调优提供决策数据或对系统性能的改善提供帮助。

??? 3、压力测试(Stress Testing)。指通过逐渐增加系统负载,确定在什么负载条件下系统性能处于失效状态,并获得系统所能承受的最大压力数据,并根据测试数据对系统的压力瓶颈进行定位及调优。压力测试更强调在极端情况下系统的可靠性及健壮性。

??? 4?、并发测试(Concurrency Testing)。主要用来测试系统是否存在死锁、数据错误及在并▽发用户量大的情况下系统是否会出现页面滞后、系统崩溃等故障。并发测试是软件性能测试中▲最常用的测试方法,为了避免出现函数方法或数据库等在并发下的错误,需要专门针对每个模块进行并发测试。

对于一个应用系统来说,还需要对性能指标进行监控。衡量一个软件系∑统性能的常见指标有:

1、响应时间(Response time)。对于网站系统来说,响应时间就是从点击了一个页面计时开始,到这个页面完全在浏览器里展现计时结束的这一段时间间隔,响应时间越短越好.可以细分为服务器端响应时间、网√络响应时间、客户端响应时间。响应时间描述如下图所示。

软件性能测试理论分析研究(图1)

在软件性能测试中一般是通过事务函数Transaction Response Time来统计响应时间。

2、吞吐量(Throughput)。吞吐量反映的是系统的处理能力,具体来说,就是指软件系统在每单位时间内能处理多少个事务/请求/单∮位数据等。吞●吐量的大小由负载或行为方式来决定。在Performance Center中,吞吐量反映单位时间内系统处理的事务数目。一般以TPS(Transaction Per Second)即每秒事务数表示。

3、资源使用率(Resource utilization)。指系统在负载情况下软硬件上各种资源的占用情况。例如,CPU占用率、内存使用ㄨ率、磁盘I/O等。

4、并发用户々数(Concurrent users)。并发用户数用来度量多个用户同时访々问同一个应用、同∮一个模块或者数据记录时是否存在死锁或者其他性能问题,反映了系统的并发处理能力。

5、点击数(Hits per second)。点击数是按照客户端向Web Server 发起了多少次 HTTP请求计算的。

二、性能分析及调优原理

软件性能测试☉的目的是评估当前系统性能指标,根据测试结果对性能瓶颈进行定位及优化,以预防规避性能风险。在进行系统的调优过程中,好的策略是按照由易到难的顺序对系统性能进行调优。性能分析主◥要是根据测试结果对可能导致性能瓶颈的原因进行定位,而调优则是解决发现的性能瓶颈。可以通过以下两种方法╳来对性能进行调优:

(一)、性能分析法

1、指标达成法。指根据用户需求,将得出的测试结果与之进行比↘较,如果能够满足用户需求则测试通过。如果不满足,则对测试』数据进行分析定位,并解决查找出的性能问题▓,直到系统性能在用户可接受的范围内。

2、最优化分析法。指根据测试数据,对性能瓶颈进行分析及优化,以使系统资源得到充分利用,使系统的处理能力最大化。

性能调优方向如下图所∩示:

软件性能测试理论分析研究(图2)


1)应用程序诊断。通过模拟大量用户的操作对系统形成负载,根据测试结果对应用程序进行检验,看其是否能够满足用户的性能需求。如果满足需求◢则测试通过。反之,则对测试数据进行分析定位并找出解决瓶颈的方▽案,以保证系统的可靠性、稳定性。

2)系统调优。主要包括对独立的瓶颈进行调优及对软硬件迭代调优。在测试过程中,模拟大量用户形成负载,并且对系统的软硬件环境进行迭代测试,根据测试结果找出影卐响性能的要素,对其进行ζ优化后最终提升系统的性能。对系统软硬件进行迭代调优是一个循序渐进的过♀程。

(二)、调优的基本∑步骤

对系统进行分析及调优的步骤主要包括:

1、确定详细的软件性能测试计划、方案和目标,并按♂优先级排列。

2、利用合适的软件性能测试工具执行测试,并对测试结果进行分析和整合。

3、拆分分ζ 布式系统的各个组件,如Web层、业务层、集成层、网络层等,分别进行调优。

4、按照软件性能测试 -> 定位瓶颈 -> 性能调优 -> 再次执行测试的方法对系统进行逐步调优。

5、确定影响系统性能的主要因素:CPU、Memory、Process还是I/O。

6、找出主要的性能瓶颈,首先处■理最容易的瓶颈问题,再重复测』试。

7、提高 CPU的性能:例如更优化的算法、更高效率的代码、优化的SQL 等,以减少↑短期生存的对象。

8、提高内存性能:主要是减少长期生存的对象。

9、提高I/O性能:重新对应用进行设计,减少输入输↙出的交互。

10、性能优化完成之后,进行 QA 测试。

11、在代码中对优化的地方进行记录,并对旧代码进行注々释。

?

三、常见的性能瓶颈

1、硬件上的性能瓶颈。

主要指RAM、CPU方面的瓶颈。分为服务器操作系统瓶颈;Web服务器、数据库等中间件瓶颈;服务器硬件瓶颈;数据库设◥计、算法、业务逻辑、SQL语句等的应用瓶「颈及网络瓶颈。例如,在测试过程中发现数据库服务器CPU的持◥续利用率超过90%以上,此数据库服务器需☆要5个CPU、10GB 内存,这时可以认为系统出现了硬件上的性能瓶颈。

2、应用软件上的性能瓶颈。

一般指的是应用服务器、Web服务㊣ 器等应用软件,还包括数据库系统。例如,在Weblogic平台上配置⊙了JDBC连接池▆的参数,最大连接数为50,最小连接数为5,增加量为10。在测试时发现,当负载增加时,现有的连接数不足,系统会〗动态生成10个新的︼连接,导致交易处理的响应时间大大增加。这时可以认为在应用软件上出现了性能瓶颈。

除此之外,还包括应用程序』上的性能瓶颈、操作系统上的性能瓶颈、网络设备上的性能瓶颈等.性能瓶颈的分析及定位十分复杂,本文只对硬件上的性能瓶∞颈和应用软件上的性能瓶颈进行简单介绍。

四、常见性能问题及成因

1、常见√的性能问题有以下几个特征:

1)随着№时间推移越来越慢:在负载不变的情况下,随着时间的推移,系统可能由于缓存中数据量大或者达到某个阈值,导致页面滞后,系统被锁定或出现大量错◢误而崩溃。

2)随着负载增加越来越慢。在负载增加的情况下,每增▽加若干用户,系统响应时间慢,在用户较少的情况下,系统响应时间相对较快。

3)锁定:在系统出现挂起或错误的情况下加速出现锁定,直到系统完全锁定。通常需要重启系统才ξ能解决。

4)突然混乱。系统运行一直都较为正常,在持续运行或者负载量较大的情况下,系统突然出现大量错误或锁定。

2?、常见性能问题及成因包括:

1)资源泄漏。主要是CICS 事务网关连接、JDBC语句等泄露导致了桥接层及对后端系统产♂生了影响。并随着时间的推移,出现锁定或系统崩溃等问题。

成因:遗漏了finally块,没有用close()关闭外部资源的对象。

2)内存泄露。分为线性内存泄漏和指数方式内存泄漏。内存泄露会随着时间推移及负载增多而增加系统内存消耗降低系统性能。

成因:原因较多,主要与资源泄露及向集合(Vector、HashMap)中加入不删除的元素有关Ψ 。

3)外部瓶颈问题。随着负▂载的增加,后◤端运行持续缓慢,减缓了应用服务器及应用程序的响应时间.或者应用程序通过大量请求滥用后端系统。

成因:后端系统不合理或者冗余的工作请求。可以通过咨询专家、分解工作请求等方法解决。

4)线程阻塞、死锁/活动锁。“获得顺序”的问题或▲线程遇到同步阻塞,随着负载量的增加↘△,系统会出现挂起、锁定或异常错误。

成因:锁定策略及“获得顺序”的算法不合理。

5)中间层问题。数据库连接池管理及JDBC驱动程序桥接层不合理,随着负载的增加系统持续缓慢。在早期阶段很容易与外部瓶颈混淆。

成因:有可能是桥接层和外部系统的版「本不兼容造←成的。

6)内部资源瓶颈。对象池、线程池等内部资源稀缺,随着负载的增加系统持续缓慢并且出现挂起或异常错误。

成因:分配不足或过度使用。可以根据预期的←最大负载量,通过提【高对象池、线程池的最大尺寸等方法解决。

软件性能测试对于确保系统的正◆常运行有着重要的意义。因此,分析和研究产生性能瓶颈的成因,有助于与我们更好的理解软件性能测试,解决性能瓶颈问题,确保系统健康有序的运行。

?

联系我们

电话:400?108?9880?

网址:www.svtest.cn

? 邮箱:kj-sv@svtest.cn

传真:020-31707367


联系地址
广州:广州开发区科学城玉树创新园?J?栋?103?房
北京:北京市海淀区永定路?15?号院南门?208?室
长沙:长沙市↓雨花区保利东郡?8?栋?1803?房
深圳:深圳市南山区西丽深圳大学城学苑大道?1068?号(深圳先进院内)
石家庄:石家庄市鹿泉区山尹村镇滨海路19号2号楼


相关推荐

09-21
2022
数字诊疗装备可靠性工程技术》介绍了数字诊疗装备可靠性的背景、基础知识、设计方法、失效建模分析方法、仿真计算分析方法、测试技术,围绕“十三五”期间国家“数字诊疗装...
09-20
2022
空调澳大利亚澳大利亚标委会发布一系列新版标准,包括:● AS/NZS 60335.1:2022 家用及类似用途电◥器-安全 第1部分:一般要求(对应IEC 6.0...