了解性能测试-Part 1
上一篇 / 下一篇 2010-09-22 09:27:06 / 天气: 阴雨 / 心情: 郁闷 / 个人分类:Software Testing
了解性能测试-Part 151Testing软件测试网\.KGyTi;R.`
51Testing软件测试网ve{.xH2B"e
作者: Dale Perry
+G%t$`Qr0 大多数软件性能测试项目失败,这里我所说的失败,并不是意味着测试不正常的终止,而是不能给需求方提供任何有用的信息。51Testing软件测试网3E2c H+S`
51Testing软件测试网U \!HZ+T
引起失败的原因有很多。在这个系列的文章中,我将讲述性能测试中出现的基本问题和如何去避免他,你将理解很多问题以及你能不能解决它们。本系列并不能涉及到所有问题,也不适合于高级性能测试工程师。希望大多数读者可以学到如何从失败中找到解决的方法。51Testing软件测试网 H6{I1K6]
本系列文章中将涵括以下几个方面的内容:
DJm/v7Cl&Sd3ZQ%uTd\0Part 151Testing软件测试网doTCQZ-g
- 测试过程中测试员的职责
- 确定性能和商业目标
- 如何把性能测试加入到开发过程
Part 251Testing软件测试网_)R{*f{4]:U(b+O
- 系统架构和基础结构
- 选择要运行的测试类型
- 了解负载(业务概况)
- 测量的量化和界定
Part 451Testing软件测试网@.Ve Y?
- 了解工具
- 执行测试和报告结果
QY0XOJ0以上这些内容可以按照很多不同的次序讲述。但我将按照我认为最有效的次序进行阐述。这种方法已经被应用到各种类型的平台:大型机,C/S,嵌入式,web等等。第一部分讲述测试者的职责,了解性能目标以及如何使性能测试适合开发过程。
VW;gN
^O
s0测试者的职责51Testing软件测试网
`JR;C*R
Y;O'W
@eX}niP0 在性能测试中,性能测试员很像一个顾问,你指导和协助技术人员识别和改正问题。性能测试员进行测试,并不改正,调试或者关闭发现的问题。成功的性能测试是团队共同努力的结果。任何关键的成员都可能不得不条则会调整,修复,调试系统或应用程序,做出对实现性能目标有益的事情。51Testing软件测试网x+\I
aH\p'Cm
完整的性能测试团队应该包含如下关键成员:
$?'fj(S'Ei0- 测试/质保团队
- 用户/顾客
- 经理
- 市场销售人员
- 开发全体人员
- 网络管理员
- 系统管理员
- 安全管理员
没有尽早的使关键人员加入到测试过程中,几乎一定会有问题在后面被提出。促使关键人员尽早的加入到性能测试计划可以确保减少后面出现问题,尤其是在测试结果不是太好的时候。51Testing软件测试网&f^/yL"o+x$v
6C|g&~y ltE0
验证性能和商业目标.
0Og#\Ql^D0接下来,我们需要明确验证的目标和性能测试的目的。人们在性能测试中最好犯的一个错误是思考的全是他们需要的性能测试工具(我们将在第四部分讨论工具)。当然工具是必不可少的,工具提供了解决问题的答案。但是在此之前,你需要知道问题是什么。不知道哪些性能问题需要你解决,就很难鉴定你的性能测试是成功还是失败。51Testing软件测试网K$c{A+t`5N6E
我经常被问到的第一个问题是“我如何分析工具产生的测试结果?”。我的回答是“你希望你的工具做些什么?”。大多数人不能回答这个问题。这是第一个指标指示你的性能测试可能是没有什么价值的。51Testing软件测试网)\/^
h%U sH
大多数情况,测试员从经理那里获取整体的指导。然而,经理倾向于关注投资效益和用户满意度,但是那些都不是性能指标。不了解性能测试项目目标和目的,即使工具带给你的大量信息,你也无法解释,乃至达到经理的预期。51Testing软件测试网_LfBQ&ppi
收集和确定性能测试目标可能是整个性能测试过程中最枯燥的部分。然而,时间会告诉你有些事情必须在前期就要做。如果你不能获取你需要的性能指标,进行性能测试是没有任何意义的。
U
o+mA!]i:e8ou6z0 了解性能指标的第一步就是把它们从商业目标中分离出来。如下图1
C6n$e7a Bn0
5e9L+[U!L;X+H0图1:从商业目的中分离出性能指标
oM4rg&AL9s5`*p-vg0
Xn(Z3UG~7_0 为了达到软件性能指标,有一些系统或者应用程序的指标是需要我们在测试过程中去度量的。糟糕的性能表现通常是在压力或者即将到达最大容量的时候发生的。如果你不能设计这些方面的测试,那么就不能算是完成任务。下面是一些问题,这些问题对于确定性能目标与测试目标的异同点是很有好处的:51Testing软件测试网"ly1|h_
- 我将执行什么测试?
- 我将收集哪些数据?
- 为了度量“性能”,你必须收集系统和应用程序运行时的相关信息
- 我如何证明目标已经实现?
- 我测量什么才能证明制定目标或目的已经达到?
$i;{oAkQ(B7v/I0“性能”定义是在给定的环境下的行为表现。比如你评审一个用户的效率。没有系统指标给你去测量以证明哪个用户效率更高。
%Yc"I WKW n0如何使性能测试融入到开发过程
~v3zq t
t%GV7w1t)K0
]+Yn7rc0很多人把性能测试看作产品在交给客户之前才要做的最后一件事。这既是错误的也是危险的。图2显示了性能测试的通用做法。它依赖于一个完整的系统或者应用程序。
a6e*{ L/_\t-e5D0图2:性能测试的一般做法
51Testing软件测试网6A })INV2h(Oi2o%Y[`
使用这个方法的主要问题是:如果有问题产生而要做需求变更时可能要重新测试变更对功能的影响。这时重点需要注意的是同一时间超过一个功能变更就将很难协调。多个技术团队将问题变得复杂且难于协调。也有可能产生模糊不清的解决方案。同时调整数据库和程序代码可能会出现彼此覆盖的情况。因此,很多团队是使用一次一个的方法(OFAT)
!^^;C[]#W'x,K051Testing软件测试网2uSq)U
D I+j
遗憾的是,OFAT在如下的情况下并不能很好的工作:
- OFAT假设元素是彼此孤立的
- 有很多复杂的,难于理解和隐藏的依赖关系
- OFAT花费时间太长
- 其它方法很难很好的应用
举例来说,一旦问题被“fixed”并重新进行测试,我们可能发现新的关于网络或程序的问题而不得不去“fixed”。而这可能又产生更多的问题。这可能最终成为死循环,周而复始。
*AW n6FDI$S
t&Z