第29卷 第13期 计算机工程与设计 2008年7月 VO1.29 NO.13 Computer Engineering and Design July 2008 Web应用性能测试工具研究与实现 黄 锋, 吴华瑞 , 朱华吉, 钟 熙, 杨宝祝 (国家农业信息化工程技术研究中心,北京100097) 摘要:响应时间、连接失败率等性能指标是判定Web应用系统质量的关键因素,为了能快捷的测算性能指标并且以直观的 方式展示给用户,同时降低测试工具软件的购置费用,研发了针对Web应用的性能测试工具ASTD,具备测试计划管理、测试 计划执行、测试报告生成功能。最后利用ASTD模拟真实用户行为,以房山城关电子政务系统为实例进行了性能测试,分析 获取的数据,找到系统瓶颈,从而进行性能优化。 关键词:性能测试;响应时间;连接失败率;测试计划;测试报告 中图法分类号:TP311 文献标识码:A 文章编号:1000.7024(2008)13.3465—03 Research and realization of performance testing tool of web application HUANG Feng,wU Hua-rui , zHU Hua-ji, zHONG xi,Y NG Bao-zhu (National Engineering Research Center for Information Technology in Agriculture,Beijing 1 00097,China) Abstract:The performance guidelines such as the response time and the rate of failed connection are the key factors to determine the quality ofa web application.To calculate these performance guidelines quickly,show result to users with visual way and reduce the cost oftesting tools,a performance testing tool ASTD aiming at web application is developed.ASTD provides many functions such as testing plan management,testing plna execution nad testing report producing.Based on simulatnig users’behavior,an E—government system developed for Fang Shan is tested by the ASTD.By analyzing the test results,the bottlenecks ofthe system are ofund nad the performance of htis system is optimized. Key words:performance testing;response time;rate of failed connection;testing plan;testing report O引 言 为了克服现有商业性能测试软件,如Mercury公司的 LoadRunner、Compuware公司的QALoad等,价格昂贵、学习曲 随着Internet和电子商务的飞速发展,基于B/S结构的 线高等局限性,本文设计并实现了一套Web应用性能测试工 Web应用系统大量出现。在这些Web应用中,客户端只完成 具ASTD。介绍了工具的整体结构及各模块具体实现,并以北 浏览、查询、表单输入等简单功能,绝大部分计算处理工作由 京市房山区城关街道电子政务系统为测试对象,用ASTD模 服务器端应用完成,这使得服务器端应用的负担很重。如果 拟大量用户的操作行为,测试系统能够承受的并发用户数量, 要使服务端应用能响应大量用户并发访问,就要求Web应用 发现系统存在的瓶颈及问题,为进_。步优化提供参考,实际结 系统具有很高的性能。但实际上许多Web应用系统并没有经 果表明ASTD能快速有效的测算Web应用系统的性能指标。 过严格的性能测试,当过量用户在峰值时访问Web应用系统 时,就会导致Web服务器无法及时响应用户的请求,甚至使得 1 Web应用性能测试 系统崩溃和瘫痪,带来很大的经济损失。 Web应用性能测试是为了描述Web应用系统与性能相关 为了避免这种情况,需要一种能够真实模拟用户访问 的特性并对其进行评价,而实施和执行的一类测试。Web应 Web应用系统的测试工具,当Web应用程序在设计开发阶段 用性能测试主要检验软件是否达到需求规格说明中规定的各 时,就使用该测试工具最大限度地模拟现实用户并发访问压 类性能指标,并满足一些性能相关的约束和限制条件。 力,并监测系统性能指标,及时发现系统性能隐患和缺陷,定 Web应用性能测试包括负载测试和压力测试两个方面。 量分析系统的各项能力,以便采取相应的改进措施和对策。 负载测试是为了确定在各种级别负载系统的性能而进行的测 收稿日期:2007.07.26 E.mail:wuhr@nercita.org.cn 基金项目:国家948引进国际先进农业科学技术计划项目(2006一G63);国家863高技术研究发展计划基金项目(2006AAl0z237);国家科技支撑 计划基金项目(2006BAD10A04) 作者简介:黄锋(1981一),男,河南南召人,硕士,研究方向为软件工程;+通讯作者:吴华瑞(1975一),男,山东冠县人,博士,副研究员, 研究方向为计算机软件理论、中间件技术; 朱华吉(1975一),男,山东潍坊人,博士,助理研究员: 钟熙(1983一),男(回族),江西南昌人, 硕士: 杨宝祝(1966一),男,山东临沂人,研究员。 -——3465-—— 维普资讯 http://www.cqvip.com
试。目标是测试当负载逐渐增加时,系统组成部分的相应输 出项,如响应时间、连接失败率、CPU负载、内存使用等来决定 系统的性能“ 。压力测试是为了确定Web应用系统的瓶颈或 者所能承受的极限性能点而进行的测试,从而获得系统能提 供的最大服务级别的测试 。 2 ASTD设计与实现 2.1模块结构设计 在对Web应用性能测试进行分析研究的基础上,设计并 实现了Web应用性能测试工具ASTD。如图1所示,工具由测 试计划管理模块、测试计划执行模块、测试报告生成模块3部 分组成。每个模块的具体说明如下: (1)测试计划管理模块:测试计划管理模块描述了计划、组 织测试活动所使用的策略和方法,确定了测试对象、请求参 数、负载参数、预期结果等 。测试计划将确保测试过程有组 织地全面开展,根据具体的测试计划对测试目标进行有针对 性的描述,围绕测试目标设计具体的测试用例,生成测试脚 本,对测试目标进行有效的测试。 (2)测试计划执行模块:测试计划执行模块是工具的核心 功能模块,它在特定测试场景下,按照测试计划模块做出的测 试计划,根据生成的测试脚本,在特定的时间内,模拟多个真 实用户对被测试系统发出请求,进行负载测试和压力测试。运 行完毕后,将得到的测试结果传给测试报告生成模块。 (3)测试报告生成模块:测试报告生成模块在得到测试结 果以后,将测试结果与预期结果进行比较,给出测试结果度 量分析,并制出统计图,最终生成测试报告。测试报告用图 表的形式展现被测系统的性能行为表现,以便分析定位性能 瓶颈问题。 I测试I 1测试l l测试1 出结 I 7 I 系统响应 被测Web应用系统 图1 ASTD结构 2.2模块功能实现 (1)测试计划模块实现 1)系统分析:将系统的性能指标转化为性能测试的具体 目标。在这一步骤里,要求测试人员对被测Web系统结构和 实施业务有全面系统的掌握,通过对被测系统软硬件体系结 构的分析,结合用户性能指标,制定出具体的、有针对性的性 能测试实施方案。在通常的Web应用系统中,浏览和查询业 务是用户使用频率最高的业务,因此浏览和查询应该作为典 型业务来测试。 2)请求参数配置:在确定了典型业务之后,需要对请求的 参数进行配置。具体包括:被测服务器IP地址、端口号、相对 于服务的路径、参数提交的方法(POST或GET)、需要传递的参 3466-—— 数等等。测试执行阶段根据请求参数配置信息向指定页面发 出请求。 3)负载参数配置:需要用户配置的负载参数有:模拟发送 请求的用户数目userNum,发送请求时间requestTime,请求发 生的重复次数loopNum。测试执行时,工具在requestTime时 间内,开启userNum个线程,循环loopNum次对被测系统发出 访问请求 。 4)期望数据录入:期望数据是用户对于被测Web应用系 统性能指标的期望,主要的性能指标参数有:最大响应时间、 平均响应时间、连接失败率、吞吐量等。在测试完成之后,测 试报告生成模块的数据比较器完成期望数据和测试结果数据 的比较。 5)生成脚本:ASTD将用户提供测试需求、请求参数、负 载参数、期望数据保存在与测试计划同名的XML文件里,形 成测试脚本。 部分脚本实例如下: <plan nalTle=”testXnc ’> <HttpConfig> <protocol>http</protocol> <ipaddress>localhost</ipaddress> <port>8080</port> <path>/xnc/index.jsp</path> <method>GET</method> <parameters/> </HapConfig> <ThreadConfig> <userNum>l 00</userNum> <requestTime>l 0</requestTime> <loopNum>l</loopNum> </ThreadConfig> <Expect> <maxPerResponseTime>5</maxPerResponseTime> <maxFailPercent>5%</maxFailPercent> <throughput>200</throughput> </Expect> </plan> 上面的脚本记录了使用ASTD进行性能测试的基本信息。 例如,本测试计划的名称是testXnc,在10 S时间内,模拟100 个用户对URL地址为hap://localhost:8080/xnc/index.jsp的页面采 用GET方式进行访问。用户期望的最大平均响应时间为5 S, 最大连接失败率为5%,系统吞吐量为200个请求/秒。 (2)测试执行模块实现 根据测试计划模块生成的测试脚本,模拟多用户对指定 页面进行请求访问,以获取相关性能指标信息。利用Java语 言的多线程编程和网络编程的特点,开启多个线程,每个线程 单独对Web页面发送HIIp请求,获得响应信息 。通过继承 java.1ang包的Thread类,并重写Thread类的Din方法得到访问 Web应用的线程类URLThread。部分代码如下: public class URLThread extends Thread{ ,/覆盖Thread类的同名方法,启动测试线程 维普资讯 http://www.cqvip.com
public void run(){ //生成请求类的对象 SendRequest sl='new SendRequestO; //将访问地址url传递过去 sr.setUrl(this.ur1); //获得请求的响应状态码 int state=sr.sendO; …//记录响应时间、根据响应状态码判断是否连接失败 ) ) 请求连接类SendRequest中,利用java.net包的URL、HttpU- RLConnection类实现对Web应用的连接、测试 。部分代码如下: public class SendRequest{ //向被测试URL发送请求连接信息,返回状态码 public int send(){ try{ URLurl=newURL(this.getUrl0);//建立一个URL对象 URLConnectionuric=ur1.openConnection0;//获得相应 的URLConnection对象 //将URLConnection对象强制类型转换为nttpURL— Connection对象 HttpURLConnection http=(HttpURLConnection)uric; …//设置请求方法和属性等 return http.getResponseCode0;//返回响应状态码 )catch(Exception e){ e.printStackTrace0; return 0:117 ̄rJ果出现异常,返回0 ) } ) 测试执行完成后,将得到的响应信息都写入 ̄LIVlL文件, 供测试报告生成模块使用。 (3)测试报告生成模块实现 数据比较器:读取测试执行得到的XML文件,得到响应 信息,计算出性能指标,和测试脚本中用户的期望性能指标进 行比较,得出偏差 统计制图:为了直观的描述系统平均响应时间、链接失败 率随着并发用户数增加而上升的趋势,ASTD利用开源项目 JFreeChart绘制出折线图和柱状图,横轴是用户数目,纵轴是 平均响应时间或者链接失败率。 生成报告:根据测试结果得到被测Web应用系统的各项性 能指标,包括最大响应时间、平均响应时间、连接失败率、吞吐量 等,来分析评价被测系统的性能,结合统计图生成最终测试报告。 3应用与分析 3.1应用实例 使用ASTD对北京市房山区城关街道电子政务系统进行 性能测试。此系统是用J2EE开发,于2006年投入运行。 在相同的网络环境下,使用同样的用户行为脚本,在相等 的时间内分别向电子政务系统投放100,200,300,400,500,600个 虚拟用户,ASTD分别记录每次测试中服务器的反应延迟,以及 连接失败率。其中最大响应时间是每次测试过程中记录到的响 应时间最长的一次HTTP请求所使用的时间;而平均响应时间 是每次测试过程中记录到的所有请求响应时间的平均值;连接 失败率是Web服务器拒绝连接的数量和总请求连接数的比例。 从表l中可以看到,当100虚拟用户在线时,最大的响应 时间有2.271 S,而平均响应时间0.332 S,说明绝大多数用户的 点击行为在1 S内就能得到响应,用户感受是相当不错的。一 般认为页面响应控制在5 S以内时,用户感受是令人满意的。 当600用户同时在线时,有些请求已经需要消耗30多秒以上 才能得到反馈,且绝大多数操作响应时间都超过了10 S,用户 感觉已经较差。 表l 不同在线用户下被测系统的响应 从图2中可以看到,到并发访问人数在300人以下时,Web ● 丑 陋、槲 辩霉f ∞ ∞ :2∞ 如帖们"如 加 服务器能够正确响应全部的客户端请求。当在线人数达到 500人时,连接失败率是8%,也就是说有40个用户的请求不 能得到响应,服务器性能就有下降的趋势。而一旦在线人数 达到600人,服务器不能响应用户请求的情况变得非常严重, 只有65%的请求可以得到响应。也就是说,服务器在600在 线用户的负荷下,系统基本不能运行,需要更新服务器硬件或 35 , ‘/ , / 8/ . / 0 U u§一, l00 200 300 400 500 600 并发访问人数/个 图2连接失败率随并发访问人数变化 者对系统进行优化。 3.2结果分析 有许多因素能够影响系统的性能指标,如网络环境、服务 器硬件性能、数据库、Web应用服务器 。其中任何一个环节 都可能影响到整个系统的性能。由于测试环境在局域网内完 成,基本可以排除网络带宽成为瓶颈的可能。发现测试过程 中,在线用户数量较多时,服务器上与数据库相关的功能延迟 会迅速提高。故可判断数据库是电子政务系统的瓶颈,下一 步可以考虑改善数据库设计,或对数据库连接池进行优化。 (下转第35l2页) -——3467-—— 0 维普资讯 http://www.cqvip.com
刈o0% 5结束语 式中:五广修正系数,其大小与粒级的密度成正比, ——此 舯舯∞ 舯m m 本文采用了摄像智能恒温技术,保证粉末粒度检测条件的 粒级的总体积, =÷ 。其中颗粒体积 一致性;对粉末颗粒彩色图像的自适应阀值分割、边界链码图 ∞ m m 像处理技术,并在此基础上开发了一套适用粉末粒度分析软 n n O O O O O O● 件。该软件能输出多达3O粒级并绘制粒度特性曲线。将软件 ∞叭∞%m 舵 叭 4结果分析与验证 输出结果与实际粒度分布进行比较、结果证明该软件的统计正 为了检验软件的正确性,我们分别选静电喷枪用粉末、摩 确率高达90.1%以上。运行结果表明:利用该显微图像分析系 跎 擦枪用粉末、流化床用粉末,进行拍摄获得粉末图像。选择5 统进行粉末粒度分析较为全面、重复性好、客观、方便。在一台 n n 9 个粒级Dv50分别为:2-10,10~35,35-45,45~60,60~100(单位; 普通电脑上分析一幅1600x1200大小的彩色颗粒位图图像所花 鲫 %£} urn)。取不同粒级的粉样,记下各个粒级的质量百分含量然后 的计算机时间少于5 s,完全可以满足在线粒度检测的要求。二二 卯 & "m 加m 铊卯 进行均匀混合,然后从中取少许进行拍摄,将各个粒级实际质 参考文献: 量百分含量与软件分析所得结果进行比较,即可知软件分析 7 6 9●准确性。软件分析环氧聚酯粉末粒径分布图如图4所示,粒 [1] 任中京.颗粒测试技术的进展与展望[J].过程工程学报,7名 2004,眦 4: 径分布表如表1所示,与实际粉末配样基本吻合。 1.6. n n m n n ∞∞∞∞∞ [2] 王乃宁.颗粒粒径的光学测量技术及应用[M].北京:原子能出 厂 版社,2000:22—30. 船 [3] 王小鹏,郝重阳,樊养,等.一种提取图像细节边缘的新方法[J]. 中国图象图形学报,2003,11(8):1286—1290. [4] 王永森,谭景信.一种基于小波变换的多尺度图像融合方法[J]. 嚓 l 计算机工程与设计,2004,25(1o):1840—1842. [5] 王月兰,曾迎生. 种新的彩色图像分割方法的研究[J].计算技 粒径/a/m 术与自动化,1999,11:9.12. 图4环氧聚酯粉末粒径分布 [6] 韩丽萍,药春晖,尹王保.基于自适应边缘检测的小波包图像去 表1环氧聚酯粉末粉样粒径分布 噪[J].计算机工程与设计,200 ̄27(2):220—221. 粒径 微分 累积 粒径 微分 累积 粒径 微分 累积 [7] Comaniciu D,Meer P.A robust approach toward feature space /pm /pm /pm analysis[J].IEEE Trans Patt Anal Mach Intell,2002,4(5):603.619. 74.O5 [8]Dewaele.Textrue inspection with self-adaptive convolution fil— 87 97 96,41 ters[C].Proceedings ofNinth International Conference on Pat— 99.46 tern Recognition Rome,1 998:56—60. 99.97 [9】 Arrebola E Bandera A,Camacho P,et a1.Comer detection by 100.O0 local histograms of contour chain code .Electronics Letters, 100、OO 100.OO 1997,33(21):1769.1771. 100.OO [1O]刘勇奎.Freeman链码算法的研究[J].计算机学报,2001,24(2): 100.OO 1294.】298. (上接第3467页) 4结束语 Conference on Quality Software,2000:1 7‘26・ 本文利用Java多线程和网络编程的特性,设计并实现了 谭浩.性能测试的原理及其自动化工具的实现[J].计算机工程 一套Web性能测试工具ASTD。该测试工具通过模拟真实负 与设计,2006,27(1 9):3660—3662. 载,获得Web应用对用户请求的响应时间、连接失败率等性能 叶新铭,冯晓利.软件压力测试流程[J].内蒙古大学学报(自然 指标,从而给出全面、准确、可靠的性能评价,帮助找到系统性 科学版)。2002,33(1):107—108. 能瓶颈,保证了软件产品质量。 赫建营.一种有效的Web性能测试方法及其应用[J].计算机 应用研究,2007,22(1):275—277. 参考文献: Bruce Ecke1.Java编程思想[M].2版.北京:机械工业出版社, [1] Alberto Avritzer,Elaine J Weyuker.The role of modeling in the 2OO4:594.604. performance testing of E—commerce applications[J].IEEE Tran— 李年,王诚.基于Java的Web应用全球化自动测试设计[J].计 sactions on Software Engineering,2004,30(12):1072—1083. 算机工程与设计,2005,26(12):275—277. [2】 Subraya B M,Subrahrnanya S V Object driven performance tes— 王勇.Web应用系统通用性能测试系统的设计与实现[D].上 irng ofweb applications[C].Proceedings ofthe 1 st Asia—Paciifc 海:东华大学,2006. 一3512一
因篇幅问题不能全部显示,请点此查看更多更全内容