浅谈软件测试风险管理

上一篇 / 下一篇  2012-10-22 08:59:26 / 个人分类:杂谈

51Testing软件测试网2t.^)k)b6`b

  摘要:软件测试作为保证软件质量的重要手段,越来越引起人们的重视,而软件测试项目中存在着风险,如果能预先重视风险的评估,并对可能会出现的风险制定积极的应对计划,就可以在风险到来的时候,最大限度的避免风险或者降低风险所带来的损失。

&r&R[-P |2Q;b|:B0

C6Q?K"Pp.V0  关键词:测试风险测试管理;软件测试51Testing软件测试网#~ j&wc'vT:[ K

Iv b"Z`#IV1J0  软件本身的复杂性以及测试本身的特性决定了测试活动实施过程中风险的大量存在,而风险会影响测试活动的成败,严重时还可能导致整个项目的失败。因此,对测试风险的管理越来越引起人们的重视。

Eld0[-EL0

'}5Hw:P$?vy Q'^s0  1、风险存在的必然性51Testing软件测试网E i&[+k$`Y!tqLq

51Testing软件测试网My@H3qt

  软件测试项目的风险来自于软件和测试自身的特点。51Testing软件测试网Z0m Ra!izD$C!N

51Testing软件测试网 g`$k#D N+]

  1.1 软件的特点

-b2}T-x Zz!S_+x0

5^"T0\fsw0  1)软件产品是不可见的:软件项目的开发进度和软件质量管控过程是否符合标准很难衡量,使得软件的管理也难于把握;

(X,etg#ok0

O~8{3m!~0  2)软件生产过程形式多样,不存在绝对正确的形式:不同的软件开发项目,应采取不同的或者特定的软件开发过程。但在项目开发之初却不能确定正确的形式,只能根据项目的特点和开发经验选择,并在开发过程中不断的调整,真正适合该软件的开发过程只有在项目开发结束才能确定;51Testing软件测试网?2F5J:N4K}G:y

~ It.X#WD0  3)大型软件项目往往是“一次性”:项目一次性的特点使得过去的经验不能被广泛的借鉴。控制软件管理风险的唯一途径是设立监测系统,开展有效的风险监控和管理。51Testing软件测试网 |s T6I(~ `1c.W

51Testing软件测试网S ip sr h2i

  1.2 测试的特点

~ t/O%v'eP2n0

g[D0dn `Hn4b2x0  1)完全测试是不可能的:在有限的资源和时间条件下,找出所有的软件缺陷和错误,使软件趋于完美是不可能的,主要原因为是输入量太大、输出结果太多、路径组合太多;51Testing软件测试网;jD1v` e1z

4m]1?*B Gm0  2)测试具有病毒一样的免疫性:软件缺陷具有病毒一样可怕地免疫性,对其采用的测试越多,免疫能力就越强,软件测试工程师想要找出更多软件缺陷就更加困难;

d0]^,yBZ&F'^0

UFgm;O0  3)测试是“泛型概念”:软件测试涵盖需求分析、概要设计等在内的整个软件生命周期,以确保每一个阶段都经住考验;另外,测试自身也需要来自第三方的评估和监督,以确保测试的可靠性;51Testing软件测试网!M``g~

51Testing软件测试网$x:?.G:H@OOS

  4)80-20原则:80%的软件缺陷常常生存在20%的软件模块中。我们在系统分析、系统设计、系统实现阶段只能检测和规避80%的软件缺陷。在下一步的系统测试中,可以帮助我们找到剩余缺陷的80%,剩余4%的缺陷只有在系统交付使用后经过大范围长时间使用后才会暴露出来。所以,软件测试只能保证尽可能多的发现软件缺陷,却无法保证能够发现所有的软件缺陷;51Testing软件测试网*fQ^*?0b@dKa

|6h5x.qyx5Si'a0  5)缺陷的必然性:由于软件测试中错误的相关性,并非全部的软件缺陷都能够被成功修复。在缺陷的修复过程中会不可避免的引入新的错误,另外,在修复的过程中,我们往往还会受到时间、成本等各方面因素的限制,导致最终不可能完全的修复所有的软件缺陷。51Testing软件测试网 Z]5q3pz2b Kd N

51Testing软件测试网R)K'?){ A

  2、风险的评估51Testing软件测试网N f E7Vd*{&sf|

51Testing软件测试网`G8LIKN{Z*Q0x6xS

  风险的管理基本的内容有两项:风险评估和风险控制。

R!V/f!m/]5m"?0

VI q}:cc*{"O0  风险评估是在风险识别的基础上,对识别出来的风险进行评估,主要从下列四个方面入手:51Testing软件测试网5\(l8EB2A9i

51Testing软件测试网%b3_H z,{L9J

  1)风险概率分析,即对风险发生的可能性设置一个尺度,如很高、较高、中等、较低、很低等;

;Uc.n!pFzj D051Testing软件测试网yny_$U4E.rv

  2)描述风险并预测风险发生后,对软件产品和测试结果可能产生的影响或造成的损失等;51Testing软件测试网4[Qn1R1jxv&H$c

51Testing软件测试网;`;R.`5S+Y+N8}PTp

  3)确定风险评估的正确性,要对每个风险的表现、范围、时间做出尽量准确的判断;51Testing软件测试网*l2wd1Ge p5T;q

51Testing软件测试网 K,aM a RV o d

  4)根据损失(影响)和风险概率的乘积,来确定风险的优先级别,定制风险应对措施。51Testing软件测试网?M2?$]%P`

51Testing软件测试网4u0wt(zP8R,B8N

  3、风险控制的原则

V:V|B@| m051Testing软件测试网#w_s }(^^Z P#C

  风险控制是建立在风险评估的基础之上的,主要工作原则有:51Testing软件测试网KBpg7@ S8HB7B

51Testing软件测试网$d7dh r"x0m(q*U

  1)针对有些可以避免的风险,例如测试用例执行率未达到100%,可以通过制定测试规范,要求测试人员严格按照测试用例执行测试,并记录用例执行情况,来避免该类风险;

M G R#Dk'jHaI051Testing软件测试网+_N:I G"B w"l2sR

  2)有些不可避免的风险,采取措施降低风险,尤其是等级较高的风险,将其转化为不会引起严重后果的等级较低的风险;51Testing软件测试网:_ \ ~h ]I6?g(ud@

I/c.e,D't"T0  3)凡事预则立,事先做好风险管理计划,当风险成为现实时,可以更好的避免、转移或减低风险;51Testing软件测试网Le/{S.IC

*J:\'PT+m+tw x0  4)对风险的处理制定应急、高效的解决方案。51Testing软件测试网2J|??|

51Testing软件测试网DK0j}?*jIO(@&r\N

  4、软件测试风险分析与管理方法

7O"I Y-x.]|t'N.Y"U2T\0

Fp(}-a ww0  软件生命周期包括问题定义及规划、需求分析、软件设计、程序编码、软件测试和运行维护六个阶段,而软件测试前面的任何一个环节的不严谨都可能增 加软件测试活动的风险。软件测试活动中也存在各种各样的风险,其中常见风险有需求变更风险、测试过程风险、测试组织和人员风险。51Testing软件测试网-oh u.WL'T

51Testing软件测试网.U:k4G"d!Ux#JQ

  4.1 需求变更风险

v-|/r)D/@n a)WA5v q0

l*{/\\)YP2]~0v FUV0  在软件测试项目尤其是历时较长的大项目的实施过程中,总会不可避免的出现需求的变更。如何把握好需求的变更,减少需求变更带来的风险,成为影响整个项目成败的关键。51Testing软件测试网B9j(p?.?:cu/f

51Testing软件测试网zt8|7u8l:] x

  4.1.1 软件测试项目需求变更的管理51Testing软件测试网A_Cg2D-l

Gn!TpP:g&n0  1)设定需求变更的参考标准,将需求基线。当软件测试项目组确认要产生需求变更时,用标准的变更申请表格将委托方的变更申请记录存档。每次的变更都应在需求基线的基础上进行。51Testing软件测试网CG4p~LeF

{ X\_F"E.i8Uo0  2)软件测试项目组收到委托方提交的需求变更申请后,成立项目变更控制委员会(CCB),负责对项目变更所带来的影响进行评估,包括测试项目的人力、物力、资金、管理、时间、质量、工作负荷等内部因素,以及资本、委托方要求的完工时间、项目负债情况等各个方面的影响。

6iY$Y%W:PY051Testing软件测试网8[;g0FPmy

  3)变更确定后,选择可行的实施方案。为了将项目变更的风险降低到最小,力求在尽可能小的变动幅度内对测试项目的目标、预算、团队以及项目的进度等主要的因素进行微调。

3`G;W@z0^0

1{kT;[ayb3l#f%Ma0  4)需求变更后,要重新确定新的需求基线;受影响的软件计划、产品、活动等也要进行相应的变更,以保证和最新需求的一致性。

(Q&oKj+Uih+o6T051Testing软件测试网%mVvG.JU

  4.2 测试过程风险

5~*?"mf!I051Testing软件测试网w5@}u.e.A~

  在测试工作中,主要的风险有:51Testing软件测试网5qV8LLJruC`

U'P0^w,T-sGM0  1)需求的临时或突然变化,导致设计的修改和代码的重写,使得测试时间不够;

s0Xq&z7f4[0

{A,tS!uI0  2)测试用例没有得到100%的执行;51Testing软件测试网gn1ksES1rYN],B3N

(S+E3{v!e P U0  3)质量需求或产品的特性理解不准确,造成测试范围分析的误差,结果某些地方始终测试不到或验证的标准不对;

lB}]XS}0

Rb:Oi} crQa0  4)质量标准不都是很清晰的,如适用性的测试,仁者见仁、智者见智;51Testing软件测试网-QxS4|-Al6bx

51Testing软件测试网Z4t$\5G!H;^hH

  5)测试用例设计不到位,忽视了一些深层次的逻辑、边界条件、用户场景等;51Testing软件测试网_'K i/YOK?

51Testing软件测试网U/Dt]I \H

  6)测试环境与实际生产环境一般情况下都不可能完全一致,造成测试结果的误差;51Testing软件测试网FH;Vbt

;q*@g y;v)XU&O0  7)有些缺陷出现频率不是百分之百,不容易被重现;如果代码质量差,软件缺陷很多,被漏检的缺陷可能性就大;51Testing软件测试网![2lTh@

51Testing软件测试网IU7Zpy0}(xs l

  8)回归测试一般是选择性的执行部分测试用例,必然带来风险。51Testing软件测试网(H Y9|;R@6c*LRH!?y

51Testing软件测试网D*N n:kn$D N L:i

  前面3种风险可以通过前期调研人员或测试人员与客户加强沟通或者制定严格的制度来避免的,而针对有些不可避免的风险,采取一些有效的测试风险控 制方法来尽量降低风险,例如测试环境不正确,可以通过事先列出要检查的所有条目,在测试环境设置好后,由其他人员按已列出条目逐条检查;针对程序中总是存 在的“未发现的缺陷”,可以通过提高测试用例的覆盖率(如达到99.9%)来降低这种风险;针对经常出现的产品发布前夕,在某个不是很重要的新功能上发现 一个严重缺陷的问题,可以通过去掉该新功能来转移因为修改此缺陷可能引起的某个原有功能上的缺陷的风险。回归测试只执行部分用例带来的风险是可以避免的, 但出于时间或成本的综合考虑,一般是存在的。

ZD.L7C/zR`O051Testing软件测试网1G%Y? RR/l Ydq

  提前做好风险管理计划和风险控制策略,可以更好的避免、转移或者降低风险:

C Xv bA7h&Dn5W t051Testing软件测试网dfPU p$_

  1)在执行项目计划,做资源、时间、成本等的估算时,要留有余地;

+EWB9@/c V0

9tf#k#S K,c2i0  2)在项目开始前,制定风险管理计划,重点把握边界上可能会出现变化、难以控制的因素;51Testing软件测试网v1E9Q_@?;V:sZD

7AB eD%Vy$g4|%P$z0  3)重视人员队伍的培养,对每个关键性技术岗位人员培养后备人员,确保项目不受人员流动的严重影响;51Testing软件测试网 v%fUk:i@;y

51Testing软件测试网4q}#P5ttZu!UR

  4)制定工作机制和文档标准,保证文档的及时产生,便于项目知识的分享和移交;51Testing软件测试网9Rr _R-|`.y8k

#nc } N&LN0  5)对工作进行相互审查,不同的测试人员在不同测试模块上相互调换,及时发现问题;51Testing软件测试网C:t#O+~"QE9szf

N!] L },A1D{rp i0  6)日常跟踪所有工作过程,及时发现风险的迹象,以避免风险。51Testing软件测试网1] \&E7S/Q2nh:} Zn8o

D TPnF;X:xo T ~)b0  4.3 测试组织和人员风险51Testing软件测试网1w)p]B%[F

51Testing软件测试网&R m&M*C%{X D

  4.3.1 测试组织风险

3gj~R6V5q+V,K051Testing软件测试网JfE]KG

  测试人员不独立于开发者,测试人员独立与开发者的程度将影响测试结果。51Testing软件测试网 ik8d1?t,Q3I

)nD9wc'k0K$L'A"i0  1)成立专门的测试组织;

[4K4dD k)p.P'DK051Testing软件测试网g:c@2T|pr1U

  2)制定专门的测试管理流程和质量保证手册,规范测试过程,保证测试的质量;51Testing软件测试网&vg9v/X-ct*O~/N

o+A,xx9A+d%\0  3)委托专门的测试组织执行测试活动。51Testing软件测试网8u0uo!Fzs v#b

51Testing软件测试网 ?3n{{3V&k]Q

  4.3.2 人员风险51Testing软件测试网Hjs c3?9i8k

51Testing软件测试网0|3N3c\N:N*u/{

  测试项目尤其是周期较长的项目几乎不可避免的要面临人员的流动,从而增加项目失败的风险系数。及早预防是降低这种人员风险的基本策略。下面从第三方测试的角度具体介绍一下人员风险的控制方法:51Testing软件测试网hP7IN4SI@C4Ji

51Testing软件测试网6f/sI8c+key

  1)指派一名项目副经理或项目经理助理协调项目经理管理项目工作,降低关键岗位人员流动的风险。但是一般只建议在项目经理这种比较重要的岗位采用这种冗余复制的策略来预防人员风险,否则将大大增加项目成本;

LD U PT"ak*Yq,Mn0

BEPY_0  2)建立良好的文档管理机制,包括项目组进度文档,个人进度文档(测试日志)、版本控制文档、整体技术文档(测试策略、测试用例)、个人技术文档(测试执行记录、缺陷报告)等。一旦出现人员的变动,替补组员能够根据完整的文档尽早接手工作;

D g!AV5^)IL5m.s0

`gWk? R:u%at0e0  3)控制项目团队中外包或兼职人员的比例,且项目核心部分的工作应该尽量由全职人员来担任,以减少兼职人员对项目组人员不稳定性的影响;

#o[HQ2M ]051Testing软件测试网EPTjUAh4d

  4)加强测试项目组内的技术交流,定期召开项目例会,使测试组成员能够相互熟悉对方的工作和进度,能够在必要的时候接替对方工作;51Testing软件测试网Tb:YS2kH2C H

51Testing软件测试网W:u\$x&CX)k

  5)为项目测试工作的开展提供尽可能好的基础环境,比如待遇、项目组内良好的人际关系和工作氛围等。良好的工作环境对于稳定项目组人员以及提高生产效率都有不可忽视的作用。

Z!SyM6ov:cEw5q0

#p2v/q"E~*X*h0  4.3.3 外包人员风险

rX8A\#bil0

9G(pjb4}6R0L8KA9e0  1)制定相关的管理流程文件,规范外包人员的活动,防患于未然,规避外包风险;51Testing软件测试网 euc6@jw

$O.Z @r9c D0YC0  2)通过外派监管团队的方式对整个测试活动进行监控;

)ls8_a8`@E*X(G,q051Testing软件测试网:i%t'Z2k"u#xA

  3)通过对测试活动的中间交付物进行检查保证测试的质量,例如:对设计的测试用例进行评审、对编写的测试代码进行抽查、检查测试执行的日志等;51Testing软件测试网E E]0[]r D

4?9HZgm|.n#v0  4)对于外包测试的形式,除了避免承包方项目人员的泄密,还要注意双方数据传输过程中的信息保密。在采用外包测试的时候,不可避免地要进行各种 信息的传送,可能是双方的电话、E-Mail交流,也可能是软件版本的传输,在条件允许的情况下要尽量使用VPN等方式。如果有必要,对传输的数据要进行 加密。

!r1KEeUb0

j:q2@0ZhD5M(X0  5、结束语

jXk?`IX0

7~(~Xya7pAMk dp0  测试过程中的风险总是存在的,该文对测试活动中主要的风险进行识别和控制,并确定针对性措施,避免风险发生,或者把风险降到最小。要想做好风险 管理工作,就必须彻底改变测试项目的管理方式,建立防患于未然的管理意识,并结合具体的实践工作不断地分析遇到的风险,总结各种风险的应对措施,指导实 践,降低产品质量风险。

&Y2Pg:Atm0

TAG:

19840120xinru的个人空间 引用 删除 19840120xinru   /   2012-11-24 16:18:01
5
 

评分:0

我来说两句

Open Toolbar