51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6443|回复: 12
打印 上一主题 下一主题

Web下的整体测试

[复制链接]
  • TA的每日心情

    2015-9-10 15:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2008-10-25 11:46:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    随着Internet的日益普及,现在基于B/S结构的大型应用越来越多,可如何对这些应用进
    行测试成为日益迫切的问题。有许多测试人员来信问我B/S的测试如何做,由于工作较繁忙,
    对大家提出的问题也是头痛医头脚痛医脚,没有对WEB的测试过程做一个整体的概述。希望通
    过本篇能够让大家了解大型Web应用是如何来进行测试的。

        B/S下的功能测试比较简单,关键是如何做好性能测试。目前大多数的测试人员认为只要
    跑一些测试工具证明我的产品是可以达到性能的就ok了,为了证明而去测试是没有任何价值
    的,关键是要发现产品性能上的缺陷,定位问题,解决问题,这才是测试要做的。

        首先我们从两个方面分析如何进行WEB测试,从技术实现上来讲一般的B/S结构,无论
    是.NET还是J2EE,都是多层构架,有界面层,业务逻辑层,数据层。而从测试的流程上来说,
    首先是发现问题,分析问题,定位问题,再由开发人员解决问题。那么B/S的结构的测试如何
    来做?

        如何发现问题是我首先要介绍的,在做WEB测试之前你需要一些资料,比如产品功能说明
    书,性能需求说明书,不一定很完善,但一定要有,明确测试目标,这是基本的常识,可是我
    往往看到的是已经开始动手测了,但还不知自己的系统要达到的性能指标是什么。这里我简单
    讲一下测试的性能指标:

    1、通用指标(指Web应用服务器、数据库服务器必需测试项):
    * ProcessorTime: 指服务器CPU占用率,一般 平均达到70%时,服务就接近饱和;
    * Memory Available Mbyte : 可用内存数,如果测试时发现内存有变化情况也要注意,如果
    是内存泄露则比较严重;
    * Physicsdisk Time : 物理磁盘读写时间情况;

    2、Web服务器指标:
    * Avg Rps: 平均每秒钟响应次数=总请求时间 / 秒数;
    * Avg time to last byte per terstion (mstes):平均每秒业务角本的迭代次数 ,有人会
    把这两者混淆;
    * Successful 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:数据库死锁;
    * Butter Cache hit :数据库Cache的命中情况;

        上面的指标只是一些通用的指标,起到抛砖引玉的作用,对于不同的应用你还必需作相应
    的调整,比如程序使用的是.NET技术的,则必需加入一些针对性的测试指标。对于这些指标的
    详细了解,你可以参考Windows 下面的 SystemMonitor的帮助与LoadRunner、ACT的帮助。对
    于发现问题,指标的设置非常重要,它会帮你定性的发现一些错误。对于定性的压力测试我就
    不做过多的分析,工具很多,流行的主要有LoadRunner,ACT,WAS,WebLoad,各个工具有它的使
    用范围,其中我各个认为LoadRunner 最全面,它提供了多种协议的支持,对复杂的压力测试
    都可以胜任,WAS与ACT则对微软的技术支持的比较好,其中WAS支持分布式机群测试,ACT则是
    与.NET集成比较好,支持ViewState (.NET 下控件缓存的支持) 的测试,当时我用时,其它
    测试工具还不支持,现在应该支持了吧,呵呵。在这一阶段测试你要不断的跟据系数的测试目
    标进行变化,一开始由于系统过于庞大,所以我们要分成若干个子系统,各个子系统的性能目
    标必需明确,主要是并发指标定一个阀值,同时设定一些与系统相关的测试参数,应用服务
    器,数据库服务器都要有,对达不到阀值的与一些通用参数有问题的子系统进行深入分析。比
    如它的并发达不到你的要求,证明子系统性能有问题,或是数据库用户连接过高,程序没有释
    放用户连接等等。这个我们要对子系统进行详细测试,由于B/S 结构下,图片的请求对性能的
    影响较大,所以我们对子系统测试时要分两个部分进行,一、非程序部分,即图片等等;二、
    应用程序本身。通过事务或函数的分离,可以把这两块实现单独的测试,具体做法参考各个工
    具的手册,我这里就不做说明。对子系统的测试参数的设置要求则更高,它有助你后面精确的
    定位问题,比如对异常,死锁,网络流量等等前面没有注意到的情况的增加,同时你要注意增
    加测试参数的收集对系统的性能影响比较大,所以一般不要超过10个,刚刚介绍的整体的性能
    测试指标也不要增加很多,这样影响会小一点。最后在这一阶段要说明的是数据库的数据量会
    很大程度的影响性能,所以要根据前面的性能需求说明书向数据库中模拟相应的数据量,来进
    行测试,这样才有更高的可信度。

        上面所说的是对问题的发现,下面就是分析问题原因,这一步的要求比较高,一般由测试
    人员与程序员配合完成,当然如果你有相当的开发经验,再做这方面的测试,就更为难得。下
    面我们说说如何精确定位问题,出现问题的可能性可能有很多种,大致分以下几种,一、性能
    达不到目标;二、性能达到目标,但有一些其它的问题,比如异常,死锁,缓存命中过低,网
    络流量较大;三、服务器稳定性的问题,比如内存泄漏……。要发现这些问题起马的要求要有
    一款使用的比较称心的性能分析与优化工具,比如微软的.NET下就有自己开发的工具,对
    Borland的Java开发工具中也有类似的工具,但我个人认为更好的工具是Rose下的Purify与
    Quantify,主要是他对.net 与java ,C++都有支持,而且分析效果特别专业,我们先了解一下
    Rational Purify, Rational Purify 能自动找出Visual C/C++ 和Java 代码中与内存有关的
    错误,确保整个应用程序的质量和可靠性。在查找典型的Visual C/C++ 程序中的传统内存访
    问错误,以及Java,C# 代码中与垃圾内存收集相关的错误方面;Rational Quantity 则是一
    款针对函数级的性能分析利器,使用它你可以从图形化的界面中得到函数调用的时间,百分比
    与次数,以及子函数所占时间,使你可以更快的定位性能瓶颈。

        我们先说性能优化与异常的处理,性能优化有一个原则,即用时间比例最大的进行优化,
    效果才最明显,比如有个函数它的执行时间为30秒,如果你优化了一百倍则执行时间为0.3秒,
    提升了29.7秒,而如果它的执行时间为0.3秒,优化后为0.003秒,实际提升了0.297秒,提升
    的效果并不明显,而且写过程序的人都知道,后者性能优化的代价更大。在性能优化的过程
    中,一般是先数据库,后程序,因为数据库的优化不需要修改程序,修改的风险很小。但如何
    才能确定是数据库的问题,这就需要技巧,在使用Quantity时,你一路分析下去,大多数最终
    会发现,是数据库查询函数占用时间比较大,比如什么,SqlCmd.ExecuteNoQuery等等数据库
    执行函数,这时你就需要分析数据库,呵呵。数据库的分析原则是先索引,后存储过程,最后
    表结构视图的优化,索引的优化是最简单也是通常最有效的方法,如果合理的使用会带来意想
    不到不到的效果。在这里我要给大家简单的介绍一下我的最爱,SQLProfile,SQL查询分析器,
    Precise,SQLProfile是一个SQL语句跟踪器,可以跟踪程序流程使用的SQL语句与存储过程,结
    合查询分析器对SQL的分析,可以对索引的优化做出很好的判断,但索引也不是万能的,在增
    删改较多的表,索引过多会引起这些操作的性能下降,所以判断还是需要一定的经验。同时针
    对用户使用频度最高的SQL进行优化也是最行之有效的,这时我则需要Precise,它可以观测某
    一个较长时间内的SQL语句的执行情况。数据库优化的潜能挖光后,如果还是达不到性能要求
    或是还有问题,则要从程序来进行优化,这是程序员做的事,测试人员要做的,就是告诉他
    们,哪个函数执行过多引起了性能下降,比如异常过多,某个循环过多,或是DCOM调用过多等
    等,但说服程序员也是一件不容易的事,你要在这一阶段做的出色一定要有几年的编程经验,
    并且要让程序员感到听你的性能会有提升,这是一件很不容易的事情哦。

        内存的分析,一般是一个长期分析的过程,要做好不容易,首先要有长期奋战的准备,其
    次内存泄漏的分析最好是放在单元测试之中同步进行,而不是要等到最后再去发现问题,当然
    出了问题也只好面对,一般这类问题都是在服务器运行了很久才暴露出来,一旦发现问题后,
    则需要定位问题,分析的原则采用子系统相互独立运行,找到最小问题的系统集,或是借助内
    存分析工具观察内存对象情况,初步定位问题,再用Purify进行运行时分析,通常C++ 内存问
    题比较多,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:内存泄漏

    注:如果需要更多的信息,可以参见Purify的帮助信息。

        顺便提一句,为什么我要说单元测试时做这个比较好,由于单元测试针对的是单一功能,
    这时结合单元测试案例做内存分析会更快的定位问题,同时由于问题较早的发现,则后期的风
    险则会减少,当然如果结合代码覆盖工具PureCoverage 来做就更完美了。

        注:本篇只是对B/S应用的测试过程作一个整体的描述,对某一个阶段使用的工具只是作
    大概的介绍,你也可使用你比较熟悉的工具达到相同的目标。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2008-10-27 15:13:58 | 只看该作者
    现在国内外的商务站都暗淡呀……
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2015-9-10 15:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
     楼主| 发表于 2008-10-28 00:17:38 | 只看该作者
    我觉得还行吧    不是很明显   

    不过  在这次 经济危机 下    那肯定是暗淡了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2008-10-31 11:57:34 | 只看该作者
    嗯 楼上分享的不错
    现在国内公司很少真正做单元测试,不少都是开发自测试下完事了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2008-11-10 15:32:01 | 只看该作者
    haha ~kankan ~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2009-11-25 18:14:04 | 只看该作者
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2015-9-10 15:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
     楼主| 发表于 2009-12-2 18:30:11 | 只看该作者

    11111111111111111111

    222222222222222222
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2009-12-3 09:54:28 | 只看该作者
    有参考价值
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2009-12-30 16:50:06 | 只看该作者
    竟然冷落 sdlkfj%
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2010-1-5 16:17:31 | 只看该作者
    谢谢谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2010-3-17 14:12:15 | 只看该作者
    知名企业招聘出,中, 高级测试工程师, lead, pm
    知名企业招聘出,中, 高级测试工程师, lead, pm
    知名外企邀SDET(开发测试)


    群:
    职位: SDET, 工作地:深圳
    联系方式:[email=Mail to:   hrwelcome@live.cn   [/email] MSN:hrwelcome@live.cn
    1. Must have solid foundation of software developing with C#/c++/Java for 3+ years;               
    2. Best to have 1+ years of experience in functional testing;               
    3. Best to be familiar with various testing phases and methodologies;               
    4. Best to have experience in writing automated test scripts;               
    5. Knowledge of Internet related technologies and web-services is a must;               
    6. Best to be able to understand and translate functional requirements/specifications into test cases;               
    7. Best to be able to develop own test cases from functional specifications;               
    8. Excellent problem solving skills;               
    9. Strong communication skills;               
    10. Good English skills.               
    1. Help to impove the whole team automation skill level.               
    2. Drive testing activities (manual&automated) for projects and pre-defined areas of ownership;               
    3. Writing test plans and holds review (also other recurrent test meetings) with client;               
    4. Daily summarize and report the project status.               
    1. Big Picture: USA online travel system.               
    2. Our Team: Web based (UI&Functional) test.



    软件测试工程师(初,中, 高级测试工程师, lead, PM):
    工作地点: 深圳      联系方式:MSN/Email: hrwelcome@live.cn  

    1. 熟悉测试的基本理论,测试用例,测试计划,Bug系统等。

    2. 执行过相应的黑盒测试。

    3. 有耐心,能够深入研究相关的业务知识。

    4. 具有较好的coding能力,能够独立完成和开发出自己的测试用例。

    5. 善于思考并且提出相对应的方案和问题。

    6. 态度积极向上,能承受一定的工作压力。

    7. 有一定测试工具使用经验。

    8.  英文良好。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2015-9-10 15:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    12#
     楼主| 发表于 2010-3-17 15:36:22 | 只看该作者
    你牛..
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2010-3-25 14:49:30 | 只看该作者
    只能路过
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-13 13:52 , Processed in 0.071734 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表