基于电子商务网站的软件性能测试模型分析∗
2018-03-20黄兆森蒋蜀鹏侯建华倪玉华
黄兆森 蒋蜀鹏 侯建华 倪玉华
(1.珠海南方软件网络评测中心 珠海 519000)(2.北京师范大学珠海分校 珠海 519000)
1 引言
随着信息技术的不断发展,软件在各行业的应用范围越来越广,软件规模也在不断地扩大。一些大型软件通常存在大量用户同时访问的情况,具有较高的性能要求。为确认软件的性能是否能够达到期望的要求,通常需要对软件进行性能测试。
测试模型的分析与设计是软件性能测试项目中非常重要的一个环节,它对软件性能测试项目的成败起着关键性的决定作用[1]。只有将性能测试模型设计好,才能确保软件性能测试的结果符合用户的要求。
2 性能测试案例介绍
为开展软件性能测试项目的测试模型设计技术研究,本文选择了一个真实的电子商务网站性能测试项目作为研究案例。该电子商务网站主要实现采购商和供应商的议价以及产品交易和支付功能。
该电子商务网站主要采用.NET技术构建,采用B/S结构框架,操作系统为Windows Server 2003或Windows Server 2008,数据库为SQL Server 2008,Web服务器为IIS 6.0或IIS 7.0。
3 性能测试模型分析与设计
为确保性能测试结果的有效性,性能测试模型的设计应尽可能地模拟真实环境[2]。下面从业务流程选取、用户数分析、用户数加载卸载方式分析、用户操作间隔时间分析、业务流程迭代间隔时间分析等5个方面进行性能测试模型设计[3]。
3.1 业务流程选取
业务流程选取就是选择性能测试需要模拟的业务流程[4],业务流程选取的原则如下:
1)选取业务发生频率高的业务流程。业务发生频率高的业务流程通常对被测软件服务器端的性能影响较大,也比较容易出现并发问题,是软件性能测试中需要重点关注的业务流程[5]。
2)选取业务发生频率不高但对软件服务器端性能影响较大的业务流程[6]。如每天一次的日结统计流程,它虽然每天只运行一次,但可能需要对大量的数据进行查询和计算,对软件服务器端的性能影响较大。对于业务发生频率不高但对软件服务器端性能影响较大的业务流程,虽然在性能测试时不可忽略,但客户可能不关心该业务流程的响应时间,此时可考虑不录制该业务流程的脚本,仅在真实的客户端打开并运行该业务流程作为背景流程。
3)选取客户确认的关键业务流程[7]。对于关键的业务流程,客户可能要求其在被测软件服务器端压力较大时仍然保持高可用性。
根据以上原则,本文选取了该电子商务网站的采购商登录、采购商查看2个业务流程进行性能测试模型设计研究。
3.2 用户数分析
3.2.1 用户数分析方法
用户数分析需要确认各业务流程在各时间段的同时在线用户数及其变换情况[8]。如果被测软件具有历史数据,可对历史数据进行分析,绘出各业务流程用户数随着用户总数变化的曲线图,找出各业务流程用户数的变化规律[9]。
3.2.2 用户数分析的相关问题说明
本文选取的电子商务网站由于还没有上线,所以客户难以直接给出各业务流程在各时间段的同时在线用户数,而是给出了一些相对比较直观的评估数据,如下:
旺季时“采购商查看”和“采购商登录”两个流程当天最高峰时两个流程同时在线用户数总和为4560人;
淡季时“采购商查看”和“采购商登录”两个流程当天最高峰时两个流程同时在线用户数总和为旺季时的50%,因此淡季时“采购商查看”和“采购商登录”两个流程当天最高峰时两个流程同时在线用户数总和为2280人;将“采购商查看”和“采购商登录”两个流程当天最高峰时两个流程同时在线用户数总和记为UT;
旺季时“采购商查看”流程当天最高峰时的同时在线用户数占两个流程的同时在线用户数总和的80%,“采购商登录”流程当天最高峰时的同时在线用户数占两个流程的同时在线用户数总和的20%;
淡季时“采购商查看”流程当天最高峰时的同时在线用户数占两个流程的同时在线用户数总和的20%,“采购商登录”流程当天最高峰时的同时在线用户数占两个流程的同时在线用户数总和的80%;将各业务流程当天最高峰时的同时在线用户数占两个流程的同时在线用户数总和的百分比记为PB;
无论旺季还是淡季,4:00~9:00的用户数均为当前服务器当天最高峰时同时在线用户数的20%,9:00~16:00的用户数均为当前服务器当天最高峰时同时在线用户数的80%,16:00~21:00的用户数均为当前服务器当天最高峰时同时在线用户数的20%,21:00~4:00的用户数均为当前服务器当天最高峰时同时在线用户数的100%;将各时间段用户数占当前服务器当天最高峰时同时在线用户数的百分比记为PT。
针对该问题,评测中心根据以上用户给出的评估数据,利用以下公式计算出了旺季和淡季各时间段的同时在线用户数:
UC=UT*PB*PT
UC为旺季和淡季各业务流程在各时间段的同时在线用户数。
UT为当天最高峰时两个流程同时在线用户数总和。
PB为当前业务流程当天最高峰时的同时在线用户数占两个流程的同时在线用户数总和的百分比。
PT为当前时间段用户数占当前服务器当天最高峰时同时在线用户数的百分比。
计算结果见表1。
表1 各时间段的同时在线用户数
3.3 用户数加载卸载方式分析
3.3.1 用户数加载卸载方式分析方法
用户数加载卸载方式分析需要确认各业务流程用户数加载和卸载的时间间隔和步长,以观察用户数逐渐增加和用户数逐渐减少的情况下软件的性能变化状况。
3.3.2 用户数加载卸载方式分析的相关问题说明
对于本文选取的电子商务网站,客户没有直接给出各业务流程用户数加载和卸载的时间间隔和步长,而是给出了一个相对比较直观的需求,如下:
无论淡季还是旺季,采购商均在30分钟内完成加载和卸载。
评测中心根据该需求,同时结合计算出来的同时在线用户数,利用以下公式计算出了各业务流程单个用户加载和卸载的时间间隔:
TV=(abs(UB-UA))/30*60
TV为各业务流程单个用户加载和卸载的时间间隔;
abs为绝对值;
UB为加载或卸载后的用户数;
UA为加载或卸载前的用户数;
30分钟为加载或卸载的时间;
60代表60秒每分钟。
计算结果如下:
淡季时,“采购商查看”流程4:00~4:30加载91个用户,平均每20s加载一个用户;9:00~9:30用户数从91增加到365,平均每6s加载一个用户;16:00~16:30用户数从365下降到91,平均每6s卸载一个用户;21:00~21:30用户数从91增加到456,平均每6s加载一个用户;4:00~4:30用户数从456下降到0,平均每4s卸载一个用户。
旺季时,“采购商查看”流程 4:00~4:30 加载730个用户,平均每2s加载一个用户;9:00~9:30用户数从730增加到2918,平均每1s加载一个用户;16:00~16:30用户数从2918下降到730,平均每4s卸载一个用户;21:00~21:30用户数从730增加到3648,平均每0.5s加载一个用户;4:00~4:30用户数从3648下降到0,平均每0.5s卸载一个用户。
淡季时,“采购商登录”流程 4:00~4:30 加载365个用户,平均每4s加载一个用户;9:00~9:30用户数从365增加到1459,平均每2秒加载一个用户;16:00~16:30用户数从1459下降到365,平均每2s卸载一个用户;21:00~21:30用户数从365增加到1824,平均每1s加载一个用户;4:00~4:30用户数从1824下降到0,平均每1s卸载一个用户。
旺季时,“采购商登录”流程 4:00~4:30 加载182个用户,平均每10s加载一个用户;9:00~9:30用户数从182增加到730,平均每3s加载一个用户;16:00~16:30用户数从730下降到182,平均每3s卸载一个用户;21:00~21:30用户数从182增加到912,平均每3s加载一个用户;4:00~4:30用户数从912下降到0,平均每2s卸载一个用户。
3.4 用户操作间隔时间分析
用户操作间隔时间是指用户连续两次向服务器提交请求之间的间隔时间,用户操作间隔时间分析需要确认用户在执行业务流程操作时的详细操作步骤以及操作步骤之间的间隔时间[10]。操作步骤之间的间隔时间可在编写性能测试脚本时作为用户思考时间。
通常用户不会直接给出各业务流程的详细操作步骤之间的间隔时间,而是给出完成整个业务流程操作的大概时间。此时可在录制脚本时适当控制操作的速度,加入合理的思考时间。
本文的电子商务网站案例客户直接给出了各业务流程的操作时间(即完成整个业务流程操作的大概时间)。
3.5 业务流程迭代间隔时间分析
迭代间隔时间分析需要确定模拟的用户每隔多少时间后进行下一次业务流程操作。迭代间隔时间通常难以由客户直接给出,因为性能测试中模拟的用户不一定总是同一个用户,可能每个时间段都会有新的用户进行该业务流程的操作,同时也会有用户退出该业务流程的操作,但性能测试只关心用户数的变化情况,而不会关心是否仍然为同一个用户在操作该业务流程。
为确定业务流程的迭代间隔时间,需要利用用户提供的相关数据进行计算。通常来说可以利用用户提供的在指定时间段(如一天)的业务流程交易总数计算出业务流程的迭代间隔时间。计算公式如下:
业务流程迭代间隔时间=(用户数*时间段时长/该时间段业务流程交易总数)-业务流程操作时间。
下面以计算旺季时“采购商查看”业务流程4:00~9:00的业务流程迭代间隔时间为例进行说明:
该时间段用户数为730;
该时间段的时长为:3600s/h*5h=18000s;
假设该时间段所有采购商进行“采购商查看”的总次数为31285次;
每个用户完成“采购商查看”业务流程的操作时间约为2min(120s);
因此“采购商查看”业务流程的迭代间隔时间为
(730*18000/31285)-120=300s
4 测试模型建立过程
根据以上性能模型的分析和设计,笔者选取了采购商登录、采购商全看2个业务流程,按照表1确定了每个业务流程的用户数,按照3.3节的结果明确了用户数的加载和卸载方式,按照3.4节的结果确定了用户操作间隔时间,并根据3.5节的结果明确了每个业务流程的迭代间隔时间,完成了测试模型的建立。
5 测试结果
利用为该电子商务网站设计的性能测试模型,获得的性能测试结果见表2、表3、表4。
表2 各业务流程各时间段的事务平均响应时间(单位:秒)
表3 各服务器各时间段的平均CPU占用率
表4各服务器各时间段的平均可用内存(单位:MB)
从表2的响应时间数据可以看出,该电子商务网站的性能非常差,即使是淡季非高峰时间,采购商登录也需要17.61s,采购选项查看需要84.07s,在旺季高峰时间,采购商登录需要53.79s,采购选项查看业务流程已没有成功事务。
从表3的CPU占用率数据可以看出,无论淡季还是旺季,无论高峰时间还是非高峰时间,数据库服务器的CPU占用率均一直在90%以上,说明数据库服务器的CPU资源已无法满足业务需求。
从表4的可用内存数据可以看出,应用服务器、数据库服务器和数据库镜像服务器的内存资源能够满足业务需求。
6 小结
本案例具有以下创新点:
1)借助选取的案例和相关数据,通过分析和计算完成了性能测试模型的设计;
2)测试模型的实测结果真实反映了选取案例的性能状况;
3)本文推荐的性能测试模型的分析方法对相关行业开展性能测试具有一定的指导和借鉴作用。
7 结语
软件性能测试是一种非常专业的测试,无论是电子商务网站还是其他行业的软件,在执行性能测试之前均应对性能测试的需求进行充分的调研,并根据客户需求设计一个合理的性能测试模型。当客户无法直接给出性能测试模型设计需要的数据时,可依据上述案例给出的方法进行性能测试模型的设计,最大程度地保证性能测试结果的合理性和有效性。
[1]柳纯录,黄子河,陈渌萍.软件评测师教程[M].北京:清华大学出版社,2005:223-343.
LIU Chunlu,HUANG Zihe,CHEN Luping.Tutorial of Software Evaluation and Testing Engineer[M].Beijing:Ts⁃inghua University Press,2005:223-343.
[2]石磊.Web应用系统性能测试模型研究与应用[J].软件导刊,2012,11(6):83-85.
SHI Lei.The Research and Application of Performance Test Model on Web Application System Software Testing[J].Software Guide,2012,11(6):83-85.
[3]肖新凤.Web应用程序性能测试技术的研究及应用[J].科技信息,2010(27):37-38.
XIAO Xinfeng.Study and Application of the Performance Test on Web Application Program[J].Information Tech⁃nology,2010(27):37-38.
[4]刘岩松.软件性能测试要点探讨[J].科技风,2015(7):73.
LIU Yansong.Discussion on Key Points of Software Perfor⁃mance Testing[J].Technology Wind,2015(7):73.
[5]胡乃静,俞新梅,王颖颖.HIS的性能测试设计与应用实现[J].计算机工程,2004,30(15):172-174.
HU Naijing,YU Xinmei,WANG Yingying.Design and Im⁃plementation of Performance Test on HIS[J].Computer Engineering,2004,30(15):172-174.
[6]韩明军.软件性能测试过程[J].信息技术与标准化,2007(11):41-43.
HAN Mingjun.Software Performance Testing Process[J].Information Technology&Standardization,2007(11):41-43.
[7]佟雪松,王喜伟,于春玲,等.软件性能测试方法研究[J].电力信息化,2010,8(1):96-99.
TONG Xuesong,WANG Xiwei,YU Chunling,et al.Meth⁃od Research for Software Performance Testing[J].Electric Power Information Technology,2010,8(1):96-99.
[8]王轶.山西省互联网用户数预测分析[J].山西科技,2010,25(1):47-48,56.
WANG Yi.Forecast Research on the Number of Internet Users in Shanxi Province[J].Shanxi Science and Technol⁃ogy,2010,25(1):47-48,56.
[9]林克强,赵秀娟.Loadrunner的并发用户数和集合点分析[J].无线电通信技术,2012,38(5):67-70.
LIN Keqiang,ZHAO Xiujuan.Study on Vuser Number and Rendezvous of Loadrunner[J].Radio Communica⁃tions Technology,2012,38(5):67-70.
[10]王鑫,苗春雨,袁芳.Web应用性能评测的研究与应用[J].实验技术与管理,2008,25(8):15-19.
WANG Xin,MIAO Chunyu,YUAN Fang.Research and application of Web-based system performance evaluation[J].Experimental Technology and Managemen,2008,25(8):15-19.