Web应用程序的整体测试_第1页
Web应用程序的整体测试_第2页
Web应用程序的整体测试_第3页
Web应用程序的整体测试_第4页
Web应用程序的整体测试_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Web 应用程序的整体测试cwj007 yesky论坛随着 Internet 的日益普及, 现在基于 B/S结构的大型应用越来越多, 可如何对这些应用进行测试成为日 益迫切的问题。有许多测试人员来信问我 B/S的测试如何做,由于工作较繁忙,对大家提出的问题也是头 痛医头脚痛医脚,没有对 WEB 的测试过程做一个整体的概述。希望通过本篇能够让大家了解大型 Web 应 用是如何来进行测试的。B/S下的功能测试比较简单,关键是如何做好性能测试。目前大多数的测试人员认为只要跑一些测试 工具证明我的产品是可以达到性能的就 ok 了, 为了证明而去测试是没有任何价值的, 关键是要发现产品性 能上的缺陷,定

2、位问题,解决问题,这才是测试要做的。首先我们从两个方面分析如何进行 WEB 测试,从技术实现上来讲一般的 B/S结构,无论是 .NET 还是 J2EE, 都是多层构架,有界面层,业务逻辑层,数据层。而从测试的流程上来说,首先是发现问题,分析问 题,定位问题,再由开发人员解决问题。那么 B/S的结构的测试如何来做?如何发现问题是我首先要介绍的,在做 WEB 测试之前你需要一些资料,比如产品功能说明书,性能 需求说明书,不一定很完善,但一定要有,明确测试目标,这是基本的常识,可是我往往看到的是已经开 始动手测了,但还不知自己的系统要达到的性能指标是什么。这里我简单讲一下测试的性能指标:1、通用指标

3、(指 Web 应用服务器、数据库服务器必需测试项 :* ProcessorTime: 指服务器 CPU 占用率,一般 平均达到 70%时,服务就接近饱和;* Memory Available Mbyte : 可用内存数,如果测试时发现内存有变化情况也要注意,如果是内存泄露 则比较严重;* Physicsdisk Time : 物理磁盘读写时间情况;2、 Web 服务器指标:* Avg Rps: 平均每秒钟响应次数=总请求时间 / 秒数;* Avg time to last byte per terstion (mstes :平均每秒业务角本的迭代次数 , 有人会把这两者混淆; * Succes

4、sful Rounds:成功的请求;* Failed Rounds :失败的请求;* Successful Hits :成功的点击次数;* Failed Hits :失败的点击次数;* Hits Per Second :每秒点击次数;* Successful Hits Per Second :每秒成功的点击次数;* Failed Hits Per Second :每秒失败的点击次数;* Attempted Connections :尝试链接数;3、数据库服务器指标:* User 0 Connections :用户连接数,也就是数据库的连接数量;* Number of deadlocks:数据库

5、死锁;* Butter Cache hit :数据库 Cache 的命中情况;上面的指标只是一些通用的指标 , 起到抛砖引玉的作用,对于不同的应用你还必需作相应的调整,比如 程序使用的是 .NET 技术的,则必需加入一些针对性的测试指标。对于这些指标的详细了解,你可以参考 Windows 下面的 SystemMonitor 的帮助与 LoadRunner 、 ACT 的帮助。对于发现问题,指标的设置非常重 要,它会帮你定性的发现一些错误。对于定性的压力测试我就不做过多的分析,工具很多,流行的主要有 LoadRunner,ACT,WAS,WebLoad, 各个工具有它的使用范围,其中我各个认为

6、LoadRunner 最全面,它提供 了多种协议的支持,对复杂的压力测试都可以胜任, WAS 与 ACT 则对微软的技术支持的比较好,其中 WAS 支持分布式机群测试 ,ACT 则是与 .NET 集成比较好, 支持 ViewState (.NET 下控件缓存的支持 的 测试,当时我用时,其它测试工具还不支持,现在应该支持了吧。在这一阶段测试你要不断的跟据系数的测试目标进行变化,一开始由于系统过于庞大,所以我们要分 成若干个子系统,各个子系统的性能目标必需明确,主要是并发指标定一个阀值,同时设定一些与系统相 关的测试参数,应用服务器,数据库服务器都要有,对达不到阀值的与一些通用参数有问题的子系统

7、进行 深入分析。比如它的并发达不到你的要求,证明子系统性能有问题,或是数据库用户连接过高,程序没有 释放用户连接等等。这个我们要对子系统进行详细测试, 由于 B/S 结构下 , 图片的请求对性能的影响较大, 所以我们对子系 统测试时要分两个部分进行,一、非程序部分,即图片等等 ; 二、应用程序本身。通过事务或函数的分离, 可以把这两块实现单独的测试,具体做法参考各个工具的手册,我这里就不做说明。对子系统的测试参数的设置要求则更高,它有助你后面精确的定位问题,比如对异常,死锁,网络流 量等等前面没有注意到的情况的增加,同时你要注意增加测试参数的收集对系统的性能影响比较大,所以 一般不要超过 10

8、个, 刚刚介绍的整体的性能测试指标也不要增加很多, 这样影响会小一点。 最后在这一阶 段要说明的是数据库的数据量会很大程度的影响性能,所以要根据前面的性能需求说明书向数据库中模拟 相应的数据量,来进行测试,这样才有更高的可信度。上面所说的是对问题的发现,下面就是分析问题原因,这一步的要求比较高,一般由测试人员与程序 员配合完成,当然如果你有相当的开发经验,再做这方面的测试,就更为难得。下面我们说说如何精确定 位问题,出现问题的可能性可能有很多种,大致分以下几种:一、性能达不到目标;二、性能达到目标,但有一些其它的问题,比如异常,死锁,缓存命中过低,网络流量较大;三、服务器稳定性的问题,比如内存

9、泄漏。要发现这些问题起马的要求要有一款使用的比较称心的性能分析与优化工具, 比如微软的 .NET 下就有 自己开发的工具,对 Borland 的 Java 开发工具中也有类似的工具,但我个人认为更好的工具是 Rose 下的 Purify 与 Quantify, 主要是他对 .net 与 java ,C+都有支持, 而且分析效果特别专业, 我们先了解一下 Rational Purify, Rational Purify 能自动找出 Visual C/C+ 和 Java 代码中与内存有关的错误, 确保整个应用程序的质 量和可靠性。在查找典型的 Visual C/C+ 程序中的传统内存访问错误,以及

10、 Java , C# 代码中与垃圾内存 收集相关的错误方面; Rational Quantity 则是一款针对函数级的性能分析利器, 使用它你可以从图形化的界 面中得到函数调用的时间,百分比与次数,以及子函数所占时间,使你可以更快的定位性能瓶颈。我们先说性能优化与异常的处理,性能优化有一个原则,即用时间比例最大的进行优化,效果才最明 显,比如有个函数它的执行时间为 30秒,如果你优化了一百倍则执行时间为 0.3秒 , 提升了 29.7秒,而如 果它的执行时间为 0.3秒,优化后为 0.003秒,实际提升了 0.297秒,提升的效果并不明显,而且写过程序 的人都知道,后者性能优化的代价更大。在性

11、能优化的过程中,一般是先数据库,后程序,因为数据库的 优化不需要修改程序, 修改的风险很小。 但如何才能确定是数据库的问题, 这就需要技巧, 在使用 Quantity 时,你一路分析下去,大多数最终会发现,是数据库查询函数占用时间比较大,比如什么, SqlCmd.ExecuteNoQuery 等等数据库执行函数 , 这时你就需要分析数据库。数据库的分析原则是先索引,后存储过程,最后表结构视图的优化,索引的优化是最简单也是通常最 有效的方法,如果合理的使用会带来意想不到不到的效果。在这里我要给大家简单的介绍一下我的最爱, SQLProfile,SQL 查询分析器, Precise,SQLProf

12、ile 是一个 SQL 语句跟踪器,可以跟踪程序流程使用的 SQL 语句与存储过程,结合查询分析器对 SQL 的分析,可以对索引的优化做出很好的判断,但索引也不是万能 的,在增删改较多的表,索引过多会引起这些操作的性能下降,所以判断还是需要一定的经验。同时针对用户使用频度最高的 SQL 进行优化也是最行之有效的, 这时我则需要 Precise , 它可以观测某 一个较长时间内的 SQL 语句的执行情况。 数据库优化的潜能挖光后,如果还是达不到性能要求或是还有问 题,则要从程序来进行优化,这是程序员做的事,测试人员要做的,就是告诉他们,哪个函数执行过多引 起了性能下降,比如异常过多,某个循环过多

13、,或是 DCOM 调用过多等等,但说服程序员也是一件不容易 的事,你要在这一阶段做的出色一定要有几年的编程经验,并且要让程序员感到听你的性能会有提升,这 是一件很不容易的事情。内存的分析,一般是一个长期分析的过程,要做好不容易,首先要有长期奋战的准备,其次内存泄漏 的分析最好是放在单元测试之中同步进行,而不是要等到最后再去发现问题,当然出了问题也只好面对, 一般这类问题都是在服务器运行了很久才暴露出来,一旦发现问题后,则需要定位问题,分析的原则采用 子系统相互独立运行,找到最小问题的系统集 , 或是借助内存分析工具观察内存对象情况,初步定位问题, 再用 Purify 进行运行时分析,通常 C+

14、 内存问题比较多, Java 与 .NET 比较少,一般由 GC 不合理引起。 C+的内存错误就比较多了,主要常见的有 :1、 Array Bounds Read (ABR :数组越界读2、 Array Bounds Write (ABW:数组越界写3、 Beyond stack Read (BSR:堆栈越界读4、 Free Memory Read(FMR:空闲内存读5、 Invalid pointer Read(IPR:非法指针阅读6、 Null Pointer Read(NPR:空指针阅读7、 Uninitialized Memory Read(UMR:未初始化内存读写8、 Memory Leak:内存泄漏注

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论