欢迎来到学术参考网

软件压力测试技术概述

发布时间:2015-09-08 08:53

摘 要:随着软件规模的不断扩大和复杂程度的不断提高,软件产品面临着大量的并发用户和业务运算,因此软件的性能越来越受到业内的重视。在这种情况下,为了验证系统性能而执行的压力测试变得尤为重要。本文对目前的研究热点--软件压力测试技术进行了概述。

关键词:软件性能;压力测试;自动化
1.软件性能
    压力测试关注的对象是软件的性能,所以首先介绍一下软件性能的有关知识。一般来说,软件性能是一种指标,表明软件系统或构建对于其及时性要求的符合程度;同时,软件性能也是软件产品的一种特性,可以用时间来度量。软件性能的及时性用软件的响应时间或吞吐量来衡量。软件的响应时间是指软件产品从收到请求到响应请求所需要的时间。
    在实际软件项目中,不同的角色对软件性能的关注是不同的。从软件产品用户的角度来看,他们关注的是软件产品处理请求的效率,也就是软件的响应时间。从管理员的角度来看,他们不仅会关注软件的响应时间,还会关注软件产品运行时系统资源的使用状态和系统的可扩展性。从产品开发人员的角度来看,他们关注的就更全面更深入了。他们除了会关注用户和管理员关注的内容,还会关注对软件性能不佳的原因和大量并发用户同时访问而引起的软件故障。如何通过修改设计和代码来消除系统的性能瓶颈也是他们所关注的。那么,正是由于不同角色对软件性能有着不同的关注,压力测试就应该为不同的角色提供可靠的测试结果,以便他们分析软件性能。
2.压力测试的概念
  软件系统的负载压力是指系统在某种指定软件、硬件及网络环境下承受的流量,例如并发用户数、持续运行时间、数据量等。其中并发用户数是负载压力的重要指标。
  负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试。其中还有一种特定类型的负载测试,它是通过逐步增加软件系统的负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,以此来获得系统提供的最大服务级别。
  并发性能测试通过逐渐增加并发用户数负载,直到系统的瓶颈或者不能接收的状态,综合分析交易执行指标、资源监控指标等来确定系统并发性能的过程。并发性能测试是负载压力测试的重要内容。
  疲劳强度测试是指构建系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,使其在持续一段时间内执行业务,保证到达系统疲劳强度需求的业务量,通过综合分析交易执行指标和资源监控指标,来确定系统在处理业务上的最大工作强度的过程。
  大数据量测试包括针对系统存储、传输、统计、查询等业务进行的独立数据量测试,以及结合压力性能测试、负载性能测试、疲劳性能测试相结合的综合数据量测试。
3.并发性能测试
  系统的并发性能是负载压力性能的最主要的组成部分。目前广泛应用的网上购物系统、在线订票系统、资源查询统计系统等系统,都存在着大量用户同时访问这样的并发操作。这些并发操作可能会暴露软件系统在设计和开发时的缺陷,这些缺陷会使系统网络性能降低,加剧服务器资源互斥访问冲突,造成应用层程序和数据库表单的死锁等等,给系统带来不同程度的破坏,给用户带来经济损失。因此,为了保证系统的性能可靠,实施有效的并发性能测试是非常重要的。并发性能测试是从客户端性能、网络性能、服务器性能三个方面去进行测试和监测的。下面将分别介绍这三个方面。
  应用在客户端的性能测试主要是采用负载压力测试工具模拟大量并发用户访问被测系统,执行不同业务操作,来达到实施负载压力的目的。测试系统通常包括一台主控机、多台压力生成器和被测服务器,各部分采用系统要求的网络类型连接。主控机负责管理压力生成器,同步时间,部署测试脚本和收集测试结果,在整个测试系统中有且仅有一台主控机。压力生成器负责通过多线程的方式来模拟虚拟用户(VU)向被测系统施加压力,在测试系统中可以有多台压力生成器。
  应用在网络上的性能测试主要是对网络应用性能的监控和应用网络故障的分析,可以为性能优化、带宽需求确定、应用程序和网络故障的定位等方面提供依据。其监控系统是由探针主控机和探针机组成。探针主控机主要用于配置管理探针,同步探针机时间,收集并处理监测数据,并且提供监测数据的展示平台,在整个监控系统中有且仅有一台探针主控机。探针分布在被测系统的整个应用网络环境中,采集并存储相应的数据,在监控系统中可以有多台探针机。
  应用在服务器上的性能测试主要是对被测系统服务器的操作系统、数据库、中间件等组成部分进行监控。目前常用的操作系统、数据库和中间件自身都提供了良好的监控工具,测试者可以适时地收集需要的信息。
四、压力测试自动化
  压力测试可以采取手工测试和利用自动化工具测试两种方式。采用手工测试不仅需要大量的测试人员和机器设备,还要考虑同步操作和对被测系统的同步监控的问题,所以执行起来有一定的局限性,测试结果不一定能够有效地为系统调优提供服务,而且还会耗费巨大的人力和物力。相比之下,在压力测试中采用自动化测试工具能更快捷地解决问题。自动化测试工具可以在一台或多台机器上模拟成百上千的用户同时执行业务操作的场景,并可以很好地同步用户的执行时间,进行有效的实时监测。因此越来越多的压力测试项目中都用到了自动化的测试工具,自动化测试工具也在压力测试多方面的要求中得到了发展和改良。
  目前,利用自动化测试工具进行压力测试是压力测试发展的主流趋势。在实际的测试项目实施中,大都使用三类自动化测试工具,它们分别是商业化压力测试工具、开源压力测试工具和自主研发的压力测试工具。.
  商业化压力测试工具适用范围广,大都经过全面的检测,测试系统本身比较稳定,测试结果比较准确,在业界能得到大多数人的认可,并且还有厂商的技术支持和版本升级服务。但是商业化的压力测试工具一般价格都比较昂贵,适用于大规模的、长期性的、专业标准要求高的测试项目。现在常用的商业化压力测试软件主要有 HP LoadRunne、 Borland SilkPerformer等,它们都是业内优秀的性能测试软件。
  开源压力测试工具一般都是免费的,用户可以在不侵犯任何专利权和著作权的情况下访问、修改测试工具的源代码。目前常用的 开源压力测试软件主要有 Apache JMester、opensTA等。 ApacheJMester是一个完全用Java编写的压力测试软件,用于负载测试和性能度量,最初它适用于Web应用测试,
  目前己经扩展到其他的测试领域。openSTA是一个基于CORBA的分布式软件测试架构。WebLOAD是一个由Radview软件支持的开源的负载压生成引擎。
  自主研发的压力测试工具是测试开发人员根据被测系统的特点而开发的,适用于被测系统的测试工具。商业化的测试工具和开源的测试工具虽然比较通用,但是也有其局限性,比如说对一些协议、脚本、控件等兼容性不好,在一些性能点上缺乏监测,模拟负载的情况不够理想,性能监测定位不够准确。所以很多测试工程师不得不去编写一些适用于实际测试项目的程序和工具。在设计和实现压力测试工具时,主要的难点是模拟用户操作、控制并发访问和设置监测点。
参考文献:
[l]段念.软件性能测试过程详解与案例剖析[M].北京:清华大学出版社,2006.
[2]柳纯录.软件评测师教程〔MJ.北京:清华大学出版社,2005.

上一篇:基于Microsoft VB架构的发射机自动化系统

下一篇:虹膜识别算法和图像采集设备研究