廖苹秀,邓丹,王小娟
(电子科技集团公司第三十研究所,四川成都610041)
监控系统需要对上千台设备进行监控,并且能实时监控设备的当前状态。监控系统对设备的管理基于管理协议来实现的。监控系统的管理协议[1]最大的特点是由研制单位自主设计和研制的,未采用标准的协议。针对监控系统管理协议的特点,结合LoadRunner[2]并发性能测试工具,研究出一种可行的监控系统并发性能测试方法,并运用于监控系统的并发性能测试。
监控系统并发性能测试需求来源于具体的业务需求,性能最终是以用户能感受到形态得以体现。根据已发货的监控系统在用户实际部署环境中所管理的设备的数量来分析,监控系统应具备很强的管控能力,同时需对部署于不同位置的上千台设备进行监控,并且能实时地查询设备的当前状态,其工作模式如图1[1]所示。
图1 监控系统工作模式
被管设备启动后需要向监控系统申请配置信息后才能完成启动,按照用户使用设备的方式和特点可将被管设备分为如下两类:
终端类设备:此类设备部署在用户工作环境内,用户每天上班时开机,下班时关机。设备开机时会进行配置信息申请,设备工作时会定时上报运行状态。
机架类设备:此类设备部署在机房内,日常一般不会关机,长期处于工作状态。设备工作时会定时上报运行状态。
综上所述:设备开机申请配置信息,定期上报运行状态两个业务会对监控系统造成并发压力。此次主要针对上述两个业务开展测试。
监控系统并发性能测试环境由控制台、负载机和监控终端组成
图2 监控系统并发测试环境
上图中负载机准备使用高性能服务器来安装Load Runner11的负载生成器。控制台为一台PC机安装Windows操作系统以及Loadrunner11的Windows版本,控制台可以调用负载机上的服务来生成负载对被测设备发起并发测试。交换机均采用华的万兆交换机。
为了满足使用LoadRunner进行并发测试的需要,监控系统需要对程序进行修改,固化了每次业务交互中临时产生的数据、去掉了协议中抗重放处理的内容。
监控系统并发测试所有的数据包,均采用shell脚本准备,根据协议设计,将协议中固定的字段部分准备成固定的文件,可变部分通过插桩方式获取数据。准备数据包过程中涉及到大量的运算,所有的运算通过专用运算工具完成。最终按照协议格式生成协议交互过程的完整数据包。
上一代监控系统并发测试中测试脚本采用录制回放的方式准备。由于每个被管设备的证书、协议的特殊字段均不相同,无法在脚本中进行参数化。如需模拟300个并发用户,则需要录制300次脚本,每次录制一次需要模拟不同设备准备相关数据,至少要5分钟以上,而且当监控系统版本更换后,准备的脚本可能无法重用,需要重新录制,效率非常低。
这一代的监控系统并发测试过程中对采用3.1节所述的方式对准备测试数据,脚本的开发是利用LoadRunner性能测试工具的VirtualUserGenerator生成测试脚本,协议选择WebService和Windows Sockets。测试脚本主要分三个部分:Vuser_init,Action和Vuser_end。各部分主要功能如下:
Vuser_init:将3.1节中准备的数据包写入到buffer中,同时将设备id参数化成Vuserid;
Action:创建套接字,按照协议发送和接收数据包,同时根据协议内容创建事务,对各测试指标按照事务进行统计;同时在创建套接字连接时设置开始事务lr_start_action()[3],在关闭套接字连接时设置结束事务lr_end_action()[3],设置开始和结束事务的主要目的是测试过程中对各类指标进行统计和计算。
Vuser_end:程序执行完成后,返回。
采用这种方式测试数据的优点在于:一旦数据包脚本准备好后,如果监控系统版本更新,只需要重新运行脚本产生协议交互数据包即可,测试脚本不用改变,可大大节约时间,提升测试效率。
从并发性能测试数据分析中可以得到对系统性能的科学评估,为系统性能调整优化提供数据资料。Loadruner提供了图形化测试数据分析功能,包括虚拟用户数曲线、每秒事务数曲线以及事务响应时间曲线。
虚拟用户指向被测设备发起访问的用户,这些用户必须跟被测设备进行数据交互。使用Load-Runner进行测试时的虚拟用户就是图3和图4中纵坐标上显示的Vusers数。
图3和图4所示为实测的虚拟用户数曲线的两个示例。从图3中可以看出,虚拟用户数达到一个峰值400后,每运行一段时间虚拟用户数就会减少,减少的虚拟用户是由于程序有缺陷导致虚拟用户执行失败后退出。程序中的缺陷修复后的虚拟用户数见图4,系统支持的虚拟用户数在达到一个峰值(400)过后一直处于非常平稳的状态,直到运行结束后自动退出。
图3 虚拟用户数示例一
图4 虚拟用户数示例二
每秒事务数指每秒钟传输的事务的处理个数,即被测设备每秒处理的业务数量。每秒事务数曲线统计的是在测试场景中运行的并发业务每秒通过、失败以及停止的次数,事务的开始和结束在测试脚本中设置。
图5和图6所示为实测的每秒事务数的两个示例。图5中事务处理能力随着时间轴上下振荡,说明系统在业务处理过程中存在处理缺陷,从而影响了系统的性能指标。经过修改和调优后,每秒事务数曲线如图6所示,在测试周期内系统每秒事务数趋于稳定而且每秒事务数也比图5所示的每秒事务数提升了25%左右。
图5 每秒事务数示例一
图6 每秒事务数示例二
平均事务响应时间指针对某个业务的访问统计所有的响应时间,然后求平均值。平均事务响应时间曲线统计的是在测试场景中运行的并发业务在不同时间点的事务运行所消耗时间的平均值。
图7实测的平均事务响应时间的示例,在并发用户数不变的条件下,平均事务响应时间与每秒事务数成反比的关系。结合图5可以看出,当平均事务响应时间曲线为波峰的时候,每秒事务数为波谷,平均响应时间越短则每秒事务数越大。
图7 平均事务响应时间
本文介绍了利用性能测试工具LoadRunner对监控系统进行并发测试,设计了一种对监控系统进行并发性能测试的新方案,该方案与已有方案的主要不同之处在于其优化了准备测试数据和脚本的方法,大大提高的测试的效率,从而降低了测试成本。将该方案运用于监控系统并发性能测试,并通过对测试结果进行分析,找出了系统的性能瓶颈并进行了优化,从而避免系统在上线以后遇到的性能风险。
[1] 辜彬,廖苹秀,古红峰.管理协议并发性能测试研究[J].通信技术,2013,(8).
[2] 张卉,高仲合,黄铭.基于Load Runner的Web作业系统性能测试方案的研究与设计[J].现代计算机(专业版),2015,(5).
[3] 陈梦云,高建华.基于Load Runner的理财平台性能测试[J].上海师范大学学报(自然可科学版),2016,(4).