马莉
(中国移动(深圳)有限公司,广东 深圳 518048)
浅谈后端应用系统性能测试方法
马莉
(中国移动(深圳)有限公司,广东深圳518048)
由于后端应用系统的复杂性,业界常用的负载工具很难模拟后端系统的运作。对于应用系统来说,仅通过前端模拟用户的方式来定位后端应用系统的问题总会差强人意,因此本文提出一种针对后端应用系统的性能测试方法,得出后端系统的最大处理能力以及扩容的方法,进而提高整个应用系统的性能。
后端应用系统;性能测试;指标值分析
随着应用软件用户负载的增加和应用环境越趋于复杂,用户的响应速度、系统的安全运行等性能问题,逐渐成为软件系统必须考虑的指标之一。性能测试通常通过自动化的测试工具模拟多种正常、峰值以及异常的负载条件来对系统的各项性能指标进行测试,用来检测软件是否达到用户提出的性能指标,及时发现软件系统中存在的瓶颈,升级软件、扩容硬件,最后起到优化系统的目的。目前已经存在的性能测试工具数量不下一百种,从单一的开放源码的免费工具如OpenSTA,TestMaker、Jmeter等,到商业性能测试工具QALoad、LoadRunner、Webstress等。任何性能测试工具都有其优缺点,可以根据实际情况挑选用最合适的工具。但是对于后台服务器的复杂性,目前针对性的测试工具匮乏,测试方法和策略也不像前端性能测试那么明确。
性能测试需要经过需求分析、测试准备、搭建环境、测试执行和测试结果分析等几个重要阶段,在此我们着重介绍需求分析、准备阶段测试环境的准备,以及测试执行阶段关于后端系统需要重点关注的几个方面。
2.1需求
后端应用系统性能测试的需求来源主要是随着前端请求数的快速增长,对系统进行后端改造,需要了解改造后的系统性能情况。因此在测试前,需要了解系统目标TPS、单个功能域的目标处理速度、系统目标承载能力等。
有了目标后,首先要了解各个系统之间的通信形式,了解组网中各个模块之间的通信方式、接口调用方式等信息,对于测试用例的设计以及测试环境的搭建是至关重要。其次了解系统进程处理的逻辑和顺序,启动进程时需要调用和匹配哪些数据,以及数据在系统中被处理时的存放机制等,利用设计测试用例,精准的用例可以直击系统问题的本质,减少摸索的时间。
较为复杂的系统,都会有自己的模块组合方式。需要了解整个系统由几个模块组成,各个模块的耦合关系是怎样的,不仅对于功能测试中的异常测试用例的设计有很大帮助,而且对于性能测试的帮助也同样不可小觑。如有一个性能需求是发现现网有一个查询分支性能是否有问题,那么就需要很快地锁定关键的模块,瓶颈很可能存在于处理这条分支的server上。同时了解系统的各个模块以及模块之间的耦合关系,对理解性能曲线、调整测试方案同样重要。
2.2建立业务数据模型
在了解到详细的测试需求和系统架构的基础上,需要做好充足的测试准备,在数据准备方面,可以建立相应的数据模型,按照模型的配比准备数据。建立业务模型首先要关注的是现网运行的业务数据,并建立相应的业务模型。以某计费系统上线测试为例,计费系统主要的功能模块有计费模块、合帐模块、出账展示模块,目的是为了在系统上线前需要全面掌握系统的性能情况。
(1)对系统近几个月的业务总量进行统计分析,分析得出办理较多的交易(约占业务办理总量的90%左右)。
(2)对业务量办理较多的几支交易,按天统计当月的交易量。
(3)对每个月的高峰日交易量进行分析,按小时统计每支交易的占比,获取最大的小时交易量,颗粒度越小,数据越精准。
表1 分别按月、按天、按时段交易量统计
(4)对小时交易量进行分析,获取各支交易的占比,该业务占比的比例关系,也是在测试执行过程中,并发用户数的配比关系。
表2 高峰时段交易量占比统计
2.3测试环境的准备
测试环境的搭建往往要根据测试用例的设计而确定。对于初次进行性能测试的系统,目标是尽可能和现网一致。考虑到测试环境成本问题,可搭建缩小版的测试环境,但需要注意测试环境与现网系统架构必须相同,使用的操作系统、各软件版本、参数配置必须相同,硬件型号、配置需与现网相同等等。
(1)测试数据准确性
大数据量以及数据的多样性往往是模拟的难点,数据量配比可以按照业务数据模型占比准备,数据准备通常有三种方法:
1)大数据量需要自己写脚本将数据库填充到一定的程度。
2)如对数据的一致性要求高的话,可以采用从现网对数据做拦截、备份、导入的方法。
3)会话消息类型的数据可以采用模拟器生成的方式,生成所需要的会话类型,采集部分历史数据进行数据特性分析,包括数据封装规则、数据大小范围、数据大小波动方差、时长范围、时长波动方差等,通过模拟器配置控制数据的样式、数据大小、时长,以及随机抖动的程度,这种方法可实现数据多维度多样性,达到模拟的效果。
(2)测试环境网络时延
网络时延和IDC机器管理有着密切联系。但是却常常被测试人员忽略,测试机器也和运营机器一样,分布在不同的IDC,在挑选机器部署时,需要先了解一下现网运营机器之间的网络时延。
(3)测试环境配置
日志级别的配置、线程或进程的个数配比需要与现网尽可能一致,在诊断问题时可以将日志级别降低,以便发现定位问题。
(4)测试工具准备
直接针对后端性能测试的工具较少,往往在统计测试结果时需要大量的人为操作,对于后端服务系统来说,这就需要提前准备的数据统计的方法、脚本等分别从数据库和日志中计算出系统的处理能力。
2.4TPS模型配比
后端系统改造往往没有历史的性能情况,这种情况下,可以采用目标TPS的方式压测,即业务模型的比例是由总的目标TPS得出各业务之间的目标TPS的比例,再反向推出并发用户数的配比。
步骤一,需要知道每种业务在单个并发情况下对系统资源消耗的情况,即将2.2章节中的业务模型所涉及的所有业务,单用户执行多次,获取该业务单TPS值和响应时间time。
步骤二,根据最终要达到的整个系统的目标TPS_all以及2.2章节中该业务A的占比,计算该业务需要应达到的目标TPS_every=TPS_all*业务A占比;
步骤三,根据基准TPS_all和目标TPS_every,计算虚拟用户数,即Vuser_every=TPS_all/TPS_every,得到的Vuser_every值往往不是整数,在设定并发时需要对Vuser_every取整;
步骤四,根据Vuser_every和目标TPS_all,反推出单个用户的TPS_every1,TPS_every1=TPS_all/Vuser;
步骤五,计算各业务之间的延迟时间,延迟时间为实际的响应时间time和计算得出响应时间time1的差值。根据TPS_every1,计算出各业务单个用户响应时间time1,响应时间与TPS成反比,即time1=1/TPS_every1,延迟时间=time1-time;
综上,得出的并发用户数量和延迟时间,就可以应用在后续的测试执行中。
2.5测试执行与数据统计
性能测试执行流程如图1所示。传统的性能测试方法都是按照业务模型各业务间的比例设置并发用户数,或是基于TPS的模型的负载配置方法,使应用系统的测试结果符合业务模型的预期。而后端的压测方法和网站等形式的系统差异较大:
(1)准备充足的业务数据,根据2.4章节得到的并发用户数量和延迟时间,准备相应的业务数据,用挡板技术使其停留在系统前端,等待处理;
(2)配比处理该业务进程(或服务)的个数,以及个业务进程之间的比例;
(3)首轮压测的进程个数不易太多,假设业务A部署N个进程、业务B部署M个进程,进程启动后,放开前端准备好的测试数据,待系统稳定运行后,记录进程(或服务)个数,以及此时测试的时间和后端服务器的消耗(CPU、内存等);
(4)增加进程(或服务)的配置个数,等比例增长,并记录当前测试时间和后端服务器的消耗(CPU、内存等);
(5)重复步骤4,直至系统资源消耗达到预期(一般CPU达到70%以上即认为已达到系统最大承载能力)、某台服务器发出告警或是报错,停止增加进程(或服务)。
(6)整个压测过程中,每轮测试的起止时间是关键,测试结束后,根据测试时间统计后端服务器处理业务的速率,大致可分为两种情况:一种是可落地直接写进物理库的数据,直接按照梯度增加进程的每个时间段,统计处理业务的笔数;另外一种是中间进程(或服务)处理,存储在文件系统中的数据,根据情况需要从处理日志中统计业务处理的笔数。
图1 性能测试执行流程图
系统的性能指标可以分为两大类,系统指标和资源指标。典型的系统指标有在线用户数、吞吐量、响应时间等,系统指标有CPU、内存分配和使用、文件、网络IO操作、数据库连接数操作等。近几年随着后端系统的出现,对于大型服务器来说,硬件资源不足已经不再是系统性能的瓶颈了,大型后端系统往往资源都十分充足,那么在评价后端系统性能时可以将关注重点放到系统吞吐量的波动情况、系资源使用的波动情况等,可以用数学理论统计、指标值变化的情况,利用方差的概率建立波动模型。得出抖动率越小说明数据的振幅越小,系统越稳定。
设指标值为xi,i=1-n
由于后端服务器的复杂性,测试统计出的指标值很难是一条直线,那么指标值波动的程度决定了系统的情况,如有明显的波动(有规律、无规律),表示系统不稳定,常见瓶颈在于系统软件、软负载不均衡。小量的波动在一定程度上是可以容忍的,因此这时就需要建立一套指标值的波动范围,建立的依据可以通过对历史数据的统计分析得出。
本文针对后端应用系统提出性能测试方法,和前端WEB系统的性能测试的数据准备、测试方法、结果采集、结果分析等多个层面差异较大,后端应用系统的处理能力直接影响前端页面处理能力,因此对于后台服务器的性能瓶颈诊断和优化才是整个应用系统的关键。
[1]李少杰.面向移动智能终端应用性能测试平台的研究[M].广东:华南理工大学出版社,2014.
[2]黄文高.深入性能测试[M].北京:中国水利水电出版社,2013.
[3]冯艳红.软件性能测试实施过程研究[J].软件导刊,2011,10 (2):3-4.
[4]陈能技.软件测试技术大全[M].北京:人民邮电出版社,2015.
Discussion on the Performance Testing Method for Back-endApplication System
Ma Li
(China Mobile(Shenzhen)Limited Company,Shenzhen 518048,Guangdong)
The complexity of the back-end application systems makes it difficult to be simulated by the common load tools.For the application system,it is barely satisfactory that only using the front-end user simulation mod to solve the problems of back-end application system.This paper presents a performance testing method for back-end application system,obtaining the maximum processing capacity and capacity expansion method,and improving the performance of the whole application system.
back-end application system;performance testing;index value analysis
TP311.52
A
1008-6609(2016)06-0062-03
马莉,女,广东人,硕士研究生,研究方向:软件测试技术。