APP下载

一种基于LoadRunner的系统性能测试方案*

2012-08-10

舰船电子工程 2012年7期
关键词:测试工具多用户脚本

刘 帆

(中国舰船研究设计中心 武汉 430064)

1 引言

系统性能测试是定量获取系统在特定条件和状态下运行时相关特性表现的活动。在系统开发阶段,其一般用来测试系统关键性能特性和资源使用之间的关联关系,以便进行系统调优。在系统应用阶段,其一般用来测试系统关键性能特性和使用需求之间的匹配情况,以便进行决策选型。

2 系统性能测试方案

一般来说,系统性能测试可分为人工测试和自动化测试。人工测试是指测试者根据测试需求,按照系统特征,人工编写相关测试程序,通过运行测试程序得到测试数据。自动化测试是指选取专业测试工具,编写测试脚本,进行自动化测试和记录。

现代应用服务系统的组成部件众多,运行机制复杂,其应用范围更广、应用方式更多样,对其进行性能测试的挑战也越来越大,人们无法预测系统在多用户并发时提供各种服务时的运行情况。测试的难点在于如何仿真、如何模拟成千上万个用户并发对服务器造成负载、如何监控和统计服务器端的性能变化、如何从海量测试数据中分析并获取有效的测试结果的过程。传统的人工测试已经不能有效的解决这些测试难点,必须借助于测试工具来实现测试的自动化[1~3]。

2.1 性能测试工具

目前市场上有很多商用的软件性能测试工具,如Mercury Interactive公司的LoadRunner、IBM的Rational Robot等,也有很多开源的软件测试工具如Jmeter、OpenSTA、TestMaker等工具,均为性能测试工作提供了相应的技术保证[4]。

LoadRunner[5]是一种系统行为和性能的负载测试工具。LoadRunner支持的多种协议和技术,可以模拟上千万用户对系统实施并发操作的行为,并对系统进行实时性能监测,以此更快的查找和发现问题。LoadRunner中包含了三个组件:

1)虚拟用户产生器Vugen

虚拟用户产生器通过录制客户端和后台服务器之间的通讯包,分析其中的协议,自动产生脚本。用户通过运行脚本,从而模拟生成逻辑功能和客户端软件完全一样的用户。

2)负载生成控制器Controller

负载生成控制器可以生成多样化的负载测试方案并对其进行管理和控制。其中包括设置负载的数量、循环的次数和间隔,还可指定日程计划服务,实现测试过程自动化。另外,还能监测系统架构中各个组件(包括服务器,数据库,网络设备等)的运行性能,来帮助用户决定系统的配置。

3)数据分析器Analysis

数据分析器对收集的大量数据进行综合分析,以图形、表格的形式展现给用户。用户通过分析各种参数指标来确定系统的性能瓶颈问题,具体内容可根据项目要求而定的。如一般系统的CPU利用率、内存利用率、磁盘I/O、吞吐量、每秒调用次数和事务平均响应时间等,中间件服务器的各性能参数指标、内存使用情况、事务的响应时间、ETB的使用情况,数据库的连接时间、高速缓存命中率、Sql语句的执行情况、锁资源[6]的争用等。

2.2 性能测试流程

利用LoadRunner对系统进行性能测试,一般遵循以下流程,如图1所示。

图1 系统性能流程示意图

1)分析测试需求

对测试需求进行分析,需要在明确测试目的基础上选取测试的指标。在进行系统的性能测试之前,需要明确系统性能测试的目的。一般来说进行系统测试的主要由以下几方面考虑:对系统重要性能指标进行测试,从而发现系统存在的性能瓶颈,给系统修改和调试提供可靠的依据;验证系统性能是否能够满足使用需求;对不同系统的关键指标进行对比测试,为选取不同的应用服务系统产品提供依据[7]。

2)制定测试计划

在制定测试计划的过程中,需要根据测试需求明确系统性能测试的具体测试参数。如需要掌握系统的表现性能以进行调优,则比较关注系统的基本能力指标,如CPU占用率。如需了解系统的并发服务能力,则比较关注满足质量前提下的负载数量。如需测试系统的运行稳定性,则比较关注系统在一定压力负载条件下的无故障运行时间。

在明确测试参数的基础上,制定符合要求的衡量标准。由于目前尚无统一的固定标准,因此需要根据应用需要,结合系统自身特点量身制定。

对系统运行的环境、提供服务的特点、服务对象的数量,负载变化的周期和趋势等进行预测和评估,设计典型测试用例,细化相关测试步骤。

对测试执行过程中可能遇到的问题和风险进行分析,评估其可能造成的影响,制定规避方法和解决措施,避免产生严重后果。

3)录制测试脚本

根据对系统运行特点的分析,将平时对系统主要功能操作分别单独录制脚本[8]。在录制的过程中,为方便查看事务的运行情况,可将每个功能点的操作设置为一个事务。此外还应注意参数化[9]、关联和集合点的问题。

(1)参数化

在模拟生成多个用户的情况下,所有用户采用相同参数会带来以下问题:让所有用户都产生相同的行为,如对相同数据进行访问,有些后台服务器会在第一次访问后将数据加载到缓存,后续访问直接对缓存进行操作,对系统造成的压力与实际情况会有所不同。对于那些禁止一个用户多次登录的系统,则无法进行测试。

为了解决这个问题,让系统更加真实的模拟多用户使用的实际环境,必须对脚本进行参数化输入。所谓的脚本参数化,就是针对脚本中的某些常量,定义一个或多个包含数据源的参数来取代,让场景中不同的虚拟用户在执行相同的脚本时,分别使用参数数据源中的不同数据代替这些常量,从而达到模拟多用户真实使用系统的目的。参数的数据源可以来自于数据文件、数据库或分配的内部数据。

(2)关联

在客户端和服务器的交互过程中,服务器返回的动态数据在后续访问中有可能会仍需使用,需要将其保存才能保证下次访问成功,此时需要将服务器产生的动态数据保存到设定的参数中。例如:web_reg_save_param(“ParmA”,”LB=<href=”,”RB=>”,Ord=1),上述语句指搜寻以“<href=”开头,“>”结尾当中包含的字符串,并将其保存在参数“ParmA”中。在以后需要用到该动态数据时可以直接引用参数“ParmA”。

(3)集合点

一般的多用户同时并发加载仅仅体现在开始执行的时刻,随着服务器对请求的响应不一或系统资源的限制,在运行过程中真正需要并发测试的部分可能会先后执行。这时,一般在需要进行并发测试的地方设置集合点,直到所有请求到达后一起并发执行。

4)设置测试场景

在测试场景的设置过程中,主要是根据系统运行的特点,模拟设置各类不同操作的用户数量。如进行系统稳定性测试还需对测试时间、事务发生间隔进行设置[11]。

5)运行场景并进行监控

在测试脚本、测试场景设置完毕后,就可加载运行。测试人员在场景的执行过程中可以在线查看产生的性能数据,除了监视本机的性能指标外,还可以在线监视服务器的性能。根据监视指标的不同,需要根据服务器的特点在服务器端配置监视环境设置相关参数。

6)进行数据分析

在场景运行完毕后,测试得到的数据会自动汇集到数据分析器,其根据需要对相关的性能指标进行统计和分析,按照类别生成相关图形和表格。根据上述数据,可以对系统的整体性能作出评价。此外,还可根据一些基本的指标性能数据判定系统性能的瓶颈。

3 系统性能测试应用

某船舶数据查询与计算服务系统由客户端、网络、Web服务器、应用服务器、数据库集群等部分组成,主要为各类客户提供数据查询与计算服务。其中数据库安装ORACLE 10g数据管理系统,Web服务器部署APACHE TOMCAT服务器。

在此应用服务系统中,客户端通过网络访问Web服务器,提交相关计算请求,应用服务器响应相关请求,从数据库查询相关数据进行计算,并将计算结果通过Web服务器返回客户端。

船舶数据查询与计算服务系统采用B/S架构,客户端和服务器端之间采用SOCKET通讯,性能测试主要是针对服务端组件进行。

图2 数据查询与计算服务系统组成示意图

本测试主要是验证系统性能是否能够满足多用户使用需求,有明确的访问实效性要求、并发服务能力要求和稳定运行要求。因此,在测试中关注的主要有:单用户的系统访问能力、系统在一定数量的用户并发访问条件下的性能以及系统的连续稳定工作时间。

经过分析,用户对系统进行的操作主要有查询、下载、存储、请求计算等四类。为此,在本次测试中,针对四类用户操作确定了相关性能指标,研究设计了多种操作的组合,采用参数化、关联、集合点等技术录制了多个测试脚本,确保了多用户的并发模拟,然后加载了不同场景进行了测试,以下为部分多用户并发测试结果,如表1~表2所示。

表1 多用户并发数据查询(循环20次)

表2 多用户并发数据下载(文件大小1.93MB)

上述测试包括了并发访问时虚拟用户的最大响应时间、最小响应时间和平均响应时间,结果表明:船舶数据查询与计算服务系统的在100个用户并发查询的服务时间小于0.2s,能满足使用需求,但20个用户的典型大小文件并发下载时间高达3.5s左右。经仔细分析,系统各资源占用情况均正常,但内部网络连接带宽不足,改进后该指标可以满足使用需求。

4 结语

系统性能测试作为深入掌握系统能力的方式正不断受到重视,一个完善的测试方案,能使整个系统性能测试规范、高效、安全地进行,测试过程变得规范有序。本文提出了一种基于LoadRunner的系统性能测试方案,并结合船舶数据查询与计算服务系统的性能测试实施情况,验证了测试方案的可行性和正确性,改善了系统性能,具有广泛的实用推广价值。

[1]孙惠杰,杨晓红.软件测试的自动化[J].哈尔滨师范大学自然科学学报,2003,19(5):4749.

[2]MosleyD J,PoseyBA.软件测试自动化[M].北京:机械工业出版社,2003.

[3]宋波,张忠能.基于系统功能测试的软件自动化测试可行性分析[J].计算机应用与软件,2005,22(12):3133.

[4]邓青华.软件自动化测试工具研究[J].软件导刊,2011,10(1):5859.

[5]MI Corporation.LoadRunner Controller user’guide[K].Mountain View,USA:Mercury Interactive Corporation,2003.

[6]武海平,余宏亮,郑纬民.通用海量数据库性能测试系统的设计与实现[J].清华大学学报(自然科学版),2006,46(7):13091321.

[7]高猛.实时嵌入式软件系统测试需求建模研究[J].航天控制,2010,28(5):6468.

[8]马庆利,王澜.自动生成XML测试脚本的类测试[J].信息技术,2006(11):145148.

[9]桑圣洪,胡飞.性能测试工具LoadRunner的工作机理及关键技术研究[J].科学技术与工程,2007,7(6):10201022.

[10]李冰.基于LoadRunner软件的CRM系统性能测试[J].计算机与数字工程,2012(4).

[11]杨鹤标,李云平.基于UML活动图的功能测试场景生成方法[J].计算机工程,2011,37(21):5557.

猜你喜欢

测试工具多用户脚本
安泰科多用户报告订阅单
酒驾
安泰科多用户报告订阅单
安泰科多用户报告订阅单
安奇奇与小cool 龙(第二回)
安泰科多用户报告订阅单
自动推送与网站匹配的脚本
基于移动平台APP测试
手车式真空断路器回路电阻测试电流线接头研究
浅谈响应时间测试分析方法