软件测试过程管理
上一篇 / 下一篇 2010-02-10 00:01:28 / 个人分类:软件测试理论
d6I,YOSS?G sAu0 1963年,在美国发生了这样一件事:编程人员把一个FORTRAN程序的循环语句DO 5 I=1,3误写为DO 5 I=1.3。一点之差导致飞往火星的火箭爆炸,造成1000多万美元的损失。这种情况的发生,迫使人们考虑在软件投入使用之前必须进行彻底的测试。今天,在软件比较发达的国家,软件测试已经成为一个独立的产业,软件公司纷纷建立独立的测试队伍研究测试技术并开展测试工作。中国的软件测试起步较晚,但随着我国软件产业的蓬勃发展以及人们对软件质量的重视,软件测试正在成为一个新兴的产业。近两年来,国内新成立专业性测试机构10余家,一批批专业的软件测试人员正涌现出来。每年国内都有大量的测试技术交流会议举办,有大量的测试研究论文在专业刊物上发表。在测试技术发展的同时,测试过程的管理显得犹为重要。一个成功的测试项目,离不开对测试过程科学的组织和监控,过程管理已成为测试成功的重要保证。51Testing软件测试网 [}Cf|FTg
51Testing软件测试网c[/V[.FFl7a1 测试过程概述
8iMY S+|0eA{Qp0 1.1 软件测试过程概述
1Iu)qQT-N0$G'z7p2COg5{0 软件测试过程是一种抽象的模型,用于定义软件测试的流程和方法。众所周知,开发过程的质量决定了软件的质量,同样的,测试过程的质量将直接影响测试结果的准确性和有效性。软件测试过程和软件开发过程一样,都遵循软件工程原理,遵循管理学原理。51Testing软件测试网v"G(l f7NE`
51Testing软件测试网v)w s,d3yK{U.G随着测试过程管理的发展,软件测试专家通过实践总结出了很多很好的测试过程模型。这些模型将测试活动进行了抽象,并与开发活动有机的进行了结合,是测试过程管理的重要参考依据。
(yx m|?hw1S051Testing软件测试网 [v,slF/KB-f7yQ1.2 软件测试过程模型介绍51Testing软件测试网4kw?DGF
oh'c5fMXU@0 V模型51Testing软件测试网6V%dn7a/T\H`
51Testing软件测试网w:q[L+M$HV模型最早是由Paul Rook在20世纪80年代后期提出的,旨在改进软件开发的效率和效果。V模型反映出了测试活动与分析设计活动的关系。在图1-1中,从左到右描述了基本的开发过程和测试行为,非常明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系。
'A md$V q@a%N0 51Testing软件测试网1Jo }[b7z
图1-1 软件测试V模型
V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求。51Testing软件测试网*ik*P4YKn
-cM#a q{b5y-]9gLj0 但V模型存在一定的局限性,它仅仅把测试作为在编码之后的一个阶段,是针对程序进行的寻找错误的活动,而忽视了测试活动对需求分析、系统设计等活动的验证和确认的功能。51Testing软件测试网(d#O TN)W/XE
51Testing软件测试网+V^\9xX%e8FaW模型
v IM+@.qqj*y051Testing软件测试网0?ZIkZJ [W模型由Evolutif公司公司提出,相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。如图1-2所示,W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。
nV(L.j.t(P*J c0Ncp[*Ka-D6|0 W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。
.Upd*Ry0
S9ZJcM(G_s:{&?0 但W模型也存在局限性。在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。51Testing软件测试网si7TX^A
T}+F8oH5I+e)d {0图1-2 软件测试W模型
@X7mn#dI6qw0 H模型
U ~y&zJ1lF5u0Q#Z4X(i L+\9y,ND0 V模型和W模型均存在一些不妥之处。如前所述,它们都把软件的开发视为需求、设计、编码等一系列串行的活动,而事实上,这些活动在大部分时间内是可以交叉进行的,所以,相应的测试之间也不存在严格的次序关系。同时,各层次的测试(单元测试、集成测试、系统测试等)也存在反复触发、迭代的关系。
5D)@yaEon6O051Testing软件测试网R&Z'j'b]为了解决以上问题,有专家提出了H模型。它将测试活动完全独立出来,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来,如图1-3所示。
#@ L\,I\5g0 51Testing软件测试网"Jh!X+M9YA&gP{;|
图1-3 软件测试H模型
这个示意图仅仅演示了在整个生产周期中某个层次上的一次测试“微循环”。图中标注的其他流程可以是任意的开发流程。例如,设计流程或编码流程。也就是说,只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以(或者说需要)进行了。51Testing软件测试网B^*EU_;_
|
J-kK+q,ER0 H模型揭示了一个原理:软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。H模型指出软件测试要尽早准备,尽早执行。不同的测试活动可以是按照某个次序先后进行的,但也可能是反复的,只要某个测试达到准备就绪点,测试执行活动就可以开展。
-}J)_n un0qx2j F!f!y0 其他模型51Testing软件测试网5G(D8d w l1}1W[-x
1C"odI#]CMf Z0 除上述几种常见模型外,业界还流传着其他几种模型,例如X模型、前置测试模型等。X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序。前置测试模型体现了开发与测试的结合,要求对每一个交付内容进行测试。这些模型都针对其他模型的缺点提出了一些修正意见,但本身也可能存在一些不周到的地方。所以在测试过程管理中,正确选取过程模型是一个关键问题。51Testing软件测试网.PX g2~2WlAC5h
51Testing软件测试网shX@R5E1.3 软件测试过程模型选取策略51Testing软件测试网i@]rF9q/n-`P
51Testing软件测试网%Lo GI1i(M5_%G!v前面介绍的测试过程模型中,V模型强调了在整个项目开发中需要经历的不同的测试级别,但忽视了测试的对象不应该仅仅是程序。而W模型在这一点上进行了补充,明确指出应该对需求、设计进行测试。但是V模型和W模型都没有将一个完整的测试过程抽象出来,成为一个独立的流程,这并不适合当前软件开发中广泛应用的迭代模型。H模型则明确指出测试的独立性,也就是说只要测试条件成熟了,就可以开展测试。
gpl0\"R\{,Q051Testing软件测试网l5I[GB S6Fmq在实际测试工作中我们应该尽可能地去应用各模型中对项目有实用价值的方面,不能强行的为使用模型而使用模型。在测试实践中,我们采用的方法是:以W模型作为框架,及早的、全面的开展测试。同时灵活运用H模型独立测试的思想,在达到恰当的就绪点时就应该开展独立的测试工作,同时将测试工作进行迭代,最终保证完成测试目标。51Testing软件测试网-TnChy1v
51Testing软件测试网N-sq1~l9s j y2 测试过程管理理念
Y/R%~.I J/SXq051Testing软件测试网IMBO$r~生命周期模型为我们提供了软件测试的流程和方法,为测试过程管理提供了依据。但实际的测试工作是复杂而烦琐的,可能不会有哪种模型完全适用于某项测试工作。所以,我们应该从不同的模型中抽象出符合实际现状的测试过程管理理念,依据这些理念来策划测试过程,以不变应万变。当然测试管理牵涉的范围非常的广泛,包括过程定义、人力资源管理、风险管理等等,本节仅介绍几条从过程模型中提炼出来的,对实际测试有指导意义的管理理念。
-a5kpF?I7w051Testing软件测试网)s!y-\ t)[;_*aH!I2.1 尽早测试
2VpvKj%bW8V0;{7x5`+r y0 “尽早测试”是从W模型中抽象出来的理念。我们说测试并不是在代码编写完成之后才开展的工作,测试与开发是两个相互依存的并行的过程,测试活动在开发活动的前期已经开展。
Qlq@h ? u+s.B!P051Testing软件测试网 S,UCd@WF,`i“尽早测试”包含两方面的含义:第一,测试人员早期参与软件项目,及时开展测试的准备工作,包括编写测试计划、制定测试方案以及准备测试用例;第二,尽早的开展测试执行工作,一旦代码模块完成就应该及时开展单元测试,一旦代码模块被集成成为相对独立的子系统,便可以开展集成测试,一旦有BUILD提交,便可以开展系统测试工作。
:TdI];i.e t0Oe$P)M4s+V}'WUW-G0 由于及早的开展了测试准备工作,测试人员能够于早期了解测试的难度、预测测试的风险,从而有效提高了测试效率,规避测试风险。由于及早的开展测试执行工作,测试人员尽早的发现软件缺陷,大大降低了BUG修复成本。但是需要注意,“尽早测试”并非盲目的提前测试活动,测试活动开展的前提是达到必须的测试就绪点。
wS_^id0;T kLC8@Xj)ZF0 2.2 全面测试