当前位置:首页 期刊杂志

软件性能测试相关理论研究

时间:2024-05-30

孙嘉敏

摘 要:由于软件行业的迅猛发展,软件质量的要求也越来越高。在要求软件功能的同时,软件或者WEB的性能也越发引起人们的关注。功能测试只关注与某个功能点,而性能测试则关注整个系统,在软件质量模型中,性能测试属于效率的一类。本文即从上述思想出发,主要关注了性能测试的关注点、性能测试的不同指标和性能测试过程中的注意点。得出性能测试是软件开发过程中不可缺少的一部分和团队协作才是进行性能测试的最好方式的结论。

关键字:性能测试;资源消耗;负载测试;测试团队

一、背景

1.性能测试的相关概念。测试的定义为:带着发现缺陷的意图来执行工作产品。而性能测试(Performance Testing)的定义为:在一定的负载情况下,系统的响应时间等特性是否满足特定的性能需求。从某些角度来讲,性能其实是功能的一种。

软件的性能包括两个方面的内容:时间特性和资源特性。时间是指系统处理客户请求的响应时间;资源特性是指在进行性能测试过程中,系统资源消耗的情况。常见的系统资源主要包括处理器(CPU)、内存和磁盘等。所以通常说的软件性能不仅仅包括响应时间,还包括系统资源消耗。

2.性能测试的关注点。不同的人关注的性能层次有所不同。通常情况下,关注软件性能的人主要包括三类人:用户、系统管理员与性能测试与和性能测试工程师和软件开发工程师,这三类人各自关注的内容如下:

(1)用户。从用户的角度来看,软件测试是软件系统对用户提交所响应的时间。通俗的讲,如果用户单击一个提交或输入一个URL地址,随后系统把结果呈现到用户面前,这个过程所花费的时间即为用户对软件性能的直观印象。用户体会的响应时间为从执行操作到已经有一部分数据呈现出来的时间,而真正的响应时间应该是系统将全部数据呈现出来的时间。

(2)系统管理员和性能测试工程师。从系统管理员和性能测试工程师的角度来说,在响应时间方面的理解与用户完全一致。但系統管理员和性能测试工程师不仅仅不住系统的响应时间,还关注服务器系统资源的使用情况。

(3)软件开发工程师。从软件开发工程师的角度来说,他们关注用户和管理员关注的所以问题。另外还关注内存泄漏、数据库是否出现死锁、中间件以及应用服务器等问题。

二、性能测试的几大分类

1.负载测试。负载测试(Load Testing)是指在一定的软件、硬件环境下,运行一种或者是多种业务,在不同虚拟用户数量情况下测试服务器的性能指标是否在用户的峰值范围内一起确定系统的最大用户数等。强调的是在一定的环境下系统能够达到的峰值指标,大多数的性能测试都是负载测试。

2.压力测试。压力测试(Stress Testing)是指在一定的软件、硬件等环境下,模拟大量的虚拟用户想服务器产生负载,使服务器的资源处在极限状态下并长时间的连续运行,以此来测试服务器在高负载的情况下是否能够稳定工作。负载测试和压力测试相似,但负载测试用于正常峰值的测试,而压力测试用于测试峰值极限的维持时间。

3.并发测试。并发测试(Concurrency Testing)是指通过模拟多个用户访问同一个应用、存储过程或数据记录以及其他并发操作,测试是否存在死锁、数据错误等故障。

4.基准测试。基准测试(Benchmar Testing)是指在一定的软件、硬件等环境下,模拟一定数量的虚拟用户运行一种或多种业务,将测试结果做为基准数据,在系统调优或系统评测的过程中,通过运行相同的业务场景来比较结果,确定调优的结果是否达到预期效果或者为系统的选择提供决策数据。基准测试一般用于配置测试。

三、性能测试的相关指标

1.响应时间。响应时间是指应用系统从发出请求开始到客户端接收到所有数据所消耗的时间。强调所有数据都已经被呈现到客户端所花费的时间。在性能测试中是通过事物函数来完成对响应时间的统计,事物是指做某件事的操作,事物函数会记录做这件事情和该事情做完之间的时间差,称为事务响应时间。

2.并发用户数。并发用户数是指同一时刻与服务器进行数据交互的所有用户数量。其中有两点需要注,第一:同一时刻,表示并发强调的是用户同时对服务器进行施压。第二:强调要与服务器进行数据交互,如果未和服务器进行数据的交互,这样的用户是没给服务器带来压力的。

3.吞吐量。在性能测试过程中,吞吐量是指单位时间内服务器处理的字节数,吞吐量的单位为字节每秒。吞吐量的大小直接体现服务器的承载能力。

四、性能测试注意点

1.性能测试应尽早进行。测试的工作越开展损失越少,性能测试也是如此。当系统集成后,想要从众多的模块中分析定位模块瓶颈是十分困难的,但是如果在项目初期就能对每个模块进行性能测试,问题自然就得到解决。

2.性能测试需要团队支持。质量是靠开发人员的技术,而不是依靠测试人员的测试。性能也遵循同样的道理。并不是说一个公司拥有一个完美的性能测试部门,就能保证软件的完美,性能的优化需要开发部门和相关部门的通力合作。

3.性能测试需要独立的测试环境。性能呢个测试的环境独立性相对于功能测试更加严格,需要独立的网络和硬件环境,来保证被测系统是独立可控的,甚至需要专门的管理员和流程来对被测环境进行控制。

4.测试前定义明确的测试目标。性能测试的执行成本较高,为了保证性能测试执行的有效性,在每一个性能测试前应明确本次性能测试的目标,并对这个目标进行监控和验证。

5.不要在服务器上进行性能测试。虽然服务器可以做为负载生产和被负载的对象,但是如果在服务器上进行这样的操作,系统资源会被负载消耗,导致得出的性能测试数据脱离实际情况。

6.创建的负载应该是模拟用户最常见、最密集的操作。在进行性能测试时,应该模拟用户最常使用的功能,来了解在这种操作下系统资源消耗以及用户体验。

7.在真正的性能测试前尽可能地进行预测试。在性能测试进行之前应尽可能多的进行预测试,发现负载生成的结果以及负载生成是否存在瓶颈,由于性能测试执行成本较高,所以通过多次的预测试,可以降低最终测试的成本开销。

8.使用同一用户进行长时间大量操作是否存在内存泄漏或者类似的错误通常这样做或发现系统某功能设置上的问题。

五、结语

性能测试是系统测试的一种,其目标是判断系统在正常负载或正常水平的活动的情况下是否满足性能需求。由于现在软件和WEB的快速发展,性能测试也得到了更多人的关注,人们越来越关心软件的负载和容量等特性,而不是一味的追求性能的实现。在性能测试的过程中,虽然个人的知识水平和相关测试经验十分重要,但是团队的合作才是更重要的,性能测试是一个要求团队合作的工作。总之,性能测试无非就是以较低的成本模拟一个真实环境来了解系统上线后的性能情况,至于定位、分析以及调优,这需要一个团队的支持才能完成。

参考文献:

[1](美国)M G Limaye.软件测试原理、技术及工具[M].黄晓磊,曾琼译.北京:清华大学出版社,2011.

[2]软件工程—理论、方法及实践;刘忠宝主编[M];国防工业出版社.

[3]性能测试进阶指南—LoadRunner9.1实战[M];陈霁、牛霜霞著;电子工业出版社.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!