熊 婧,夏仲平,林 军,杨春晖
(工业和信息化部电子第五研究所软件质量工程研究中心,广州510610)
基于国产CPU/OS的信息系统指部署在国产基础软硬件平台之上的信息系统,其中国产基础软硬件平台包括国产的CPU、操作系统、中间件、数据库及办公软件。
目前国产CPU主要包括基于MIPS架构的龙芯系列CPU、基于SPARC架构的飞腾系列和基于Alpha架构的申威系列CPU等;国产操作系统主要包括中标麒麟系列操作系统、红旗Linux系列操作系统、共创Linux系列操作系统等;国产中间件主要包括金蝶中间件及东方通中间件等;国产数据库主要包括人大金仓数据库、达梦数据库及神通数据库等;国产办公软件主要包括中标普华及金山Office等。
基于国产CPU/OS的信息系统从底层CPU及主板等至上层操作系统、数据库等都是国产产品,一方面由于国产产品其成熟性、兼容性等尚欠缺,另一方面用户体验不够满意,与Intel体系下的信息系统相比,用户较难接受目前的性能表现,使基于国产CPU/OS的信息系统应用处于困境。因此,研究基于国产CPU/OS的信息系统的性能是目前国产CPU/OS信息系统面临的一个重大问题。
本文通过研究信息系统性能测试原理,介绍目前业界普遍采用的针对基于国产CPU/OS的信息系统的性能测试方案,指出其存在只考虑服务器响应时间和网络延迟等时间,未考虑浏览器渲染时间,从而导致性能测试结果与终端用户体验预期差异较大的问题,并分别设计基于LoadRunner和JMeter的性能测试改进方案,以期提高基于国产CPU/OS的信息系统性能测试水平,使系统设计达到可用、好用的目标[1]。
性能测试[2-4]是通过产生模拟真实业务的数据或动作,对被测系统进行加压,研究被测系统在不同压力情况下的表现,找出其潜在的瓶颈问题[5-6]。
LoadRunner作为成熟的商用测试工具,是一种预测系统行为和性能的工业标准级负载测试工具,通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,该工具被普遍用于基于X86/Windows平台的Web系统的性能测试。
通过将LoadRunner测试工具各个组件部署在基于X86平台的终端测试机上,对服务器发起并发形成压力,可得到服务器的响应时间,LoadRunner测试工具的框架如图1所示。
图1 LoadRunner框架
其中:(1)VuGen为虚拟用户产生器,用来录制操作者的操作,建立虚拟用户脚本;(2)Controller为后台压力控制器,压力测试的控制中心,用来管理、设计、驱动及监控压力测试场景;(3)Load Generator为压力生成器,执行虚拟使用者脚本以产生虚拟用户,对被测系统发出请求和接收响应,模拟实际的负载;(4)Analysis为结果分析器,通过测试结果的数据,用来分析压力测试结果。
测试的具体过程如图2所示,在一台X86测试机上模拟100个用户并发操作,并发请求从测试终端发起,经过 Windows操作系统的处理、网络驱动模块、网卡等硬件设备,再经过网络传输到达服务器端,数据通过服务器端的网卡等硬件设备、网络驱动模块、操作系统处理、上层系统处理请求后,将处理结果原路返回至测试终端。
图2 信息系统性能测试原理
从基本原理上分析,基于LoadRunner的测试方案性能测试结果表示网络延迟和服务器处理响应时间之和,同时也包括了网卡、操作系统网络驱动等处理时间[7]。由此可以认为,性能测试响应时间与测试终端和服务器所处的硬件平台,以及操作系统的处理效率都存在关系[8-9]。
基于国产CPU/OS的信息系统的服务器端(数据服务器、应用服务器)和终端均采用的是全国产软硬件平台,从CPU到整机,从操作系统、数据库、中间件到浏览器均为全国产化[10]。由于LoadRunner不支持国产CPU/OS平台,国产终端无法安装LoadRunner测试工具,目前测试手段是将LoadRunner部署于X86/Windows机器上,通过网络连接基于国产CPU/OS服务器,同样采用图2的测试方法和流程得到性能测试结果。
由本文第2节的论述,硬件平台和操作系统的对并发请求和应答的处理效率会影响响应时间,为避免当前所存在的性能测试的响应时间良好,但国产终端用户体验极差的问题,本文针对传统基于LoadRunner的性能测试方案进行改进,提出基于用户体验的国产信息系统性能测试方案,以解决以下2个问题:(1)LoadRunner无法部署成功完成测试;(2)性能测试响应时间无法真实反映用户体验。LoadRunner性能测试工具无法测试浏览器的渲染时间,而针对国产终端目前的性能水平,浏览器渲染时间在用户体验时间中所占比重较大。因此,改进的测试方案以用户体验时间为最终性能测试指标,其计算原理如图3所示。
图3 改进方案中的用户体验指标计算原理
同样以需要获取100个并发用户下的信息系统终端用户体验时间为例,改进后的测试方案原理如图4所示。
图4 基于LoadRunner的信息系统性能测试原理
测试的具体步骤如下:
(1)LoadRunner安装在X86平台的测试终端上,模拟99个并发用户,对服务器产生并发压力。
(2)1个测试用户通过使用基于国产CPU平台的终端上的浏览器,操作国产信息系统,利用Firbug工具的计时功能,得到结果,该计时记录的就是最终包括浏览器渲染时间在内的100个并发用户的用户体验时间。
该方案通过拆分N个用户并发请求,采用LoadRunner对服务器施加压力,在服务器承受压力的情况下,终端用户通过非自动化的方式访问服务器,得到最终的用户体验时间。
基于理论分析,该方案存在的不足之处是:并发请求仍旧从X86平台的测试终端上发起,这种情况与所有并发请求都从国产CPU平台发起的情况相比,对服务器造成的压力是存在差异的,导致测试结果并不能够完全模拟真实应用场景中,100个并发用户均从国产终端发起请求的使用情况。
为了解决上文改进测试方案所存在的问题,通过对开源测试工具JMeter进行二次集成开发,使其满足运行于基于国产CPU/OS的平台之上,可为国产信息系统开展性能测试提供技术支撑[11-12]。本文对具体集成改造技术不进行过多阐述。
JMeter可直接运行于基于国产CPU/OS的平台之上,向服务器发起并发请求,采用用户体验时间作为性能测试指标,利用辅助工具计算浏览器渲染时间,最终获得用户体验时间。
基于JMeter的信息系统性能测试方案原理如图5所示。
图5 基于JMeter的信息系统性能测试原理
为验证本文所提出2种改进测试方案(分别记为LoadRunner和JMeter)的有效性,对某电子政务中心的基于国产CPU/OS的办公信息系统进行测试验证,本次测试验证使用30个并发用户。由于对2种方案进行对比,因此需要选取一个较为可信的数据作为优劣对比的参考值,本文利用Selenium测试工具的分布式测试能力,在30台国产CPU桌面机上部署Selenium测试工具[13],该工具的测试脚本可运行在Firefox上,利用Firebug计时得到单用户体验时间,通过同步30台机器的时间后在同一时刻触发测试脚本并运行,运行结束后,得到30个用户并发的用户体验数据数据,重复3组实验,取平均值,该值即为30个并发用户体验时间值。在测试中,分别记录考虑浏览器渲染时间和不考虑浏览器渲染时间的结果,具体如表1和表2所示。
表1 不考虑浏览器渲染时间的用户平均响应时间 s
表2 考虑浏览器渲染时间的用户平均响应时间 s
由图3可知,用户体验时间是浏览器时间加上网络延迟和服务器处理时间的总和,表1中的不考虑浏览器渲染时间即为网络延迟和服务器处理时间,因此,可以粗略地认为表2中的考虑浏览器渲染时间为不考虑浏览器渲染时间与浏览器渲染时间之和,通过表1和表2考察浏览器渲染时间在用户体验时间中所占比重情况,计算LoadRunner和JMeter的浏览器渲染时间和考虑浏览器渲染时间的平均比值:
其中,L1i,J1i分别表示表1中 LoadRunner和JMeter不考虑浏览器渲染时间的第i行的值,以及表2中LoadRunner和JMeter考虑浏览器渲染时间的第i行的值。通过计算可以计算得出:=82.25%,=90.55%,由此可知,无论是哪种测试方案,浏览器渲染时间都远大于不考虑浏览器渲染时间,因此,考虑包括浏览器渲染时间的用户体验时间测试是非常必要的。
为了得知哪种方案与用户体验时间参考值更为接近,需计算表2中LoadRunner和JMeter分别与用户体验时间的方差DL及DJ,哪个值最小就说明对应哪种方案更接近参考值结果。设Li为LoadRunner在表中第i行的值,Ji为JMeter在表中第i行的值,Ui为用户体验时间在表中第i行的值,根据下式:
计算得到:DL=0.62,DJ=0.18,DJ比DL小70.49%。
由此可得出,基于用户体验的JMeter国产信息系统性能测试更接近真实结果。
因此,可以得出以下结论:
(1)考虑用户体验的性能测试方案对于目前针对国产信息系统的性能测试来说,更符合实际情况,能够更真实地反映用户的使用状况,为国产信息系统的使用评价提供依据。
(2)在考虑用户体验的情况下,基于JMeter的测试方案和基于LoadRunner的测试方案均可从一定程度上反映用户的真实体验,但相对比来说,基于JMeter的测试方案与调研取得的真实数据差异性较小,更符合真实情况。
本文提出的2种改进方案均可针对基于国产CPU/OS的信息系统进行性能测试,而且能更接近用户体验时间,其中基于JMeter的测试方案结果相对更好。该测试结论可对于基于国产CPU平台整机的信息系统性能评价提供有力的技术支撑和指导。由于目前LoadRunner不能直接测试某些基于国产CPU/OS信息系统中的WebService,需要手工封包再通过HTTP协议进行测试,因此下一步将研究实现JMeter下的WebService协议测试插件。
[1]张忠磊,孙玉娟.国产软硬件在实现电子政务集成应用上的框架研究[J].微计算机信息,2006,22(12-3):198-199.
[2]胡玉蓉,易发胜,曾家智.基于时延的微通信元主机原型性能测试[J].计算机工程,2009,35(20):121-122.
[3]孟跃伟,胡爱群,宋宇波,等.无线局域网安全性能测试的设计与实现[J].计算机工程,2013,39(7):193-199.
[4]刘 严,胡 敏.性能测试中脚本捕获的方法研究与应用[J].计算机工程,2006,32(22):94-95,123.
[5]段 念.软件性能测试过程详解与案例剖析[M].北京:清华大学出版社,2006.
[6]简 玲.B/S系统性能测试的设计与实现[J].计算机工程,2009,35(10):51-53.
[7]李 健.基于 Web应用系统的性能测试技术研究[D].西安:西安电子科技大学,2010.
[8]Avritzer A,Kondek J.Software Performance Testing Based on Workload Characterization[EB/OL].[2014-07-15].http://portal.acm.org/citation.cfm?id=584373.
[9]Jain R K.The Art of Computer Systems Performance Analysis:Techniques for Experimental Design,Measure-ment,Simulation,and Modeling[M].New York,USA:John Wiley & Sons,1991.
[10]李天日,林 宁,高 林,等.基于国产基础软件应用系统的性能测试与优化研究[J].微型机与应用,2011,(11):67-69.
[11]You Jing,Zhang Lan,Wang Hongyuan.JMeter-based Aging Simulation of Computing System[C]//Proceedings of 2010International Conference on Computer,Mechatronics,Control and Electronic Engineering.Washington D.C.,USA:IEEE Press,2010:282-285.
[12]冯建梅.自动化测试工具集成系统的设计与实现[D].北京:北京邮电大学,2010.
[13]雷 晖,郝爱语.基于Selenium与JMeter的自动化测试构建[J].信息与电脑:理论版,2011,(7):18-19.