WEB应用系统性能测试的研究①
2009-01-06吴芸林志伟
吴 芸 林志伟
[摘 要]随着计算机网络技术的迅速发展,Web应用系统的使用范围、软件规模和软件复杂性在不断增加,保证Web应用的正确性和可靠性越来越成为人们关注的问题。作为保证软件质量和可靠性的重要手段,Web测试已成为Web软件开发过程中的一个重要环节。本文将结合一个实际的Web应用系统“毕业设计协同管理系统”,通过对该系统的分析,结合web性能测试理论,采用LoadRunner测试工具设计测试用例,分析测试结果,提出该系统的性能优化策略。
[关键词]WEB系统 性能测试
[中图分类号]TP18[文献标识码]A[文章编号]1007-9416(2009)11-0077-06
1 前言
性能测试是一种信息的收集和分析过程,过程中收集的数据用来预测负载水平与系统资源消耗的关系。性能测试能保证程序具有良好的性能,在不同的用户负载下,考察Web系统对用户请求做出的响应情况,以维护系统的性能和寻找有效的改善策略,以确保系统运行的安全性、可靠性和执行效率。
2 《毕业设计协同管理系统》WEB应用系统介绍
《毕业设计协同管理系统》是厦门理工学院计算机系为毕业设计的系列工作的实施和学生毕业设计论文成绩的查询所建立的WEB应用系统。
2.1 《毕业设计协同管理系统》系统组件与配置
(1)硬件逻辑结构与软件体系结构
《毕业设计协同管理系统》是一个典型的三层Browser/Server(浏览器/服务器)架构的MIS系统,但应实际情况,目前该系统硬件采用两层模式即单机服务器模式,Web服务器,数据库系统和应用程序均驻留在一台主机中。如图1。
(2)系统主要开发技术
*系统开发语言采用网站设计语言VB
*数据库访问技术采用WebService
*页面设计技术使用XHTML技术
(3)运行环境
服务器软件环境
*操作系统:Windows vista 旗舰版
*Web服务器:IIS 7.0
*数据库管理系统:SQL(Structured Query Language) Server2008
* 处理器型号:(INTEL1.86HZ)处理器×2及内存容量2G
* 浏览器:IE 7
2.3 《毕业设计协同管理系统》基本功能
学生用户功能:登录系统;毕业设计选题;指导老师的选择;提交任务安排表;填写指导记录;查看论文成绩;修改密码;邮箱收发。
教师用户功能:学生选题审核;任务书的布置;评定答辩成绩;评定论文成绩;优秀毕业设计论文推荐。
系统管理后台:管理员登录系统;学生管理系统;教师管理系统;审核管理系统;公告管理系统。
3 《毕业设计协同管理系统》性能测试实例的设计与实现
分析毕业设计协同管理系统的实际运用,可得出该项目具有以下特点:
(1)管理员用户模块使用率偏低,常用模块为学生用户模块。(2)主任务为登陆,成绩查询与页面切换。(3)使用高峰期为学生论文答辩后,学生登录系统对成绩进行查询。(4)负载期内,将有大量用户同时登陆,相应模块的工作强度也将增加。
结合本系人员数量,特定时段登陆/活动人数预计为50-100人。
毕业设计协同管理系统的测试方案将在其实际运行特点的基础上生成。根据目标测试项目的性能需求,需要设计多个测试用例,本文将列举其中两个测试用例进行说明:
测试用例1测试场景描述:
(1)学生用户登陆进入学生用户主页,总共登陆50个用户(具有不同IP地址),登陆模式为每5秒15个用户并发操作。(2)用户点击毕业设计成绩查询连接。(3)用户在毕业设计成绩模块中活动时间设为五分钟。(4)用户点击邮箱界面连接,填写信息并提交。(5)学生用户登陆修改密码连接,填写信息并提交。(6)返回用户主页并退出。
测试用例2测试场景描述:
(1)学生用户登陆进入用户主页,总共登陆100个学生,登陆模式为每5秒15个用户并发操作。(2)用户点击毕业设计成绩查询连接。(3)用户在毕业设计成绩模块中活动时间设为五分钟。(4)用户点击邮箱界面连接,填写信息并提交。 (5)学生用户登陆修改密码连接,填写信息并提交。(6)返回用户主页并退出。
3.1 LoadRunner测试工具
HP公司的LoadRunner是一种能够预测系统行为和性能的工业标准负载测试工具,它通过模拟上万用户实施并发负载及实时性能监测的方式来确认和查找系统问题,达到对整个企业架构进行测试的目的。
3.2 创建用户脚本
毕业设计协同管理系统采用Browser/Server(浏览器/服务器)软件体系结构,主要测试目标为Web应用,因此在测试中脚本录制选择Web(HTTP/HTML)协议,如图2所示。
3.3 完善测试脚本
在正式使用前还必须完善测试脚本,增强脚本的灵活性,完善脚本过程包括:
(1)事务设置
脚本中事物代码为:
lr_start_transaction("SubmitBookData");
lr_end_transaction("SubmitBookData ",LR_AUTO);
(2)函数参数化,如图3所示。
(3)集合点的设置
插入集合点是为了测量加重负载的情况下服务器的性能情况。在测试计划中,可能会有要求系统能承受大量的用户同时提交数据或进行操作。
脚本中集合点的代码为:lr_rendezvous("SubmitQueryData");
(4)检查点的设置
web_find()函数// 该函数的作用是“在页面中查找相应的内容”,常用参数及含义如下:
web_find("web_find",//定义该查找函数的名称
"RightOf=a",//定义查找字符的右边界
"LeftOf=b",//定义查找字符的左边界
"What=name",//定义查找内容
LAST);
(5)脚本检验
经过以上各个步骤,运行脚本。执行“运行”命令后,VuGen将先编译脚本,检查是否有语法等错误,如图4所示。
运行设置完成后,就可以开始从Generator中调试脚本了,脚本将按照Runtime Setting的设置开始运行,并在输出窗口打印关键日志。当脚本运行完成,没有错误,从关键日志来看所有参数替换和动态关联都成功,证明脚本已经完全通过可以使用。
3.4 方案执行
(1)场景创建
创建方案的类型分为两种。一种是面向目标的方案,一种是手动方案。手动方案又分为按数量分配负载和按比例分配负载两种,各种模式的选择取决于测试的目的。
手动方案:让测试人员决定需要加载的负载量,用于在标准负载下测试系统的性能。
目标方案,让测试人员定义一个目标和添加负载的最小值与最大值。运行时LoadRunner会按照用户给定的负载最小值开始添加,试探系统性能能否达到定义的目标。如果不能则继续添加,此种方案对于定位当前系统能承受的最大负载量非常有用。如图5所示。
(2)加压计划,如图6所示:
3.4 实验结果分析
(1)实验结果(如图7所示)
(2)Transaction Response Time (如图8所示)
通过Transaction Response Time图,可以判断各个事务完成所用的时间,从而推断出哪个事务所用时间最长,那些事务超出预定的可接受时间(见图8)。
由图8可见,随着学生数的不断增加,登陆这个事务的响应时间增长的最快。为了确定造成登陆界面的响应时间最长的原因,分解登陆事务,分析页面上每个元素的性能(见图9)。
图9为该事务中各个组件的所占空间的大小和下载时间的比例。
通过比较发现,其中Undenmain.aspx和LoginForm.aspx组件的所需空间仅为0.44K和1.66K,相比另外两个显得非常小,但下载时间却几乎相同甚至超过,而且几乎所有的时间都用在了First Buffer上。
查看Time to First Buffer Breakdown相关图表,如图10所示,可以确认问题产生于服务器还是网络。
首先,由Time to Frist Buuffer Breakdown图表中可以看出,有关Undenmain.aspx和 LoginForm.aspx组件,Server时间比Network时间高,从而可以确定问题是由服务器引起的。在此基础上,再参考Web Server图表,就可以再进一步接近问题源。其次,在20%的压力测试中WebServer和Web应用程序是性能的瓶颈,这些瓶颈主要是由于服务器配置不当和资源不足,比如质量不完善的代码以及形成的DLL占用过多处理器资源造成CPU瓶颈,或是对内存的操作不当和管理不善造成的内存瓶颈。
4 结语
通过对《毕业设计协同管理系统》的性能测试的研究,从实验结果中我们了解到:当WEB系统用户负载继续加速增加时,管理者可以升级当前服务器的软硬件环境来加快处理速度,或是通过添加更多的服务器来扩大服务器现有服务器端的平台规模,已达到提升服务器的响应能力。或者通过调整调整系统参数或应用逻辑,在现有的硬件基础上使得应用系统性能得到改善,从而改进系统吞吐量,等待时间和资源利用率等。在多次重复上述过程后,WEB应用系统的性能将逐步达到我们所期望的水平。
[参考文献]
[1] 缪静.基于Web应用的测试研究与应用[D].成都:电子科技大学.2005.
[2] 路晓丽.Web应用软件的测试技术研究[D].西安:西北大学.2006.
[3] Paul C.Jorgensen.软件测试[M].1版.韩柯,译.北京:机械工业出版社,2003.
[4] 于勇.《软件性能测试于LoadRunner实战》[M].北京:人民邮电出版社,2008.
[作者简介]
吴芸(1979-),女,博士(已获得),讲师,厦门理工学院计算机科学与技术系,从事人工智能、软件测试方向研究。林志伟(1986-),男,厦门理工学院学士(已获得)。
①基金项目:厦门理工学院科研启动基金资助项目(YKJ07012R),福建省教育厅A类项目支持(JA08221)。
英文题目:The Research of Performance Testing on a Web System