Web性能测试论文.docx
《Web性能测试论文.docx》由会员分享,可在线阅读,更多相关《Web性能测试论文.docx(15页珍藏版)》请在冰豆网上搜索。
![Web性能测试论文.docx](https://file1.bdocx.com/fileroot1/2023-5/28/a1ba6d7c-f023-4f74-9086-09fa8ee7ac0c/a1ba6d7c-f023-4f74-9086-09fa8ee7ac0c1.gif)
Web性能测试论文
Web性能测试方法及其应用
摘要
针对Web应用软件的特征,提出了一种基于目标的性能测试方法,其关注的主要内容包括与Web应用相关的负载测试和压力测试两个方面。
不但对这两个方面的测试方法进行了全面的分析和探讨,还强调了测试过程管理的重要作用,最后给出了这种方法在Web应用性能测试实践中的一个具体应用。
关键词:
性能测试;负载测试;压力测试;软件测试
一.引言
目前,随着电子商务和电子政务等Web应用的兴起,基于B/S结构的软件日益强劲发展,正在成为未来软件模式的趋势。
然而,当一个Web应用被开发并展现在用户、供应商或合作伙伴的面前时,尤其是即将被部署到实际运行环境之前,用户往往会疑问:
这套Web应用能否承受大量并发用户的同时访问?
系统对用户的请求响应情况如何?
在长时间的使用下系统是否运行稳定?
系统的整体性能状况如何?
如果存在性能瓶颈,那么是什么约束了系统的性能?
而这些正是Web性能测试解决的问题,如何有效进行Web性能测试,目前并没有一个系统和完整的回答。
此外,由于紧凑的开发计划和复杂的系统架构,Web应用的测试经常是被忽视的,即使进行了测试,其关注点也主要放在功能测试上。
但是,近年来Web性能测试越来越引起重视,成为Web系统必不可少的重要测试内容。
本文的研究就是基于这种需求,从已进行过的Web性能测试实践中总结一套基于目标的Web性能测试方法,该方法已在大量的软件测试项目实践中被证明是有效的和可操作的。
其具体测试实施方面包括负载测试和压力测试。
1概述
1.1基本概念
一般来说,性能测试包括负载测试和压力测试两个方面:
负载测试是为了确定在各种级别负载下系统的性能而进行的测试,其目标是测试当负载逐渐增加时,系统组成部分的相应输出项,如响应、连接失败率、CPU负载、内存使用等如何决定系统的性能。
压力测试是为了确定Web应用系统的瓶颈或者所能承受的极限性能点而进行的测试,其目标是获得系统所提供的最大服务级别的测试。
1.2Web性能测试的目标
Web性能测试的目标是什么?
它不仅是用测试工具去运行一些测试脚本来证明产品是否可以达到性能指标,更关键是要发现产品性能上的缺陷,并解决定位问题,这才是软件性能测试的真正目的。
其目标可分为以下两种级别:
(1)性能测试总体目标。
找出Web应用系统可能存在的性能瓶颈或者软件缺陷,确认其是否可以达到用户的使用需求。
收集测试结果并分析产生缺陷原因,提交总结报告,让软件开发方对Web应用进行性能改进。
(2)性能测试具体目标。
此目标又可以分为:
①确定Web应用系统的总体性能参数,包括所支持的最大并发用户数、事务处理成功率、请求相应的往返延迟等。
②确定在各个级别的负载及压力测试下服务器输出的具体性能参数。
这些测试目标驱动了整个测试过程的进行,因而在Web性能测试中起着至为关键的核心作用,因此在软件性能测试之前一定要有一份《软件性能测试需求规格说明书》,用于定义详细的测试目标,这是检查软件性能是否符合要求的基本依据。
1.3基于目标的Web性能测试
系统的负载测试需要采用负载工具进行,真实模拟大量用户访问Web应用系统来测试系统的表现,包括测试静态HTML页面的响应时间,甚至测试动态网页的响应时间等,看是否满足预期的设计指标要求,为服务器的性能优化和调整提供数据依据,负载测试不会以使系统崩溃为目的,因此负载测试的期望值一般以满足使用需求为主,不需要太夸张的数值。
系统的压力测试也需要使用压力测试工具,主要是对Web服务器进行压力测试。
测试可以帮助找到一些大的问题,如死机、崩损、内存泄漏等。
因为有些存在内存泄漏问题的程序在运行一两次时可能不会出现问题,但是如果运行了成千上万次后,内存泄漏得越来越多,就会导致系统崩溃。
二.Web应用性能测试环境建立
目前比较流行的负载测试和压力测试工具有LoadRunner、WebLoad、QALoad、JMetert等,本文就WebLoad的性能测试过程进行讨论。
webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能。
2.1工作原理
webload提供巡航控制器cruisecontrol的功能,利用巡航控制器,可以预定义web应用程序应该满足的性能指标,然后测试系统是否满足这些需求指标;cruisecontrol能够自动把负载加到web应用程序,并将在此负荷下能够访问程序的客户数量生成报告。
图1Webload的应用框架
2.2软件安装
双击应用程序,点Next|Yes|Next。
图2安装页面
选择安装路径D:
\ProgramFiles\RadView\WebLOAD|Next|Next
图3安装进度窗口
图4安装完成窗口
2.3Webload人通信设置
配置SNMP协议使多个压力机之间互相通信:
在windows里进入[控制面板]->[添加删除程序]->[添加删除windows组件]选择[管理和监控工具],[下一步]后选择windows安装文件路径,[完成]。
2.4TestTalk安装
TestTalk在测试会话里监测压力机间的信息传递,如果通信不成功则报错TestTalk自动安装,测试执行时在后台自动运行,注意不要将它关闭。
三.Web应用性能测试流程
3.1web录制脚本
Webload提供便捷的脚本录制工具,测试人员可以用这个工具来捕捉Web访问行为,这些行为被录制成标准的JavaScript脚本,测试人员可以修改脚本这中的参数来达到预期的测试目的。
3.1.1创建一个项目:
运行WebLoad,首先创建一个项目。
图5创建项目
3.1.2开始录制:
单击工具条中的
按键开始录制脚本,录制脚本的时候会打开一个浏览器窗口,只有在这个窗口内录制的内容才会生成脚本,在这个窗口中输入被测软件的地址:
,在IDE中的Script窗口将会生成相应的脚本。
图6录制生成的脚本
更改数量级到500,再次访问这个地址,从录制脚本的变化,我们可以看出WebLoad自动捕捉了中间的访问间隔Sleep(9356)。
图7改变访问对象后录制脚本的变化
3.1.3创建事务:
展开左侧的“Load”工具组,拖放“beginTransaction”到第一个URL之前,起名为:
“Transaction1”;拖放“EndTransaction”,选择“Transaction1”完成事务的创建。
图8创建事务后脚本的变化
3.2 运行测试
3.2.1打开刚才的项目,单击“runtest”,对刚才录制的脚本开始进行测试。
在执行窗口中可以看两次访问已经被执行了。
图9访问执行
图10事务的执行结果
3.2.2在“LogicView”中可以牛二珠运行善,最后一行显示已经运行通过。
3.2.3在“BrowserView”中可以牛二中大恒基暂不的网页,以及网页的DOM树结构de“HTMLVEW”中可以看到网页的HTML代码;在“HTTPHeadersView”中可以看到HTTP的头信息。
图11访问成功后网页的结构
3.3进行压力测试
3.3.1运行WebLoadconsole,创建一个新模板。
压力测试可以只执行单一Agenda测试,也只可以运行多个Agenda一起测试,在本例中选择“SingleAgenda”,选择最初保存的Agenda。
图12运行WebLoadconsole
图13创建压力测试模板,执行单一Agenda测试
3.3.2单击“easurementsManager”添加压力测试的监控器,监控器的不同会导致在压力测试过程中不同的显示输出结果;然后,单击“AddDataSource”添加数据源,本例中选择Windows平台;最后,选择监控主机。
图14添加压力测试的监控器
3.3.3选择要监控的性能指标,本例中我们关心的是系统处理时间。
3.3.4为本次测试选择主机,其中localhost是我们刚创建的测试主机,用它来进行测试。
3.3.5配置主机在某个时间点进行测试。
首先,单击“LoadProfiler”更改压力属性;然后选择总共测试时间为5分钟,开始测试的虚拟机数为1,最终虚拟机数为5;最后,单击“Replace”更新属性。
测试属性配置完成后,单击开始测试。
图15配置主机测试方案
3.3.6在测试结果中,横坐标为并发用户数量,纵坐标为数值。
窗口中默认有4种性能指标:
加载大小、每秒单击率、周期时间和吞吐量。
单击
,可查看数据结果。
图16数据结果
图17查看测试结果
从统计数字上可以看出,平均加载时间为0.1秒,周期时间为4.8秒,有1个周期等等。
四.Web工具小结
WebLoad中的参数使用非常灵活,能满足实际应用测试的需要。
在Web应用测试过程中,不同客户剖端的行为是不同的,因此需要将行为变量化。
WebLoad提供了智能拷贝和参数化行为的方法,以模拟出不同行为的多个客户端同时在线的场景。
WebLoad的另一个重要组件是WebLoadConsole。
WebLoadIDE侧重于脚本的录制及编辑调试等功能,而WebLoadConsole侧重于加载生成的脚本。
包括:
定义Load客户端的策略,例如线性提高、随机变化加载虚拟客户端的数量;设定Load时间,而且可以生成随时间和Load数量的报告,帮助我们找出系统瓶颈;在测试时可以动态加载监视对象,例如响应时间、CPU处理时间、内存占用率等等。
WebLoad的MixofAgendas可以在一个测试方案中添加多个测试脚本,这样便能模拟多个客户端的使用。
例如:
我们可以模拟10个客户端在登录,10个客户端在浏览网页,10个客户端在添加商品到购物车,然后每种功能的客户端还在不断地增长,这样的测试方案可以尽量地接近真实的环境。
WebLoad不公可以进行性能测试,而且可以进行功能测试。
功能测试的原理是查找相应的HTMLk的信息来判断测试脚本是否成功。
例如:
如果用户登录失败,我们通过查找,如果发现失败在HTMLr响应文本中,我们就认为测试用例失败了。
另外这对HTML的学习也是有帮助的。
最后,WebLoad与JMeter相比具有如下优点:
1、JMeter只提供了可视化编辑方式,跟提供的编辑方式相比,WebLoad在创建测试JavaScript脚本方面更加灵活。
2、JMeter只适用于Java程序,因此不能在测试脚本中调用COM对象。
3、JMeter比WebLoad支持的服务器监控协议要少。
4、JMeter不支持对HTTPS网站进行脚本录制。
5、WebLoad的分析和报告能力要超过JMeter。
五.总结
Web应用的多样性决定了Web性能测试方法的多样性,但无论其表现,所有的测试活动都一定有其目的性,也只有让性能测试围绕其目标展开才能使投入的测试资源产生最大的效益。
本文围绕所提出的基于目标的性能测试而展开,同时强调了测试管理的作用,并给出了一个邮件系统测试的实例。
本文提出的性能测试方法已经在许多项目实践中得到了良好的应用,但Web性能测试模型的总结和深入研究还有待进一步进行,这也是我们下一步的主要工作计划。
六.参考文献
1.张大陆,伟力《基于web应用系统的评测方法和技术》计算机工程第29卷第四期。
2.陈战华,杨斌《Client/Server结构软件的性能测试技术》。
3.啄木鸟部落《如何选择性能测试工具》。
4.中国软件评测中心测试中心《性能----软件测试的重中之重》。
5.LOADRUNNER使用手册