回归测试的策略及方法

上一篇 / 下一篇  2012-06-20 09:24:10 / 个人分类:杂谈

业界的回归测试策略基本上有两种:51Testing软件测试网;Gz Ce2Y;]-a

  ● 全部回归,也就是把之前的所有的测试用例,无论是手动的,还是自动的,全部跑一遍51Testing软件测试网 zS6AbI(j]

3g*xCH*@'MjM'uR0  ● 部分回归,定性分析代码改动有哪些影响,代码改动的文件/模块和其他的文件/模块的依赖性,然后选择被影响到的文件/模块相应的测试用例来跑一遍

0L [ o$D/gFY%ZyzC2y051Testing软件测试网"]5M)VR ?

  第一种的好处就是,通过大量的跑测试用例,可以尽量多的发现哪些功能是否有被影响到,缺点就是如果你的测试用例库很大,那这个是相当消耗时间和人力的;

0b p*x YZX)}"ro0

?"YsF|+Qv2`0  第二种的好处就是,不需要消耗大量的时间和人力,缺点就是因为是定性分析,所以有可能漏掉一些没有被分析出的影响;51Testing软件测试网@R8I2F ?&F

51Testing软件测试网|}+P?9aLM

  那么有没有其他第三种办法,用定量分析的方法来进行回归测试,答案是肯定的,可以依赖代码覆盖这个方式。

Q;h5m A7[051Testing软件测试网lz"i;a!S]$V q

  总的来说是这样的:51Testing软件测试网F'Vl"q+G8d*^!Y

51Testing软件测试网~ RRq,b*k'@

  1、每次跑完一个测试用例就把对应的代码覆盖情况录入关系型数据库,这样数据库里面就有了测试用例和代码覆盖率的一一对应的表格。(代码覆盖率可以是文件级别或者是函数,类级别的)详情可以见下图:

QYPV^051Testing软件测试网#J7U~Si.`c iw

  2、对于修改的代码,分析是属于哪个函数,类或者是文件的,然后去数据库查找所对应的测试用例51Testing软件测试网 [DpQ+b],n

9G@&Cf3s8n-l5@ U:ku9b/Wp0  3、这些对应的测试用例就是我们需要的,可能会因为代码改变而受到影响的测试用例。

hr"dzh4F#x0
51Testing软件测试网 a7w'VnI E0|

测试用例51Testing软件测试网RK't1cz

51Testing软件测试网8V|Ls%DID N$iU4_

代码覆盖(文件级别)

%UGWn C;k0

P(Qb4zJ(X\0TC1

)KiK3W*P#KVm].I1Q0
51Testing软件测试网j Jn8h,j(Y

File1, File251Testing软件测试网 }z7c4xFm1M0X{z^

WO6v8j%n[2sC-|:[0TC2

Lp V5J@U2~5[0
51Testing软件测试网9ca'r2N$r.Vg[:Qu%S

File1, File2,File3

fu_^.TPc%k0

'^,|fRml(B$x0TC351Testing软件测试网*W5ge/s].m\;q;_

51Testing软件测试网^S.roU @ |$X$q/x"L

File3

p w$V um-E1P:~}0
......
V-W[$G@0

)YP4o&`mcp0......

-Up&YeT0
51Testing软件测试网7?%o-g-cry\&B(x

TCn

k dvEX/iJ0

"Z%t ZR;\$Hg0File1,

uDH1G5w)Y s+l0

  比如,数据库里面已经有上面这样一张表格,那么假如开发修改了文件File3里面的代码,根据上面的表格我们知道TC2,TC3是和File3有关联的测试用例,所以我们可以挑出TC2,TC3出来执行,这样就是通过定性的方法来执行回归测试。

TJ gp xn4DS0

  当然你的代码覆盖也可以是函数级别的:

xyb y2q+Lj8}H0

A$Y0M)@ az0测试用例51Testing软件测试网X8F7?]-[.G$Na

51Testing软件测试网 \~S(v5T zP6W

代码覆盖(函数级别)

H#|kv5v1sxO_ ?#V0SE0

'I h(@(ar[0TC151Testing软件测试网ZO9R G#d)C

51Testing软件测试网]4ro!M$?,L;ZW

Func1,func2,func3

9|$c aIBM6\0

:wM L`RU^iY,V4i3j0TC2

]&LBR+D`0
51Testing软件测试网3Zx&XFo2U"aO,lY

Func1,func251Testing软件测试网yw p3ds0|j

kz{ S}V?3Q(D0TC3

m-m+^c n J.k0

Y\LM!@?x0Func1,func351Testing软件测试网S`-r[S Q#x.T

......51Testing软件测试网$Zt?l m N*N p

......51Testing软件测试网(Q:T3e.M1w ~

7?:Jv]0V o:{$TG2Si0TCn51Testing软件测试网&u@,o`CE eJ

51Testing软件测试网 a@8` Ok0QJ

51Testing软件测试网[j,e+b R` ^X]4]

51Testing软件测试网d$Z:n%pl8N)Hm4r

Func151Testing软件测试网u1[ir4FHz

   那么当func3函数有修改,我们就知道TC1,TC2,TC3都是相关的测试用例,就可以挑出TC1,TC2,TC3出来跑。(对于新增的函数,我们 只能通过文件级别的代码覆盖表格来找,因为之前没有这个函数对应的测试用例,但是有这个函数所在的文件所对应的测试用例)。

zQ3ivK Q0

   此外,也可以通过数据挖掘,寻找出文件与文件直接,或者是控件(dll)与控件之间的依赖性,比如文件A引用了文件B的函数(可以通过“函数名”在代码 库里面进行全文搜索,就知道那些函数被其他函数引用了),那么他们就有了依赖性(A对B有依赖,如果C对A有依赖,那么C对B也有了依赖,这里面设计到递 归),控件1含有文件A,控件2含有文件B,那么控件1对2就有了依赖性;通过数据挖掘把依赖性寻找出来以后,如果文件B被修改,那么所有对它有依赖的文 件/控件有可能受到影响,我们就可以把这些对应的测试用例找出来跑一遍;

e\(g:u]CTs0

  另外一种数据挖掘的方法是,通过bug数据库来挖掘, 比如在执行TC1(目的是为了测试Component A)的时候发现的Bug,她的root cause是Compoent B,那么Component A和Compoent B就有了耦合关系,以此类推,就知道Compoent。51Testing软件测试网x4VP"E/v/O!c


TAG:

 

评分:0

我来说两句

Open Toolbar