性能测试兵法

发表于:2007-8-24 13:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈绍英    来源:陈绍英的博客

分享:

        在大多数的性能测试工作中,我们可以看出很多内容都是互相关联的。这就给我们提供了一个思路:性能测试的很多内容可以经过一定的组织统一来进行。统一开展性能测试的巨大好处是可以由浅入深按照层次对系统进行测试,进而减少不必要的工作量,以实现节约测试成本的目的。为此,本文提出了“全面性能测试模型”的概念。

        “全面性能测试模型”提出的主要依据就是一种类型的性能测试可以在某些条件下转化成为另外一种类型的性能测试,而这些类型的测试实施也是很类似的。例如:针对一个网站进行测试,模拟10到50个用户就是在进行常规性能测试,用户增加到1000乃至上万就变成了压力/负载测试。如果同时对系统进行大量的数据查询操作,就包含了强度测试。

1 全面性能测试模型
        在“全面性能测试模型”中,把Web性能测试分为八个类别。下面首先介绍八个性能测试类别的主要内容。

        (1)预期指标的性能测试:系统在需求分析和设计阶段都会提出一些性能指标,这些指标是性能测试要完成的首要工作之一,本模型把预先确定的一些性能指标的测试称为预期指标的性能测试。

        这些指标主要是指诸如“系统可以支持并发用户1000”、“系统响应时间不得高于10秒”等在产品说明书等文档中中十分明确的内容,对这种预先承诺的性能要求,测试小组应该“首当其冲”完成这类测试。

        (2)独立业务性能测试:独立业务主要是指一些核心业务模块,这些模块通常具有功能比较复杂、使用比较频繁、属于核心业务等特点。这类特殊的、功能比较独立的业务模块始终都是性能测试重点。我们通常不但要测试这类模块的一些和性能相关的算法,还要测试这类模块对并发用户的响应情况。

        核心业务模块在需求阶段就可以确定,在系统测试阶段开始单独测试其性能。如果是系统类软件或者特殊应用的软件,通常从单元测试阶段就开始进行测试,在后继的集成测试、系统测试、验收测试中进一步进行测试,以保证核心业务模块的性能稳定。

        用户并发测试是核心业务模块的重点测试内容,“并发”的主要内容是模拟一定数量的用户同时使用某一核心模块的“相同”或者“不同”的功能,并且持续一段时间。对“相同”的功能进行并发测试分为两种类型,一类是在同一时刻进行完全一样的操作,例如打开同一条数据记录进行查看;另外一类是在同一时刻使用完全一样的功能,例如同时提交数据进行保存。可以看出后者是包含前前者的,后者是前者的特例,这种并发测试都要持续一定的时间。

        从微观角度讲,同时使用某一核心模块“不同”的功能,也是一种组合业务性能测试,只不过这种组合的相关业务大分类是一致的。

        (3)组合业务性能测试:通常不会所有的用户只使用一个或者几个核心业务模块,每个功能模块都可能被使用到,所以Web性能测试既要模拟多用户的“相同”操作(这里的“相同”指很多用户使用同一功能),又要模拟多用户的“不同”操作(这里的“不同”指很多用户同时对一个或者多个模块的不同功能进行操作),对多个业务进行组合性能测试。组合业务测试是最接近用户实际使用情况的测试,因而是性能测试的核心内容。我们通常按照用户的实际使用情况来模拟使用各个模板的人数比例。

        由于组合业务测试是最反映用户使用系统情况的测试,因而组合测试往往和服务器(操作系统、Web服务器、数据库服务器)性能测试结合起来,在通过工具模拟用户行为的同时,还通过测试工具的监控功能采集服务器的计数器信息,进而全面分析系统的瓶颈,为改进系统提供有利的依据。

        用户并发测试是组合业务测试的核心内容。“组合”并发的突出特点是分成不同的用户组进行并发,每组的用户比例要根据实际情况来进行匹配。组合业务测试可以理解为包含了“核心业务模块并发”和“非核心业务模块并发”同时进行的并发用户测试。

        (4)疲劳强度性能测试:疲劳强度测试是在系统稳定运行下模拟较大的用户数量、并长时间运行系统的测试,通过综合分析执行指标和资源监控来确定系统处理最大业务量时的性能,主要目的是为了测试系统的稳定性。

        (5)大数据量性能测试:大数据量测试分为两种:一种是针对某些系统存储、传输、统计查询等业务进行大数据量的测试,主要是测试数据增多时的性能情况,这类一般都是针对某些特殊的核心业务或者一些日常比较常用的组合业务的测试。

        第二种是极限状态下的数据测试,主要是指系统数据量达到一定程度时,通过性能测试来评估系统的响应情况,测试的对象也是某些核心业务或者日常常用的组合业务。例如系统的数据每年只备份转移一次,可分别选择一个季度、半年、一年作为参考,模拟输入各个时间段的预计数据量,然后测试系统的性能,进而预估系统的性能走向。

        由于大数据量仍然是为了测试系统的业务处理能力,因此大数据量性能测试可以独立进行,也可以和前面的独立、组合业务测试结合起来进行,主要由性能测试策略来决定。由于大数据量测试一般在投产环境进行,因此把它单独独立出来,和疲劳强度测试放在一起,在整个性能测试的后期进行。大数据量测试可以理解为特定条件下的核心业务或者组合业务测试。

        (6)网络性能测试:网络性能测试主要是为了准确展示带宽、延迟、负载和端口的变化是如何影响用户的响应时间的。在实际的软件项目中,主要是测试应用系统的用户数目与网络带宽的关系。

        (7)服务器性能测试(操作系统、Web服务器、数据库服务器):服务器性能测试分为初级和高级两种形式。“初级服务器性能测试”主要是指在业务系统工作或者进行前面其它种类性能测试的时候,监控服务器的一些计数器信息,通过这些数据对服务器进行综合性能分析,找出系统瓶颈,为调优或者提高性能提供依据。“高级服务器性能测试”一般不由测试人员进行,由专门的系统管理员来进行,例如数据库服务器由专门的DBA来进行测试和调优。本文主要讨论在测试中常用到的“初级服务器性能测试”,既通过工具对服务器资源进行监控的性能测试。

        (8)一些特殊测试:主要是指配置测试、内存泄漏测试一些特殊的Web性能测试。这类性能测试或者和前面的测试结合起来进行,或者在一些特殊情况下会独立进行,本文重点来讨论前一种情况,因为后一种情况往往通过特有的工具、较大投入的进行,可以不作为性能测试的范畴来研究。

2性能测试通用策略
2.1性能测试策略通用方法
        本节主要介绍一下通用的性能测试策略制定方法。性能测试策略一般从需求设计阶段开始讨论制定,策略的内容决定着性能测试工作投入多少资源、什么时间开始实施等后继工作如何安排。其制定的主要依据是“软件自身特点”和“用户对性能的关注程度”两个因素,其中软件的自身特点起决定作用。

        软件按照用途的不同分为两大类:系统类软件和应用类软件。系统类软件对性能一般要求比较高,因此性能测试应该尽早介入。应用类软件分为特殊类应用和一般类应用,特殊类应用主要指银行、电信、电力、保险、医疗、安全等领域类的软件,这类软件使用比较频繁,用户较多,一般也要较早进行性能测试;一般类应用主要指一些普通应用,例如办公自动化软件、MIS系统等,一般应用类软件多根据实际情况决定性能测试策略,比如OA系统,可以早开始、也可以最后进行性能测试,这类软件受用户因素影响比较大。

        用户一般可以分为四类:即对性能特别关注、中等重视、一般关注、不怎么关注四类。这里这么划分并不意味着用户不关注性能测试人员就可以忽略性能测试。不过,用户如果特别关注性能,测试人员也应该特别重视性能测试。表1列出了性能测试策略制定的基本原则。(注意:这里的用户是广义范围的用户,包括所有和我们的产品有利害关系的群体。因而不单单指最终使用产品的用户,这些用户既可以是为我们提出需求的产品部,也可以是公司的董事会,甚至是我们研发人员自己。)

软件类别

 

用户重视程度

系统类软件

应用类软件

一般应用

特殊应用

高度重视

设计阶段就开始针对系统架构、数据库设计等方面进行讨论,从根源来提高性能;

系统类软件一般从单元测试阶段开始性能测试实施工作,主要是测试一些和性能相关的算法或者模块。

设计阶段开始进行一些讨论工作,主要在系统测试阶段开始进行性能测试实施。

设计阶段就开始针对系统架构、数据库设计等方面进行讨论,从根源来提高性能;

系统类软件一般从单元测试阶段开始性能测试实施工作,主要是测试一些和性能相关的算法或者模块。

中等重视

可以在系统测试阶段的功能测试结束后进行性能测试。

一般重视

可以在系统测试阶段的功能测试结束后进行性能测试。

不怎么重视

可以在软件发布前进行性能测试,提交测试报告即可。

1性能测试策略制定对照表

31/3123>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • oppstone
    2011-1-06 15:43:29

    不错,很专业。

  • hua_0826
    2007-9-06 08:42:01

    不错的文章啊,正在学习中

  • hellen_ma
    2007-8-30 11:28:39

    虽然是本本上的.但给没看过这个本本的人提供了知识

  • ray528ray
    2007-8-29 09:35:18

    都是本本上的东西,有没有本本上没有的东西

  • meng0819
    2007-8-27 18:15:34

    文章不错。值得一看。

  • fmsbai5
    2007-8-27 14:21:35

    很好的文章。

  • QQHao
    2007-8-24 17:56:12

    正在学习这本书,很值得看!!!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号