51testing 发表于 2008-7-4 17:16:39

谈谈常用的性能测试方法(策略)和测试要点有哪些?(08-07-04)(获奖名单已公布)

常用的性能测试方法(策略)和测试要点有哪些?欢迎大家踊跃讨论!

感谢会员sun_0910提供此精彩问题!如果你也有问题想提出来和大家一起讨论,请点击此处>>
说不定下期讨论的问题就是由你提出的哦,请快快参与吧!

非常感谢各位会员积极参与,截止至7月11日17:00分,从该贴所有评论中选出部分作出精彩评论的会员予以奖励。礼品和积分将在下周内送出。

获奖名单奖项获奖名单奖励答案链接一等奖charles当当购物卡50元26#二等奖rolei300论坛积分16#jency_moon13#三等奖yayapang 100论坛积分24#duola1119 11#


http://bbs.51testing.com/attachments/month_0811/20081125_650d7dccd46be6244f27oXDjE0HoDhyX.gif




相关文章:

性能测试方法

数据库性能测试方法讨论

基于协议应用的系统之性能测试方法讨论

更多内容请点击>>>

QQHao 发表于 2008-7-4 17:36:53

楼主发起的话题 不错先占个沙发 :loveliness:

sun_0910 发表于 2008-7-4 18:52:56

欢迎有性能测试经验和爱好性能测试的朋友或同行前来指点迷津!!

小弟最近要做银行系统的性能测试,可是理论倒是很多,没有实战过,欢迎有性能测试经验和爱好性能测试的朋友或好心人前来指点迷津!!把相关的测试用例以附件的形式附带上来也是可以的哟!!呵呵!!

特别邀请本网站的云层、huior 、Zee、 godn_1981 、卖烧烤的鱼、陈能技、ricelane 、sunshinelius, andy, rickyzhu, liangjz, 等等版主,给出您们的好方法,小弟首先谢过啦!!

                                 sun_0910
                                                                  2008-7-4

vandagroup 发表于 2008-7-4 21:02:50

老兄,要想人帮助就要告诉项目背景呀?

友情提醒:
老兄,要想人帮助就要告诉项目背景呀?要不然想帮您也是理论呀?不适用哟,呵呵!!!

sun_0910 发表于 2008-7-4 21:21:50

建议不错

谢谢3楼的建议,到时候请您吃大餐,送一朵鲜花,呵呵!!

我们目前做的银行系统,即“外汇交易系统”,类似于现在股票交易系统和证券交易。请有类似相关工作经验的同行,多给建议。本人非常感谢。

pbz 发表于 2008-7-5 07:39:15

回复 1# 的帖子

·等价类划分方法
·边界值分析方法
·错误推测方法
·因果图方法
·判定表驱动分析方法
·正交实验设计方法
·功能图分析方法

wendy20080306 发表于 2008-7-5 16:33:35

回复1楼

1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。



  2. 相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。



  3. 检查按钮的功能是否正确:如update, cancel, delete, save等功能是否正确。



  4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错.



  5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.



  6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确.



  7. 中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错.



  8. 检查带出信息的完整性: 在查看信息和update信息时,查看所填写的信息是不是全部带出.,带出信息和添加的是否一致



  9. 信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.



  10. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理.



  11. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型.



  12. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错.



  13. 重复提交表单:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。



  14. 检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错.



  15. search检查: 在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确.如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确.



  16. 输入信息位置: 注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方.



  17. 上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。



  18. 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加*



  19. 快捷键检查:是否支持常用快捷键,如Ctrl C Ctrl V Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。



  20. 回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错.

wendy20080306 发表于 2008-7-5 16:38:42

性能测试要点:

 性能测试要点:

  1、 性能测试是在功能测试完成之后进行。

  2、 性能测试计划、方案一般与测试用例统一在一个文档里。

  3、 测试环境应尽量与用户环境保持一致。

  4、 性能测试一般使用测试工具和测试人员编制测试脚本来完成,性能测试的环境应单独运行尽量避免与其他软件同时使用。

  5、 性能测试的重点在于前期数据的设计与后期数据的分析。

  6、 性能测试的用例主要涉及到整个系统架构的问题,所以测试用例一旦生成,改动一般不大,所以做性能测试的重复使用率一般比较高。(说明:当系统中出现的某个功能点需要修改,它一般只会影响到功能测试的设计用例,而对于性能测试,很少影响到性能测试的设计用例。但是如果某个功能有较大的修改,性能测试也应该进行重新测试。)

gaoy666 发表于 2008-7-6 14:37:41

同意6楼同志的总结,比较全面

vxiaoqiangs 发表于 2008-7-7 12:03:34

没有接触过性能测试,进来学习一下

duola1119 发表于 2008-7-7 17:13:03

我发表下我的看法:
看到有些同仁似乎还没有理解什么是性能测试,我想这个问题我就从什么是性能测试开始回答
1.什么是性能测试
性能测试是用来测试软件在系统中的运行时能力,特别是针对实时系统和嵌入式系统。性能测试可以在各个测试阶段进行,但进行的目的各有不同,有诊断性质的,有调优性质的,还有检测性质的。但对于一个系统真正的性能测试只有在系统集成测试阶段执行。性能测试的目的一方面是为了检验系统的性能是否符合要求,另一方面也是为产品的宣传提供有力的数据。
2.性能测试的分类
a。一般意义的性能测试
这类的性能测试一般单指响应时间的性能测试,如正常用户操作时客户端的响应时间
b。强度测试
强度测试需要在反常数量、频率或资源的方式下运行系统,以检验系统能力的最高实际限度,它要求软件必须被强制在它的设计能力的极限状态下运行。
c。软件可靠性测试
测试要需持续一夜,一周,或者几周的时间,目标是发现短序列测试遗漏的错误。这种测试经常发现的错误包括越界指针,内存泄漏,栈溢出,超过两个特性之间的错误交互等,也称长序列测试,持久测试,耐力测试。一般的软件平均无故障时间是一个最为重要的可靠性指标。
3.性能测试的方法
a。测试人员与应用交互的过程中,应该知道应用的响应是否缓慢,这些BUG是基于常识性知识的。不指出问题的所在,而只是警告问题的
存在
b。观察测试
这种测试使用某些工具给出确切的数据,如使用秒表等工具以便给出更为清晰的概念
c。第三方测试
使用专业的性能测试工具
4.性能测试策略
a。识别系统组件
        画一个网络结构图阐明应用程序的结构,包括所有的系统组件,如:客户端机器,网络,中间件,服务器等等。
b。描述系统配置
        客户端机器的配置(硬件、内存、操作系统、开发工具等)
        数据库类型,网络服务器种类
        中间件配置
        通信设备的吞吐量
c。分析使用模式
        定义系统怎样有代表性的使用,决定哪几个功能对于测试是最重要的、考虑谁用系统、各种类用户的数目、各用户的常用任务、另
外也要考虑影响系统反应时间的背景负载(所谓的背景负载就是在执行测试任务之前,运行于系统之内的进程所带来的负载)
d。确定任务分布状态
        分析任务分布决定什么时候有峰值的数据活动,确定系统最大压力产生的时间段,依据该时间段设计测试策略
        如该图显示的10点到12点,登录事务就由220增加到250,下午2点下降到210,那么10点到12点这个时间段就是一个高峰,对方案进行
        设计的时候就要考虑到这个因素。设计测试数据应尽量遵从从小到大的原则。如:
        要测试一个系统能够承受登录时的最大并发数,就要采取先假设10个,然后到20,然后到30,随着数字的增加就要减小增加的幅度,
也许是500、501、503这样一直下去。才能准确的确定真正的能够承受的最大并发数。
反面教材:
没有针对性的性能测试场景
例一:
针对各个条件的查询各自录制了一个脚本,然后又单独执行了个脚本5~10次。
结果:没有针对性,其本身目的是为了测试服务器所能承受的负载,这种测试场景完全不能达到我们当初的目的。
例二:
oracle两层数据库结构应用程序,但取数据的时候是从文件服务器而非数据库服务器读取,虽然也涉及到了数据库的一些操作。
结果:测试结果良好,但实际测试场景并不能完全反映读取数据时文件服务器的压力情况

[ 本帖最后由 duola1119 于 2008-7-8 10:08 编辑 ]

wendiwu 发表于 2008-7-7 18:51:54

性能测试应该是在基本的功能测试之后开展的;
具体除了包括测试需求中定义的性能指标外,还应该包括一些行业性能指标;
就通讯设备来说,性能测试主要关注的是吞吐量、时延、丢包率、背靠背四大性能指标;

jency_moon 发表于 2008-7-8 02:57:06

  总结以往进行的性能测试,虽然测试人员自始至终对测试工作都做到了认真负责,但测试报告出炉后,大家总觉得美中不足,对测试结果都心存疑虑,尤其在那些时间跨度较长、针对不同的测试对象的性能对比测试中,或多或少都存在以下几个方面的问题:

  1. 测试准备不充分,测试目标不明确,测试计划不详细;
  2. 缺乏测试以及针对测试对象的技术储备;
  3. 测试环境的稳定性及前后一致性不足;
  4. 测试数据精确性和代表性不足;
  5. 测试描述不精练;

  下面,我们就剖析以上问题的同时,探讨一下如何解决这些问题。

  性能测试准备

  这是一个经常被测试人员忽略的环节,在接到测压任务后,基于种种其它因素的考虑,测试人员往往急于进度,立即投入到具体的测试工作去了,测试、记录、分析,忙的不亦乐乎,工作进行了一半才发现,或是硬件配置不符合要求,或是网络环境不理想,甚至软件版本不对,一时弄得骑虎难下,这都是没有做好测试准备惹的祸。那么我们应该如何做好性能测试的准备工作呢?

  做软件项目有需求调查、需要分析,我们做测试也一样。在拿到测试任务后,我们首要的任务就是分析测试任务,在开始测试前,我们至少要弄清以下几个问题:

  a) 要测试什么或测试的对象是谁?
  b) 要测试什么问题或我们想要弄清楚或是论证的问题?
  c) 哪些因素会影响测试结果?
  d) 需要怎样的测试环境?
  e) 应该怎样测试?

  只有在认真调查测试需求和仔细分析测试任务后,才有可能弄清以上一系例的问题,只有对测试任务非常清楚,测试目标极其明确的前提下,我们才可能制定出切实可行的测试计划。

  明确测试目标,详尽测试计划

  在对测试需求充分了解的基础上,制定尽可能详细的测试计划,对测试的实施是大有裨益的。测试计划的制定,大多专业的测试书籍多有详述,故本文不再鏊述。

  测试技术准备

  在目前的大环境下,要求测试人员在短时间撑握所有的软、硬件知识是不太现实的,但平时测试人员应抓紧对测试工具和测试理论的研究,在测试计划中,应给研究测试对象和测试工具分配充足的学习时间,只有在充分撑握测试工具,完全了解测试对象的前提下,我们才能够实施测试。建力在错误的认识上的测试,既使你再努力,结果也是背道而驰,也很难证明问题,更不用说用这样的测试报告去说服用户。

  配置测试环境

  只有在充分认识测试测试对象的基础上,我们才知道每一种测试对象,需要什么样的配置,才有可能配置一种相对公平、合理的测试环境(这在性能对比测压中尤其重要)。

  考虑到其它因素,如网络锁、网速、显示分辩率,数据库权限、容量等对测试结果的影响。如条件允许,我们最好能配置几组不同的测试环境。

  测试数据的获取和处理

  在所有的测试中,测试数据的收集工作都是较为困难的,Gis软件更是如此,每一种软件都有它的文件格式,有的软件还有几种格式。在这种情况下,我们只能把第三方格式的数据转换成每一种被测试软件自已的格式。同时,还应对数据作一定的处理,如处理数据冗余,处理显示风格等。如在测试时会更新数据,操作前一定要备份数据。 其外,还应评估数据格式和数据量对测试的影响,如有必要,应准备多组数据。

  最后,一定要检查测试数据的有效性,避免损坏数据对测试结果的影响。

  如何开展性能测试

  测试前期的准备工作纷繁复杂,做好测试准备工作,已是完成了测试工作的一大半,但要产生一份具有说服力的测试报告,还应正确把握测试的强度,保持测试的一致性,提高测试的精度。

  判断软件的好坏,要看软件解决实际应用的能力,只有在一定的测试强度下,才能测试出各种软件资源的消耗率,软件运行的速度,软件的稳定性。通过对比在不同的测试强度下,不同软件每一个功能模块解决实际问题的能力和软件运行的效率,我们才可能判断出不同软件的每一个模块的强弱,甚至于整个软件的优劣。

  性能测试开始后,所有参数的输入都应遵循统一的标准,无论是哪一个环节,哪怕是一点点偏差,都应立即纠正,觉不能心存侥幸。要特别注意外部环境对测试结果的影响,如果在整个测试过程中,外部境不一致,如网速、机器内存使用率不一样,就有可能导制测试结果与实际情况有出入。

  如何总结性能测试

  对测试的终结,实际就是对测试数据的分析和处理。我们测试工作做的再好,如最终到用户手中的是一堆杂乱无章的数据,那也是美中不足。

  首先,我们最好从所有的测试数据中,筛选出具有代表意义的数据,做出统计图,然后和开发人员一起,认真分析数据,找出软件存在的问题,得出测试结论。大多数用户,真正需要的就是科学、客观的测试结论。

  结论

  各种软件性能测试,范围大小不同,强度高底有别,但只要本着认真、客观,科学的工作态度,遵循本文论述的方法,做好测试工作是不难的

月上百合 发表于 2008-7-8 14:22:49

太受用了,只是一再的积累测试理论,一直没有得到实践的机会哪,:(

我爱测试组 发表于 2008-7-8 16:51:17

谈一点。。。

首先根据测试要求,确定性能测试的功能点。例如测试内存溢出,就要选则哪些功能是引起内存溢出最大的,选中后再录制脚本,选定监控指标。

rolei 发表于 2008-7-8 18:04:17

常用的性能测试方法(策略)和测试

一点自己的看法

1.明确用户的性能需求(显示的和隐式的),性能测试点,找出瓶颈
1)用户直接需求的和使用过程中(行业经验)可能遇到的性能瓶颈点必须测试和分析到。当然,客户不需要的,也没有必要去花时间和精力。
2)从中获取相应的性能测试参数,峰值和平均值。
3)客户的性能容忍度和系统所能承受的容忍度同样重要。
4)确认系统运行的最低硬件环境要求(虽然硬件便宜的多了,但客户能不能改造自己的环境还得客户说了算)
5)如果可以的话,将系统的容错性做为性能测试的一部分进行测试

2.测试对象和性能负载分布
1)基本的3个对对像:C/S、B/S中的客户端和服务器,其中还有网络进行连接或中间件。
2)服务端可能分为数据端、业务端和服务容器。
3)跟据实际的测试结果合理的进行相应的性能负载分布。

3.负载、容量和压力测试逐一进行(如果需要)
1)更多的情况下,性能测试中出现的问题是最初的设计时应存在的问题。如果可能,建议对相应的性能提前做测试和优化。
2)够用就好,不是所有的系统都要进行性能测试,一切以客户需求和实际需要为准。

4.测试点
1)CPU和内存使用(系统自身的原因)。是否可以正常的使用和释放,是否存在内存溢出。
2)访问的速度(客户需求或是实际的应用要求说了算)
3)网络。网络传输速度,网络传输丢包率。(找些工具,有免费的)
4)服务器。指令、服务应答响应时间,服务器对信息处理的时效性,服务器对峰值的处理(建议进行服务器优化或是进行服务负载均衡,有大量的文档对此进行描述)
5)中间件。中间件在信息传递中的处理性能及信息处理的正确性。

5.测试和监控数据
1)均值下的持续运行(通过分析对整体的性能进行预测和评估)
2)短时间的峰值运行(分析系统的处理能力)
3)最低配置和最佳配置下的性能对比
4)多用户。同时访问,同时提交。
5)对 4 中的数据进行记录和监控

6.选择测试工具
现有的测试工具太多了,不在一一列举。
适用就好,推荐开源的工具。

[ 本帖最后由 rolei 于 2008-7-9 08:41 编辑 ]

qiao51testing 发表于 2008-7-9 13:28:27

回复 1# 的帖子

性能测试就是针对需求,了解系统软件、硬件配置,设置系统测试要点,例如系统最大用户数,关键性能点瓶颈,再采用自己熟悉的测试工具,进行录制、调试,进行测试,提交测试报告即可;
关键是根据需求确定系统瓶颈点,找出系统最大负荷数;

liu_alina 发表于 2008-7-10 11:13:00

楼上都回答的很好哟。我这个新手也来谈谈自己的理解吧。
万事开头难,性能测试前要先确认下来做什么、怎么做、如何做~~ 比如提取性能需求、明确测试工具、制定测试进度等等。这里简单说几点:
(1)了解被测系统的架构和业务模型,提取性能需求。找出影响软件性能的特性,不是指简单的响应时间或系统容量。而是针对待测试的软件,细化到操作,如第一次登录速度、关闭速度等。这里可以和开发人员、有经验的测试人员多沟通,找出系统瓶颈、已经比较影响系统性能的操作。
   第一次测试的系统,这一步非常重要,不过做好功课后,以后再测试该系统就会轻松多了。
(2)明确衡量性能的指标,特性值为多少时,才算达标。如第一登录速度小于等于2s时,该特性达标。
(3)划分性能特性优先级。不是所有的特性都需要达标,根据软件要求和用户期望,可以划分出重点达标项、次达标项等。
2和3都是累积的过程,可以记录不同版本的达标情况,对比得出最适合的指标值
(4)分析性能测试结果。一方面跟进测试结果,反馈问题;一方面可以优化测试模型,不断调整,找出最适合的测试方法
最后一点,一般性能测试都是在系统基本稳定后,开发修改性能bug可能会引入新的风险,优化很容易引入功能bug。所以是否要修改、在哪个版本修改都要仔细衡量。关闭性能单时,也要提醒黑盒测试人员留意相关的基本功能。
ok,that's all~~ 先想到这么多啦

bht2000 发表于 2008-7-10 11:54:20

这个问题不错,问的少,回答起来要打半天字~~~好久没给51做贡献了,不知道斑竹们是否已经将我忘记.
针对这个问题码点字,唤醒下大家对我的记忆,呵呵~~
首先,针对测试要点,性能测试主要有以下类型:
1.负载测试:确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况;
2.强度测试:确定系统资源特别低的情况下软件系统的运行情况.
3.容量测试:在用户可接受的响应范围内,确定系统可处理的同时在线最大用户数.
4.压力测试:确定系统瓶颈或者最大使用极限的测试.
5.疲劳强度测试:以系统稳定运行情况下能支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作强度性能的测试.
6.大数据量测试:侧重点在数据量上,包括独立的数据量测试和综合的数据量测试.

其次,关于性能测试策略:
1.负载策略:指测试时候采用什么负载模式向系统增加压力.
2.网络测试策略:网络作为应用系统运行的基础架构,在测试系统性能时候必须关注.要点有带宽,延迟,负载,端口变化等.
3.测试监测策略:由于基于网络的大型应用系统本身结构的复杂性,测试同时必须对相关资源加以监测,对象包括客户端资源,WEB服务器资源,应用服务器资源,数据库服务器资源,网络,中间件状态等.
4.业务策略:性能测试有两种不同的业务功能测试方式:单一功能点测试和混合功能的性能测试.

好了 好了,打字半天指头都疼了,吃饭去~~~斑竹看在俺这么辛苦的份上给加点分吧,呵呵~~~

[ 本帖最后由 bht2000 于 2008-7-10 11:55 编辑 ]

156881887 发表于 2008-7-10 14:08:31

针对C/S结构的性能测试主要分为:主要工具有 MI 公司的 LoadRunner
一般性能测试在正常连接下SERVER运行的平均无故障间隔时间
稳定性测试    在正常连接下7*24运行的平均无故障时间是否达到要求
负载测试      在峰值连接下7*24运行的平均无故障时间是否达到要求
压力测试      测试系统最大能接受的连接数
页: [1] 2 3
查看完整版本: 谈谈常用的性能测试方法(策略)和测试要点有哪些?(08-07-04)(获奖名单已公布)