收稿日期:2004-09-05;修订日期:2004-11-15 基金项目:湖南省自然科学基金资助项目(jjy3098) 作者简介:胡玉鹏(1981-),男,湖南祁东人,硕士研究生,主要研究方向:软件测试; 陈治平(1971-),男,湖南益阳人,副教授,博士,主要研究方向:机器学习、软件测试; 林亚平(1955-),男,湖南邵阳人,教授,博士生导师,博士,主要研究方向:计算机网络、机器学习;李军义(1970-),男,湖北天门人,讲师,博士,主要研究方向:软件工程、计算机网络.
文章编号:1001-9081(2005)04-0808-03
贝叶斯缺陷分析模型及其在软件测试中的应用
胡玉鹏1
,陈治平1,2
,林亚平1
,李军义
1
(1.湖南大学软件学院,湖南长沙410082; 2.福建工程学院计算机与信息科学系,福建福州350014)
(y phu@163 )
摘 要:针对面向对象软件提出了一种以贝叶斯网络理论为基础的软件缺陷分析模型,通过分析系统中存在缺陷对象之间的影响关系构建贝叶斯网络模型,利用已有的经验数据评估贝叶斯网络模型中各节点的缺陷概率分布,并与软件测试过程相结合,直接从测试设计级别为测试人员提供相关决策支持。将该模型应用到实际的项目中,取得了较好的效果。
关键词:面向对象;软件测试;贝叶斯网络;缺陷分析;决策支持中图分类号:TP311.56 文献标识码:A
D efect ana lysis m odel of Bayesi a n and its appli ca ti on i n software testi n g
HU Yu 2peng 1
,CHEN Zhi 2p ing 1,2
,L I N Ya 2p ing 1
,L I Jun 2yi
1
(1.Soft w are College,Hunan U niversity,Changsha Hunan 410082,China;2.D epart m ent of Co m puter and Infor m ation Science,Fujian U niversity of Technology,Fuzhou Fujian 350014,China )
Abstract:How t o obtain a reas onable p r ocess of testing is a very i m portant subject in s oft w are testing .I n this paper,
ai m ing at the Object 2O riented s oft w are,a defect analysis model based on Bayesian net w orks theory was p r oposed .By means of
analyzing the relati onshi p bet w een defect 2objects,the Bayesian net w orks model was constructed .The defect p r obability
distributi ons of nodes in the model was assessed by using the experience which already have .Further more,the Bayesian
net w orks model is app lied t o p ractice,and gets good results .
Key words:object 2oriented;s oft w are testing;Bayesian net w orks;defect analysis;decisi on support
0 引言
软件测试是一个基于风险管理的过程,需要测试人员仔细地设计和选择测试用例,以获得足够的测试覆盖率,却又不
超出有限的时间和资源范围。尤其在面向对象(Object 2O riented,OO )软件中,OO 编程的封装和继承等特性在方便编程的同时也增加了测试难度。目前OO 软件测试主要是从测试充分性角度出发,研究类(本文中的类与对象均指对象实例的集合)及子类的测试技术(包括类集成技术)[1,3,6~9],但没有考虑测试过程的不定因素及缺陷间的内在关联,不能为测试人员提供决策支持。因此急需一种方便的框架结构,通过分析因果关系,使得测试人员所关心的不确定性推理变得更为清晰、可理解性强,并直接在测试过程中为测试人员提供帮助。
1 基本概念和定义
在类图中,类之间的关系可能是嵌套的,因为类能封装另一个类的一个(或多个)实例作为它的属性;另一方面,类之间的关系可能是分散的,因为类能作为子类继承其父类的属性和方法,即子类的某些属性和方法是在父类中定义的。通常,称包含其他对象的对象为复杂对象,不包含任何其他对象的对象为简单对象。
设SO 为简单对象集,CO 为复杂对象集。在构建贝叶斯模型之前,首先定义存在缺陷对象之间的影响关系:
定义1 已知A,B ∈SO,B 中某些属性或方法存在缺陷
或错误可能会导致A 中某些属性或方法出现缺陷或错误,则称B 影响A;
定义2 已知A ∈SO,B ∈CO,ϖb,b 是B 的对象或非对象的属性或方法,b 存在缺陷或错误会导致A 中某些属性值或方法出现缺陷或错误,则称b 影响A;
定义3 已知A ∈CO,B ∈SO,ϖa,a 是A 的对象或非对象的属性或方法,B 某些属性值或方法存在缺陷或错误会导致a 出现缺陷或错误,则称B 影响a;
定义4 已知A,B ∈CO,B 中某些属性或方法存在缺陷或错误可能会导致A 中某些属性或方法出现缺陷或错误,则称B 影响A;
给定两对象A 和B ,如果它们之间满足上列条件之一,则称B 影响A,表示为B →A 。
2 贝叶斯缺陷分析模型
2.1 构建贝叶斯网络模型
通过UML 类图[5]可以用如下算法构建贝叶斯网络模型:
(1)类图中的类节点为贝叶斯网络模型的节点;
(2)根据第1节中的定义,分析类图中的类节点,如果有
B →A,则在贝叶斯网络模型中有从B 到A 的有向边(即B 为
父节点,A 为子节点);
(3)重复步骤(2),直至类图中所有类节点之间的边全部转换至贝叶斯网络模型中。
第25卷第4期
2005年4月
计算机应用
Computer App licati ons
Vol .25No .4Ap r .2005
由此,可得到贝叶斯网络模型。在构建贝叶斯网络模型
时可能会遇到有向环,这时候需要打破环,环的打破策略依赖于对具体应用程序的分析。例如,对于类与类之间所存在的一些特殊关系如双向关联、反身关联等进行了一些特殊处理,如通过将反身关联关系当作是类本身内部的一种引用,而不作为类之间的一种依赖关系来对待,从而打破有向环。2.2 估计概率分布
通过以上定义和算法构建了贝叶斯网络模型,为了进一步评估各节点的缺陷概率分布情况,对以下概率分布进行估计。2.2.1 估计先验概率分布
在贝叶斯网络模型中,要考虑关于各节点的测试能得到正确结果的概率p,把p 作为一个连续型随机变量。由于测试的结果只有两种:正确或不正确,所以这是一个二项式样本。由于Beta 分布在二项式样本下是一个标准的共轭先验概率分布(htt p://math world .wolfra m /Beta D istributi on .ht m l,在先验概率分布和后验概率分布为同一种分布的情况下,这种分布称为共轭分布)。因此,随机变量p 的先验概率分布为一个Beta 分布,其概率密度计算公式为:
f (p )=p α-1(1-p )β-1
Γ(α+β)Γ(α)+Γ(β) 0≤p ≤1
(1)假设针对某个节点已经执行了N 个测试用例,其中测试结果正确的有n 个,p 表示测试结果正确的概率,P (p )表示先验概率分布,则容易估计后验概率分布P (p |n ),由贝叶斯概率公式:
P (p |n )=
P (p )P (n |p )
P (n )
(2)
且已知二项式概率公式:
P (n |p
)
=
p n (1-p )N -n N !
n!(N -n )!
(3)
软件测试app因为P (n )为常数,由(1)可知先验概率P (p )∝p α-1
(1-p )
β-1
,代入(2)得到P (p |n )∝P (p )p n (1-p )N -n
,可知P (p |n )∝p
(α+n )-1
(1-p )
(β+N -n )-1
,即后验概率分布为B eta (
α+n,β+N -n )。
从以上的推导可以得知,当观测一系列的测试输出结果
以后,后验概率分布仍然是一个Beta 分布。实际上,如果每测试通过一次,就使得α变为α+1,则如果每失败一次就使得β变为β+1。随着f (u )的期望值α/(α+β)的改变,将使得分布函数的中心位置向0或者1偏移,当α,β的值不断增大时这种相对偏移量会越来越小,分布函数的中心最终会趋向于一个稳定的位置。可以用最终的期望值来作为此贝叶斯模型的输入证据之一。
2.2.2 估计节点间的影响
一般情况下,很难获得更多的信息来推导准确的条件概率,由于贝叶斯网络模型的主要目的是为测试人员提供定性的信息而不是定量的信息,因此通过以往的数据(如以往相关领域软件的测试结果)和专家的经验判断相结合,对条件概率进行估计。
由于节点的缺陷概率分布都是连续型函数,因此构造条件概率表是不可行的。所以,可以采用条件高斯分布来估计节
点的条件概率[2]
,节点的条件概率期望值将由其父节点期望值加权后的和所决定。设节点X 的父节点为X 1…X n ,则其条件概率分布为高斯分布:
P (X |X 1=x 1,…,X n =x n )=N (x +w 1x 1+…+w n x n ,v )
(4)
则节点X 的条件概率期望值为:x +w 1x 1+…+w n x n 。其中,x 1…x n 分别为父节点X 1…X n 的期望值,x 为节点X 原来的期望值。w 1…w n 为权值,权值表示相应的父节点对子节点缺陷概率的影响程度,其值为实数。v 为方差,方差不受父节点的影响。
已知期望值可由测试结果得出,所以只要对权值进行估计。用F 1…F n 表示影响因素,故结合测试人员的经验、以往的数据以及测试过程所获得的经验数据,通过对各因素进行综合评估然后取平均值来估计权值。权值w 的计算公式为:
w =
∑
n i =1
(F i -1/n
∑
n i =1
F i )
2
∑
n i =1
F i
(5)
本文取n =4,从以下四个因素进行考虑:1)父节点和子节点之间的关系。不同的关系影响程度不同,比如继承关系一般比关联关系对子节点的影响程度要大;2)代码(功能)的复杂度。父节点代码(功能)的复杂度越高,则子节点越有可能产生错误;3)功能联系密切程度。父节点与子节点在功能上联系越密切,对子节点的影响程度越大;4)其他不定因素。如功能变更、时间要求变化等。经常发生功能性变更或者时间要求变化的父节点对子节点的影响程度比较大。将每个因素的取值分为五个等级:很高、高、一般、低和很低。每个因素对应一个具体的取值区间(如代码复杂度的取值区间可为[1,5]),在通常情况下,获得的有关信息越详细,所估计的权值可靠性越高。
3 应用贝叶斯缺陷分析模型
3.1 测试设计3.1.1 安排测试用例
需要尽可能早的在一个测试系列中发现软件当中的缺陷,所以,要对选择的测试系列进行排序,以使得在每一步选择的测试用例都能最大程度地发现软件中的缺陷。对于一套测试系列,可以对其进行简化和排序,如测试用例有重叠的情况出现。根据测试人员的判断可以知道,那些即不能提高实际效用,又不能降低软件缺陷存在概率的测试,对于目前的测试序列来讲,此时并没有什么执行的价值,可以放在以后执行。这样,很容易对一套测试系列进行一定程度地排序。3.1.2 选择和设计测试用例
新模型也提供了测试过程中软件可靠性的概率估计。所以可根据一定的准则,如时间、资源的限制,项目的风险系数,使用模型从头开始设计一个新的测试系列。一个简单的方法就是:通过对所有可能的测试情况进行考虑,并且估计在每次测试都依次通过的情况下模型可能会产生的结果,从而选择那些最能减少软件中存在缺陷的概率的测试用例。这样,会得到一个(或多个)获益最大的测试,那么这个测试就成为第一个要执行的测试。在每一个测试阶段,通过这个反复的选择过程,从而选择最好的测试,直到达到要求准则。通过这个简单的算法,可以获得较理想的测试设计。
也可以为已有的一个测试系列设计附加的测试用例,比如,若此测试系列没有发现任何缺陷,那么要判断是否还有隐藏的缺陷未被发现。即使目前的测试系列都通过,通过该模型,仍可以从与其相关的节点来发现此节点中是否还有缺陷,然后可以设计附加的测试用例来处理这个缺陷。这样就可以发现那些被遗漏的缺陷。3.2 测试过程
新模型反映OO 软件缺陷存在的本质,以及在修改软件
908第4期胡玉鹏等:贝叶斯缺陷分析模型及其在软件测试中的应用
缺陷后可能造成新的缺陷或错误出现的可能性。因此,当测试结果不正确时,测试人员可以判断:以前与其关联性较小的某个类中的一些成功测试不太可能在这里发现新的错误,然而,在与其关联性较大的类的一些测试中却有可能再发现新的错误(这样也可以为回归测试提供依据[10]);而对于成功的测试,将对整个模型进行概率上的更新,这样减少了许多相关节点的测试失败的概率,尤其是与测试成功节点关联性强的节点,然后再接着进行下一个测试。这样,对软件进行不断地测试、修改和重新测试,并且更新模型的概率情况,直到达到一定的标准,如超出了某些限制条件(如时间和测试资源范围),或获得了足够高的可信概率,直到觉得没有必要再进行更多的测试为止。其基本的测试流程如图1所示
。
图1 测试流程图
如果存在不同类型的潜在缺陷,这个最终的标准应根据具体的情况而有所调整,宁可允许那些虽然存在的概率较高,但不会引起重大后果的缺陷存在,也应消除那些虽然存在的
概率低,却能引起重大后果的缺陷。比如,某些基础类(如
MFC 类)尽管估计其中存在缺陷的可能性很小,但是由于它
是整个软件的基础,还是必须对其进行更多额外的测试。
4 实验
4.1 实验简介
将该模型应用到一个机构编制管理系统中,该系统主要功能是对机构的人员及编制信息进行管理,程序由Java 开发,共有三大模块20多个类组成,开发周期历时半年左右。以UML 类图为基础,结合定义的缺陷关系直接构建的贝叶斯网络模型有20多个节点,测试组针对各个节点的特性设计出的相应测试用例有240多个。结合贝叶斯网络工具Hugin
(htt p://www .hugin .dk )的内部推导引擎,使用Java 开发外部建模程序,从而构建贝叶斯网络图,然后通过在各测试阶段输入缺陷概率分布的期望值和相应的权值,编译并运行后即可更新各节点的缺陷概率情况。表1列出了其中的6个类簇在主要测试阶段的缺陷概率统计情况。
表1 主要测试阶段的缺陷概率统计
类簇
5个测试后50个测试后100个测试后
200个测试后
C10.5000.0800.0300.030C20.5760.0780.0450.025C30.4800.0600.0420.040C40.4250.0900.0400.008C50.5480.0800.0440.027C6
0.5700.0670.0450.026平均
0.517
0.074
0.041
0.026
4.2 实验结果分析和比较
根据测试各阶段的缺陷概率统计数据,得出如图2所示
缺陷概率分布情况和实际存在的缺陷情况。如图2(a )所示,根据贝叶斯网络模型,整个测试用例集将软件缺陷存在的概率(平均值)由最初的0.517降低到了0.026,缺陷存在的概率下降了95%左右。其中,前面效果最好的50多个测试,使
得缺陷存在的概率下降了85%左右,后面的另外100多个测试只使得缺陷存在的概率下降了15%左右,最后的几十个测试几乎没有降低缺陷存在的概率。
在图2(b )中显示了软件中实际存在的缺陷情况。整个测试过程一共发现了近40个缺陷,前面效果最好的50多个测试发现了30多个缺陷,后面的测试发现的缺陷数则很少。可见,实际存在的缺陷情况与模型所估计的缺陷概率情况变化趋势基本上是一致的
。
图2 缺陷概率分布情况和实际存在缺陷情况
5 结语
在该模型基础上的测试过程具有较好的特性:不仅可以从专家经验等相关方面获得有价值的基于概率的推论性知识,而且,由于测试设计过程中的仔细分析,可以在有限资源内通过较少测试系列来获得很好的覆盖率。在以后的研究中,还将对模型的灵敏度和准确度作进一步的分析和优化。参考文献:
[1] B I N DER R.Testing Object 2O riented Soft w are:A Survey[J ].Soft w
Test Verif Reliab,1996,6(3/4):125-252.
[2] MURPHY KP .I nference and Learning in Hybrid Bayesian Net w orks
[R ].Technical Report:CS D 2982990,University of Calif ornia at Berkeley,1998.
[3] K UNG DC,HSI A P,G AO J.Testing Object 2O riented Soft w are [M ].
W iley 2I EEE Computer Society Press,1998.
[4] RE DM I L L F .W hy Syste m s Go Up in S moke[J ].The Computer Bul 2
letin,1999,41(5):26-28.
[5] BOOCH G ,RUMBAUGH J ,JACOBS ON J.The Unified Modeling
Language U ser Guide[M ].Addis on 2W esley,1998.
[6] S OUTER A,P OLLOCK LL.Omen:A strategy f or testing object 2ori 2
ented s oft w are[A ].Pr oceedings of AC M SI GS OFT 2000I nternati onal Sy mposium on Soft w are Testing and Analysis[C ].2000.49-59.[7] B I N DER RV.Testingobject 2oriented syste m s [M ].Addis on 2W esley
Long man,2000.
[8] KI M S W ,CLARK J,MCDERM I D J.Class mutati o:mutati on testing
for object 2oriented p r ogra m s [A ].Pr oceedings of F MES 2000[C ].2000.
[9] MCGREG OR JD,SYKES DA.A Practical Guide t o Testing Object 2
O riented Soft w are[M ].Addis on 2W esley,2001.
[10] 方菲,等.面向对象软件回归测试技术研究[J ].软件学报,
2001,12(3):372-376.
018 计算机应用2005年
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论