zoukankan      html  css  js  c++  java
  • [轉]浅谈Web应用程序的压力测试

    from:http://qkzz.net/magazine/1009-3044/2007/26/2232059.htm

    摘要:压力测试是Web应用程序测试必不可少的一项工作。现以一个用ASP.NET开发的信息管理系统为例,详细论述如何使用ACT对Web应用程序进行压力测试。
      关键词:Web应用程序;压力测试;ACT
      中图分类号:TP306文献标识码:A文章编号:1009-3044(2007)17-31405-02
      Briefing on Stress Testing of Web Application Program
      LIANG Fa-xun
      (Guangzhou City Polytechnic,Guangzhou 510405,China)
      Abstract:Stress testing is an essential part of Web application program testing. Taking for example an information management system developed with ASP.NET, this article discusses in details about how to conduct Web application program testing by using ACT.
      Key words:Web application program; Stress testing;ACT
      
      1 引言
      
      软件测试是软件开发过程中非常重要的环节,通常在软件开发机构,软件测试占了整个项目工作量的40%。通过测试工作全面检验系统初级成品是否符合系统设计的思想,达到系统设计的功能要求。其中,在软件交付之前,为了验证系统的性能和稳定性,需要进行压力测试。
      
      2 压力测试简介
      
      压力测试是性能测试中的一种,它是通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并以此来获得系统能提供的最大服务级别的测试。使用压力测试,往往能够找到其他测试方法难以发现的错误,例如内存泄漏、并发与同步的问题。
      
      3 压力测试实例
      
      本人参与开发的一个基于Web的教学管理系统,该系统是一个B/S结构的信息管理系统。下面以它为例分析应该如何进行Web应用程序的压力测试。
      3.1 制定测试原则
      在建立一个测试环境时,应考虑以下几点原则:
      (1)测试环境应该只包含被测试服务器和测试客户机。
      (2)开发人员应该尽量减少所有与测试无关的网络活动。而且避免在同一测试环境中同时运行多个测试。
      (3)对于一个压力测试,创建足够的Web服务器负载,使处理器的利用率至少达到80%。
      (4)使用快速的网络组件,避免使用HTTP代理服务器。
      此外,压力测试依赖于逐渐增加的负载等级,直到Web服务器或者应用程序变成瓶颈,这个时候停止增加负载。如果系统的任何部分比Web服务器或应用程序慢,那么就不可能测量出服务器或应用程序的最大容量。增加负载等级将不能解决这个问题。
      3.2 建立测试环境
      测试环境包括测试所用的硬件设备和软件系统。
      基于上面提到的测试原则,被测试服务器和测试客户机硬件配置要合理搭配,二者配置差距不宜过大。
      具体的测试环境如下:
      服务器端:硬件配置P4 3GHz CPU,512MB内存,100Mb独立网卡;软件配置Windows Server 2003操作系统,SQL Server 2000企业版数据库,IIS 6.0 Web服务。
      客户机端:硬件配置CD2.4GHz CPU,512Mb内存,100Mb集成网卡;软件配置Windows Server 2000操作系统,IE5.5浏览器。
      由于互联网的不可预知性,不同时间的测试,所获得的数据也不一致,所以为了得到一个稳定的网络,测试工作最好安排在局域网,且在测试同时尽量不要有其它无关数据通信。
      3.3 选择测试工具
      常见的Web应用程序测试工具很多,流行的主要有LoadRunner、WAS(Web Application Stress Tool)、ACT(Application Center Test)、Apache JMeter等。其中LoadRunner较为全面,支持多种协议;WAS和ACT都是微软的产品,WAS是一个比较早以前就发布的测试工具,简单易用但功能强大;而ACT是后来跟Microsoft Visual Studio .NET一起发布的,可以把它看成是微软WAS的升级版本;Apache JMeter是纯Java桌面应用测试工具。由于该信息管理系统就是使用Microsoft Visual Studio .NET 2003 开发的,所以为了测试方便,压力测试工具选择了Microsoft Visual Studio .NET 2003里面集成的ACT。ACT 是专门为对 Web 服务器进行压力测试和分析 Web 应用程序(包括 ASP (Active Server Pages) 及其所用的组件)的性能和可伸缩性问题而设计的。它通过与服务器建立多个连接并快速发送 HTTP 请求来模拟成员众多的一组用户,可以对 Web 应用程序进行持续时间长、高负载的应力测试。
      3.4 测试过程
      3.4.1 安装Microsoft Visual Studio .NET,运行开始菜单里的Application Center Test。
      3.4.2 录制测试
      ACT所使用到的测试脚本有2种方法获取,一是通过记录浏览器的活动,另外一种是手工制作。现在我们使用的是第一种方法。点击菜单“操作-新建测试”,在出现的新建测试向导界面选择“录制新测试”,选择脚本语言,点击“开始录制”,这时ACT会自动弹出IE浏览器窗口,输入要测试站点的地址,然后开始操作。操作的过程就是测试用例的过程。操作完毕后点击“停止录制”。输入测试名称,录制测试完成。
    3.4.3 建立用户
      在对Web站点进行压力测试时,我们模拟多个用户对它进行访问,通常会用到登录该站点的用户名和密码。所以我们需要事先建立Web系统中的用户。在导航栏中选择“用户”,右击鼠标选择“添加”,得到“新建用户组”。
      3.4.4 设置属性
      在导航栏中选择测试项目,右击鼠标选择“属性”。
      打开属性窗口的“常规”选项卡 :
      (1)设置测试负载级别。它是以浏览器同时连接数来衡量的。在测试运行中,ACT 可以打开多个与 Web 服务器的连接,并可以在每个连接上发送请求。使用多个连接可以模拟同时有多个用户访问 Web 服务器的情况。
      (2)准备时间:在其它的测试工具又称“热身时间”。在测试运行的前几秒内,Web 应用程序或服务器可能正在初始化组件或调整缓存数据。在准备时间内,ACT 不收集统计数据。
      (3)运行时间:执行测试脚本要连续运行的时间,格式为:天数-小时数-分钟数-秒数。通常情况下,要进行持续的压力测试,运行时间至少 8 小时。
      (4)迭代次数:在建立测试脚本的初期,我们常常为了验证测试脚本运行的正确性,通常需要执行运行的次数。
      点击“高级”按钮,默认是选上生成详细测试结果。
      打开属性窗口的“用户”选项卡,可以选择在测试中选择需要的用户组。这里可以多选几个用户组,也可以让 ACT 自动生成用户(用于不需要进行登陆的系统)。
      打开属性窗口的“计数器”选项卡,这里可以设置计数器收集数据间隔的时间;各种性能计数器可以在这里添加。
      3.4.5 执行测试
      选择测试名称,右击“启动测试”。测试界面会显示程序测试已用时间、每秒提交的请求次数、剩余时间、总请求数、错误数量等。点击“显示详细信息”,可以看到上面数据以即时图表方式显示。
      3.5 分析测试结果
      测试结束后,选择测试项目右击鼠标“查看最新结果”,可以看到ACT自动生成的测试结果。分别设置不同的参数对刚才录制的脚本进行了6次测试,下面对其中几个图表部分内容进行分析。
      表1 属性
      表2 摘要
      表3 错误计数
      表4 其他网络统计数据
      表5 响应代码
      其中Response Code 403 表示服务器理解此请求,但拒绝满足它;Response Code 302 表示请求的资源暂时驻留在另一不同的URI(统一资源标识符)下;Response Code 200 表示请求已成功完成。
      由表1可知,随着浏览器同时连接数的增多,测试迭代次数也增多;分析表2,浏览器同时连接数在2-10的范围内,请求总数和连接总数都维持在5800-6500之间,每秒平均请求数基本维持在100附近,同时查看服务器的CPU资源占用率,都维持在100%,从此可知,此系统性能的瓶颈在CPU处,而同时首、末字节平均响应时间均上升,说明系统响应越来越慢;分析表3,浏览器同时连接数少于4时,没有错误,当浏览器同时连接数达到8,出现HTTP和套接字错误,并且随着浏览器同时连接数的增多急剧上升;分析表4,浏览器同时连接数少于4时,没有错误,当浏览器同时连接数达到8,出现发送错误和接收错误,并且随着浏览器同时连接数的增多急剧上升;分析表5,浏览器同时连接数少于4时,没有响应代码403,当浏览器同时连接数达到8,出现响应代码403,并且随着浏览器同时连接数的增多急剧上升,在浏览器同时连接数少于8的时候,响应代码200比例维持在78%附近,浏览器同时连接数达到10时略微下降,浏览器同时连接数达到12时急剧下降。从以上可知,系统瓶颈在于CPU处,浏览器同时连接数为8即达到饱和,此时的每秒平均请求数基本维持在100附近,再增多连接数,只会造成更多的HTTP错误和套接字错误,服务器拒绝连接的数量更多,且造成成功连接的数量更少,性能反而下降。
      
      4 结语
      
      压力测试是Web应用程序测试的必要环节。本文以一个典型的用ASP.NET开发的信息管理系统为例,详细介绍了如何使用ACT对Web站点进行测试,并对测试结果进行了深入分析。ACT凭着与Windows系统有良好的兼容性,简洁的人机对话界面,详细的测试结果,随着.NET技术的广泛使用,必然会有越来越多的开发者使用。
      
      参考文献:
      [1](美)Alex Homer, Matt Odhner.袁勤勇, 王福华,等译.Application Center 2000 专家指南[M]. 北京: 清华大学出版社, 2002:191-224.
      [2]王培宇, 胡同森,等译.Microsoft ACE小组.Microsoft .NET Web应用程序性能测试[M].北京: 清华大学出版社,2003:38-52.
      注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    C++ 黑白棋AI minimax+alphabeta剪枝
    BZOJ2839 集合计数 容斥
    BZOJ2287 消失之物
    CF235B Let's Play Osu! 期望DP
    线性基
    [HAOI2008]糖果传递 结论题
    [HAOI2007]上升序列
    线性筛及线性递推欧拉函数
    Codeforces 1064D/1063B Labyrinth
    洛谷P2120 [ZJOI2007]仓库建设 斜率优化DP
  • 原文地址:https://www.cnblogs.com/Athrun/p/1551634.html
Copyright © 2011-2022 走看看