1、计算机测量与控制 ()C o m p u t e r M e a s u r e m e n t&C o n t r o l 测试与故障诊断 收稿日期:;修回日期:.基金项目:江西省自然科学基金资助项目(B A B ).作者简介:陈琪(),女,江西南昌人,硕士,主要从事软件故障定位方向的研究.引用格式:陈琪,周世健,樊鑫,等基于频谱增强的软件多故障定位J计算机测量与控制,():文章编号:()D O I:/j c n k i /t p 中图分类号:T P 文献标识码:A基于频谱增强的软件多故障定位陈琪,周世健,樊鑫,邬凯胜,肖鹏,(南昌航空大学 软件学院,南昌 ;南昌航空大学 软件测评中心,南昌
2、 )摘要:检测故障是繁琐而耗时的,为了提高传统软件故障定位方法的效率以及精确度,提出了一种基于频谱的故障定位新方法;充分利用了失败的测试用例与故障之间的关系,通过使用频谱增强的方式,采取逻辑与运算的关键技术和方法,对失败的测试用例进行精简,优化失败测试用例中的频谱信息,从而得到频谱增强后的测试用例,克服了冗余测试用例对定位效果的消极影响,再根据新的频谱信息计算可疑度值,最后生成优化后的可疑度排序列表;首次将频谱增强的方法同时运用到单故障与多故障程序场景中,在包含植入故障的西门子程序和真实故障的D e f e c t s j程序中,经实验检测证明本研究方法能够显著减少代码检查的范围,尤其是在高性
3、能范围内(E X AM),并且仅通过检查T o p 至少能有效地定位超过原有约 的故障,结果表明基于频谱增强的故障定位方法有效提升了检测率,可以更好地帮助程序员精准定位故障位置.关键词:频谱增强;多故障定位;测试用例;软件调试;程序谱S o f t w a r eM u l t i p l eF a u l tL o c a l i z a t i o nb a s e do nS p e c t r u mE n h a n c e m e n tCHE NQ i,Z HOUS h i j i a n,F ANX i n,WU K a i s h e n g,X I AOP e n g,(S
4、 c h o o l o fS o f t w a r e,N a n c h a n gH a n g k o n gU n i v e r s i t y,N a n c h a n g ,C h i n a;S o f t w a r eT e s t i n ga n dE v a l u a t i o nC e n t e r,N a n c h a n gH a n g k o n gU n i v e r s i t y,N a n c h a n g ,C h i n a)A b s t r a c t:D e t e c t i n gf a u l t s i s t e
5、 d i o u sa n dt i m e c o n s u m i n g,i no r d e r t o i m p r o v e t h ee f f i c i e n c ya n da c c u r a c yo f t r a d i t i o n a l s o f t w a r ef a u l t l o c a t i o nm e t h o d s,an e wm e t h o do f f a u l t l o c a t i o nb a s e do ns p e c t r u mi sp r o p o s e d;t h er e l a
6、 t i o n s h i pb e t w e e nf a i l e dt e s tc a s e sa n df a u l t s i s f u l l yu t i l i z e d,a n dt h ek e y t e c h n i q u e s a n dm e t h o d so f l o g i c c o n j u n c t i o no p e r a t i o n s a r ea d o p t e d t os t r e a m l i n e t h e f a i l e d t e s t c a s e sa n do p t i
7、 m i z e t h es p e c t r u mi n f o r m a t i o n i nt h e f a i l e dt e s t c a s e sb yu s i n gs p e c t r u me n h a n c e m e n t T h em e t h o do f s p e c t r u me n h a n c e m e n t i sa p p l i e dt ob o t hs i n g l e f a u l t a n dm u l t i f a u l tp r o g r a ms c e n a r i o sf o
8、rt h ef i r s t t i m e I nS i e m e n sp r o g r a m sw i t he m b e d d e df a u l t sa n dD e f e c t s j p r o g r a m sw i t hr e a l f a u l t s,e x p e r i m e n t a l t e s t sh a v ed e m o n s t r a t e dt h a t t h i sr e s e a r c hm e t h o dc a ns i g n i f i c a n t l yr e d u c et h
9、es c o p eo f c o d e c h e c k i n g,e s p e c i a l l y i n t h eh i g hp e r f o r m a n c e r a n g e(E X AM),a n dc a ne f f e c t i v e l y l o c a t em o r e t h a na b o u t o f t h eo r i g i n a l f a u l t sb yc h e c k i n gT o p o n l y,s h o w i n gt h a t t h es p e c t r u me n h a n
10、 c e m e n t b a s e df a u l t l o c a t i o nm e t h o de f f e c t i v e l y i m p r o v e s t h ec h e c k i n gr a t ea n dc a nb e t t e rh e l pp r o g r a mm e r sp i n p o i n t t h e l o c a t i o no f f a u l t s K e y w o r d s:s p e c t r u me n h a n c e m e n t;m u l t i p l e f a u l
11、 t l o c a l i z a t i o n;t e s t c a s e;s o f t w a r e d e b u g g i n g;p r o g r a m s p e c t r u m引言软件正成为低成本实现各种系统中复杂功能的首选技术,日常生活的许多方面都依赖于软件的正确操作,因此保证软件的质量和及时的维护在每个开发过程中都起着至关重要的作用.测试指的是检查软件的正确性和它是否符合给定的规范的实践状态.虽然测试用例自动生成工具愈渐成熟,仍然存在部分由开发人员手工制作的测试用例,在暴露错误行为方面测试是有效的,但识别失败背后的根本原因仍然主要是一种手动活动,需要大量
12、的时间和成本.各种故障定位方法用来帮助开发人员定位故障的根本原因,例如,基于频谱的故障定位,基于切片的故障定位,基于机器学习的故障定位,和基于突变的故障定位 .其中,基于频谱的故障定位技术是研究最广泛的故障定位技术之一.尽管S B F L是一种特别轻量级的方法,但与其他方法相比,它已被证明具有竞争力,且具备与语言无关、易于使用,并且在测试执行时间相对开销较低的特性.理想的故障定位技术总是将故障程序实体排在前列.然而在实践中,尽管已经提出了各种S B F L技术,如J a c c a r d/O c h i a i,O p 和T a r a n t u l a,没有一种技术可以总是表现最好的,开
13、发人员通常必须在找到真正的错误之前检查各种非故障实体(即程序频谱中的一个维度).利用失败和成功的测试用例提供的证据,根据被测实体参与错误行为的怀疑程度进行分析和排序.直观地说,一个实体在测试用例失败时使用得越多,它就越可疑,即它就越有可能与这种不正确性的原因有关.类似地,成功的测试用例所使用的实体越多,它就越被认为不可疑.现有的S B F L技术的一个局限性是,它们不能完全捕获投稿网址:w w wj s j c l y k z c o m第期陈琪,等:基于频谱增强的软件多故障定位 每个已执行的测试用例的结果与所涉及的程序单元之间的本地关系.例如,S B F L技术,如D s t a r,会假设
14、两个失败的测试用例对在两个测试用例中执行的一个程序单元的怀疑性贡献相同,而不管在测试用例中涉及的程序实体的数量不同.在实践中,一个失败的测试用例可能比其他用例更有价值,因为它只涉及几个程序实体.其次,在许多现有的S B F L技术中,存在一个被忽略的事实,即程序实体可能以不同的方式协作贡献每个测试用例的结果.我们的关键见解是,存在一种更丰富的频谱增强形式,考虑了如何增强失败的测试用例中的频谱分析,可以提供更有效的故障定位.详细来说,存在两个测试和,它们都是失败的测试,其中覆盖了 个程序实体,而只覆盖了 个程序.根据我们的直觉,在故障定位方面比较有帮助,因为有一个更小的搜索空间来定位故障(s).
15、由于每一个执行失败的测试用例都必然执行了错误语句,即错误语句必然被覆盖,那么 已经证实了在单故障情况下,将所有执行失败的测试用例的覆盖情况取交集,则会缩小故障语句的覆盖范围,从而提高查找效率.经过频谱增强后的测试用例作为新的增强版测试用例来对程序进行验证.传统的S B F L技术忽略了这些有用的信息,并认为和在S B F L上做出了相同的贡献,例如,和执行的程序实体将被作为相同的处理,而不管测试所覆盖的实体数量.为了克服现有的S B F L技术的局限性,我们通过明确地考虑失败测试用例的贡献,更有效地增强了现有的程序频谱.基于以上见解,我们提出了基于频谱增强的软件多故障定位方法(S B F L(
16、E),s p e c t r u m b a s e df a u l t l o c a l i z a t i o n(e n h a n c e d),充分利用了执行失败测试用例的程序语句覆盖情况,缩减了运行时的执行失败测试用例数量,对基于频谱的故障定位方法进行改良,并将单故障扩展到多故障实验,极大提高了软件故障定位的效率和有效性.软件故障定位 基于频谱的故障定位S B F L使用程序频谱和测试结果来定位软件故障.程序频谱是测试用例的覆盖信息和执行结果的集合.一个程序的频谱,通常以一个矩阵的形式出现,它描述了该程序的动态行为.测试结果将记录测试用例是否失败或通过.通过较多失败测试用例的实
17、体,通过较少成功测试用例的实体就越可疑 .相反,实体通过越少的失败测试用例,通过越多成功的测试用例,实体的可疑度值就越低.程序谱中所涉及的实体类型可以是语句、分支、函数、谓词等,本文以语句作为实体.S B F L的主要思想是与故障相关的执行信息更有可能是导致程序失效的原因,这些信息往往包含在失败的测试用例,而更少发生在成功的测试用例当中.如图所示,S B F L分析了实体与测试用例通过或失败之间的动态相关性,这个相关性近似于一个实体导致程序失效的可能性.频谱信息矩阵由M个测试用例和每个测试用例中的N条语句构成,最后得到测试结果向量R.对于一个语句X_MN,其值是二进制的(/),“”表示相应的语
18、句被测试用例执行,“”表示相应的语句没有被测试用例执行.在结果向量R中,其值也是二进制的,“”表示测试用例的结果为通过,“”表示测试用例的结果为失败.N条语句测试结果M个测试用例x x xNx x xNxMxM)xMNrrrM图S B F L覆盖信息矩阵图程序执行信息从图中提取,表示为四元组(Ne f,Ne p,Nn f,Nn p),其中Ne f代表语句被执行的失败测试用例数,Ne p代表语句被执行的通过测试用例数,Nn f代表语句未被执行的失败测试用例数,Nn p代表语句未被执行的通过测试用例数.根据以上个参数,程序中各单元元素的可疑值可以通过表中的可疑值计算公式来计算,这里只列出了部分但常
19、用的公式.如果一个语句的Ne f值相对较高,而Ne p值较低,则该语句的可疑分值较高.表S B F L可疑度值计算公式名称公式T a r a n t u l aNe fNe fNn fNe fNe fNn fNe pNe pNn pO c h i a iNe f(Ne fNn f)(Ne fNe p)D s t a rNe fNe pNn fB a r i n e lNe pNe fNe pJ a c c a r dNe fNe fNn fNe p 单故障与多故障定位单故障程序指的是在程序中只存在唯一确定的一处故障,导致整个程序的失效;多故障程序则指错误数目不定,存在两处或两处以上的故障影响导
20、致程序失效.尽管各种故障定位技术已经被提出,但它们在多故障程序中的应用仍然有限.多故障定位(MF L,m u l t i p l ef a u l t l o c a l i z a t i o n)是指在一个有故障的软件程序中识别多重故障(一个以上的故障)的定位行为.与单故障定位(S F L,s i n g l e f a u l t l o c a l i z a t i o n)假设软件系统中只包含一个故障的传统做法相比,这种方法更加复杂、繁琐,而且成本高.工作流程对比如图所示.单故障程序中所有失败的测试用例均指向相同的故障,因此测试用例的数量与质量则显得尤为关键,成为优化故障定位方式的
21、突破口.在多故障环境下,除了受到测试用例的影响,更令人棘手的是故障干扰的问题.这些相互作用可能表现为导致测试用例失败,而通常情况下,由于任何单一故障的存在都不会失败.另外,一投稿网址:w w wj s j c l y k z c o m计算机测量与控制第 卷 图单故障与多故障定位个测试通常由于一个故障而失败的测试用例,在增加了另一个故障后,该测试用例可能不再失败,因为它干扰了第一个故障的导致程序失效的作用.当然也存在多个故障于同一个程序中,但不会以通过检查测试用例可以观察到故障的方式相互干扰.在这种情况下.程序中每个故障的影响似乎是独立于其他故障.本文则对故障干扰不做出假设,专注于提升测试用例
22、尤其是失败的测试用例,使用传统的定位技术同时定位多个故障是困难的,因为它们依赖于失败的测试执行来识别错误的语句.综合来看,单故障与多故障定位的差异除了存在于需要定位的故障数目的不同,也不免对测试用例的统计处理以及失败测试用例的质量造成消极影响.当故障之间的干扰导致程序包含多个故障时,现有故障定位技术的有效性会降低.程序中的故障越多,开发人员就定位故障的复杂性就越高,从而大大增加故障定位的难度与开销成本.动机实例S B F L是基于程序执行的统计数据设计的,其中包括测试覆盖率和测试结果.执行统计数据可以被视为S B F L分析的信息源,其中决定了S B F L的准确性的关键在于测试用例的性质.冗
23、余的测试用例大大增加了开发人员的时间成本与故障定位的精确性,一个含故障程序实例如表所示.在现有的研究方法中,我们考虑了一个有缺陷的程序来评估我们技术的效率.Z a k a r i等人 用一个例子来解释种方法:一次调试方法、并行调试方法和多次调试方法.在本文中,我们采用了同样的例子程序来展示我们的方法的工作过程.余晓菲等人 已经证实了频谱增强在单故障程序中的有效性,因此表实例仅对多故障程序进行详细分析.在表中,我们显示了示例程序.原始的程序测试套件T由 个测 试 用 例(T,T,T,T,T,T,T,T,T,T)和 条程序语句组成,其中语句和语句 都是错误的.标有“”的语句执行标志着该语句在该测试
24、运行中被测试用例执行,否则为空.测试用例(T,T,T,T)是 失 败 的 测 试 用 例,而(T,T,T,T,T,T)是通过的测试用例.在这个例子中,每个语句的可疑性是用T a r a n t u l a系数计算的,这是S B F L中常用的故障定位技术之一.对于单次故障的调试很简单,根据语句的可疑度得分,开发人员通过使用T a r a n t u l a,检查条语句就能清楚地识别出有故障的语句(可疑度值为 ).然而,在多故障情况下,在语句 中发现的故障必须被修复,并且程序必须被重新测试以发现第二个故障语句(可疑度值为 ).在多故障调试过程中,开发人员在找到语句 中的第一个故障后不会停止,而是
25、继续搜索下一个故障,直到找到所有故障或预先指定的搜索上限.设置上限的方法(即开发人表多故障实例M i d()I n tx,y,z,m;T T T T T T T T T T T aT b,S u s(T A R)R a n k(T A R)S u s(E T A R)R a n k(E T A R):r e a d(e n t e r n u m b e r s:,x,y,z);:mz;:i f(yz):i f(yz):mz;/f a u l t C o r r e c t:my :e l s e i f(xz):mx;:e l s e :i f(xy):mz;/f a u l t C o r
26、 r e c t:my :e l s e i f(xz):mx;:p r i n t(m i d d l en u m b e r i s:,m);P a s s/F a i lS t a t u sPPPPPPFFFFFF投稿网址:w w wj s j c l y k z c o m第期陈琪,等:基于频谱增强的软件多故障定位 员在进入下一个迭代之前可以搜索可疑语句排名列表的 或)已被现有研究采用 .在我们的研究中,我们没有设置搜索上限,而是在找到所有故障之前停止搜索.采取多故障场景下频谱增强的方法,实例为双故障程序,覆盖第一个故障语句的失败测试用例仅为T,因此频谱增强后的测试用例T a保留T
27、 的覆盖信息并剔除原有T.失败测试用例T 和T 覆盖了第二个故障语句,且覆盖信息高度重合,对二者进行测试用例精简,采取逻辑与运算得到测试用例T b,并将T 和T 从测试用例集中去除.频谱增强后可用测试用例为T T 以及T T b,再进行S B F L可疑度值计算.表清楚地显示,T a r a n t u l a计算的错误语句的等级为和.在采用频谱增强的方法进行优化后,我们的技术分别给有问题的语句分配了等级和等级.这表明,我们的研究方法比其他现有的方法更有效地优化了可疑性分数,并且能够定位那些使程序失效的语句.基于频谱增强的软件故障定位对基于频谱的故障定位方法而言,故障定位的效果和效率都高度依赖
28、于测试用例,所以测试用例的选取以及使用测试用例的多少都对实验有至关重要的影响.针对测试用例的研究,本文引入频谱增强方法,充分利用了执行失败测试用例的程序语句覆盖信息,精简了运行时的执行失败测试用例数量,从而提升了测试用例的质量以及软件故障定位的效率.由于语句执行的覆盖信息都为二进制表示方法,因此将所有失败测试用例的覆盖信息做逻辑与运算,则能够精简频谱信息,从而缩小查找故障语句的范围,并且通过频谱增强后的测试用例一定会覆盖存在故障的语句.我们将与运算操作取得的覆盖信息这个操作称为频谱增强.再使用增强过的频谱信息进行S B F L可疑度值计算,最后根据优化后的可疑度排名列表进行更高效的故障定位.整
29、体流程如图所示.单故障场景下,频谱增强后得到唯一的失败测试用例.程序运行时,唯一的故障语句必然被所有失败测试用例所覆盖,否则测试用例通过,运行结果正确,程序成功执行.而多故障场景中,并不是所有的故障语句都被每一个失败测试用例所覆盖,我们采取根据多故障数量k进行频谱增强的方式,最后得到k个频谱增强后的失败测试用例.将失败测试 用 例集 设 为T,TT,T,Ti,Tm,其中Ti为第i个失败测试用例的执行情况,具体失败测试用例的覆盖信息设为集合t,tti,ti,ti j,ti n,其中i为执行失败测试用例编号,j为语句行号,n为总语句数,ti为第i个执行失败测试用例的执行情况,tij为第i个执行失败
30、测试用例的第j条语句的覆盖情况,覆盖情况取值为或,为未被覆盖语句,为被覆图S B F L(E)流程图盖语句b.频谱增强Ee,e,el,en,其中:el(,j,m,tj l,其他()以表中多故障程序M i d为例,执行失败测试用例数为,语句总数为,故障,有个失败执行覆盖t,t,t和t,其中以t为例,t,.利用频谱增强的定义,通过频谱增强方法可以得到该例子中Ee,e,el,en.实验结果与分析为验证本文方法的有效性,实验比较了S B F L(未经过频谱增强)和S B F L(E)(经过频谱增强)的故障定位性能.实 验 运 行 环 境 为W i n d o w s 和U b u n t u系 统,G
31、H z I n t e l(R)i 四核处理器,G B物理内存.实验数据集我们采取基准程序进行了个案例研究,其中个程序是西门子(S i e m e n s)程序套件的一部分,其余两个程序来自D e f e c t s j,数据集的详细信息在表中列出.基于人工故障的西门子程序选取了T c a s,T o t i n f o和P r i n t t o k e n s;基于 真 实 故 障 的D e f e c t s j程 序 选 取 了A p a c h eC o mm o nL a n g和J F r e eC h a r t.这 些C语 言(S i e m e n s)和J AVA(D e
32、 f e c t s j)程序被广泛用于软件测试和故障定位的实验中,也用于我们之前的研究工作当中.表数据集名称错误版本数代码行数测试用例数T c a s T o t i n f o P r i n t t o k e n s C h a r t L a n g 投稿网址:w w wj s j c l y k z c o m计算机测量与控制第 卷 所有基准 程 序 的 单 故 障 版 本 可 以 分 别 从S I R(s o f t w a r e a r t i f a c t i n f r a s t r u c t u r e r e p o s i t o r y)和D e f e c
33、 t s j资源库下载.在多故障版本中,故障是手动播种到原始程序中的.由于大多数程序都是单故障,我们将单故障版本结合起来,建立多故障版本.R u i 和Z a k a r i 也创建了包含、和个故障的多故障版本,以产生S i e m e n s M案例研究.评价指标在本文中,我们采用EXAM和T o p N用于评估我们提出的S B F L(E)方法的性能的指标,并将其与其他故障定位技术的有效性进行比较.根据W o n g等人提出的评价标准,我们的研究采用E X AM作为评价指标,其定义为发现程序中所有故障时需要检查的代码行数占程序总代码行数的百分比.具体公式为:E XAMIne x a miN
34、 ()其中:e x a mi代表检测到第i个故障时需要检查的代码行数,n代表程序中的故障总数,N代表程序中的代码行总数.这种评价指标适用于单故障定位和多故障定位.当用E X AM分数来评价前者时,可以表示为E X AMe x a mN ,即需要检查的代码行数占代码行总数的百分比.根据G h o s h等人 的研究,他们通过个指标E X AMF,E X AMM,以及E X AML来扩展E X AM分数.E X AMF代表在查找到第一个故障之前需要检查的语句的百分比;E X AMM表示查 找 到 第 二 个 故 障 之 前 需 要 检 查 的 语 句 的 百 分 比;E X AML表示最后一个故障
35、需要检查的语句的百分比.T o p N用于评估故障元素的绝对排名,它通过检查排名列表的前n个位置来计算成功定位的故障总数.N越小,故障定位技术就越有效.值得注意的是,程序员在实践中会更多地关注最可疑的元素,他们不是一个一个地检查排名列表中的语句,而是在排名列表中的不同位置之间表现出某种形式的跳跃,直到关于故障原因的假设得到确认.此外,排名靠前的位置很少被程序员跳过,所以T o p 对于评估故障定位技术的有效性和准确性极为关键.结果分析基于上述提出的方法,本节对实验进行了详细描述和分析.我们建立了一个名为S B F L(E)的故障定位技术,它通过频谱增强来优化S B F L,为了评估我们方法的有
36、效性,我们采用了个常用的S B F L技术作为基准.在我们的实验研究中,我们执行了个基准程序,包括个西门子套件和两个D e f e c t s j实用程序,每个程序中都包含一个故障.图显示了D s t a r,J a c c a r d,O c h i a i和T a r a n t u l a对个 西 门 子 程 序(T c a s,T o t i n f o和P r i n t t o k e n s)的 推 广 技 术 的 比 较;D e f e c t s j数 据 集 中C h a r t和L a n g的整体表现也可以在图中见证.在每张图中,横轴表示EXAM分数的百分比,而纵轴表示
37、能检测到存在故障版本的百分比.从图和图的结果分析中,我们发现由频谱增强的技术在寻找单一故障方面比现有的技术表现得更好,尤其是O c h i a i(E)方法EXAM在分数为 时表现突出,它能够定位 以上的故障版本.J a c c a r d(E)和D s t a r(E)也在图中的相同范围内保持了类似的趋势,能够定位大约 的故障版本.图单故障西门子程序E XAM指数图单故障D e f e c t s j程序E XAM指数我们在单故障程序中手动添加了一个故障,从而得到双故障程序.我们执行每个有两个故障的基准程序,计算了E XAMF和E XAML值,以评估我们技术的准确性,如图和所示.并介绍了种技
38、术对西门子程序的EXAMF和E XAML的比较.同样,对于D e f e c t s j程序,种技术的比较见图和.从结果分析中,我们可以看到,所提出的技术S B F L(E)在大多数情况下都优于传统S B F L.由于确保频谱增强技术确实在多故障程序中起到了优化作用,我们在每个西门子和D e f e c t s j基准程序中手动添加到个故障,准备了三故障程序来进行进一步实验研究.图 分别给出了种技术对西门子程序的EXAMF,E X AMM,以及E XAML值的比较.对于D e f e c t s j程序,类似的比较如图所示.综合来看,我们提出的技术比现有的S B F L技术表现得更好.投稿网址
39、:w w wj s j c l y k z c o m第期陈琪,等:基于频谱增强的软件多故障定位 图双故障西门子程序E XAMF和E XAML指数图双故障D e f e c t s j程序E XAMF和E XAML指数图三故障西门子程序E XAMF、E XAMM和E XAML指数为了评估他们对顶级可疑元素的表现,使用了T o p n作为测量指标.的审查都是从排序列表中的第个可疑元素开始的,这意味着首位很少被程序员跳过.因此,如何提高故障定位的准确性,特别是T o p 可疑元素,对故障定位的实用性至关重要.如表所示,S B F L(E)技术通过检查单故障程序中的T o p 、T o p 和T o
40、 p 可疑语句,分别成功定位了数量更多的故障.表突出了西门子程序的性能,每一种技术都得到了不同程度的改善,其他采用频谱增强技术在T o p 上比传统技术可以多定位到约 以上的故障,在T o p 和T o p 上都有同比增长.同样,表也显示了D e f e c t s j中同样的种技术进行比较,所有的S B F L技术的效率都因为频谱增强所提升.最明显的变化是D s t a r(E)在重要的T o p 上,故障定位数量从 投稿网址:w w wj s j c l y k z c o m计算机测量与控制第 卷 图三故障D e f e c t s j程序E XAMF、E XAMM和E XAML指数增加
41、到.表单故障程序中T o p N指数名称名称S i e m e n sD e f e c t s jT o p T o p T o p T o p T o p T o p D s t a r D s t a r(E)J a c c a r d J a c c a r d(E)O c h i a i O c h i a i(E)T a r a n t u l a T a r a n t u l a(E)在多故障程序中,T o p N在S B F L和S B F L(E)技术之间展示了不同程度的增长.如表所示,在双故障的西门子程序中,D s t a r(E)通过检查前、和条可疑语句,可以 分 别
42、定 位、和 个 故 障(约 占 所 有 故 障 的 、和 ).D s t a r(E)和T a r a n t u l a(E)保持着类似的趋势,且表现比O c h i a i(E)好.如表所示,在个故障的西门子程序中,D s t a r(E)通过检查前、和条可疑语句,分别可以定位、和 个故障(约 占 所 有 故 障 的 、和 ).J a c c a r d(E),O c h i a i(E)和T a r a n t u l a(E)的存在相同的趋势,且差异较小.如表和所示,在多故障D e f e c t s j程序中的优势更为显著,S B F L(E)在T o p ,T o p 以及T o
43、p 中都保持较好的性能,尽管在少数情况下,与传统的S B F L技术相比,它未能定位更多的故障.表双故障程序中T o p N指数名称名称S i e m e n sD e f e c t s jT o p T o p T o p T o p T o p T o p D s t a r D s t a r(E)J a c c a r d J a c c a r d(E)O c h i a i O c h i a i(E)T a r a n t u l a T a r a n t u l a(E)表三故障程序中T o p N指数名称名称S i e m e n sD e f e c t s jT o
44、p T o p T o p T o p T o p T o p D s t a r D s t a r(E)J a c c a r d J a c c a r d(E)O c h i a i(E)T a r a n t u l a T a r a n t u l a(E)结束语故障定位是困难且代价高的,这就是为什么我们在过去 年中看到了各种故障定位技术被提出.多故障定位正在成为软件测试研究领域中最关键的问题之一.在实践中,我们发现在传统的S B F L中冗余的失败测试用例会给故障定位效率带来消极影响,这阻碍了程序员在调试故障时的效率和生产力.此外,我们注意到使用频谱增强的逻辑与运算可以有效精简
45、失败测试用例的频谱信息,优化可疑度值以提高故障元素的等级.在本文中,我们提出了基于频谱增强的多故障定位方投稿网址:w w wj s j c l y k z c o m第期陈琪,等:基于频谱增强的软件多故障定位 法.首先,使用频谱增强的方法精简失败的测试用例,再利用S B F L的统计公式对新的频谱信息进行评估,并根据其可疑度对潜在的故障语句进行排序.最后,被S B F L(E)排在前N位的语句根据其新的分数排序.所提出的故障定位方法缓解了S B F L的缺点,提高了故障定位的准确性.通过使用个开源基准程序的案例研究来评估我们框架的性能.为了显示我们提出的技术的效率,将我们的工作与个密切相关的故
46、障定位技术,即D s t a r、J a c c a r d、O c h i a i和T a r a n t u l a进行了比较.实验结果表明,与典型的S B F L定位方法相比,基于频谱增强的方法可以显著减少代码检查的范围,尤其是在高性能范围内(即EXAM和T o p),明显提高了故障定位的性能.但是在这个领域还有很大的发展空间,也有一些问题需要解决.存在程序中如果失败测试用例过少的问题,而测试用例质量及其数量对结果有很重要的影响;以及频谱增强的思想能否运用到其他故障定位方法当中.后期研究人员还需要努力减少其负面影响,甚至解决这些问题.虽然本实验选择的基准程序在故障定位领域具有代表性,具有
47、说服力,但在今后的工作中,我们将把重点放在更真实的工程程序上.总的来说,随着研究界对S F L研究的极大兴趣,以及最近该领域出版物的一致性,我们希望在未来几年会有更多具体的解决方案来解决多故障问题.参考文献:J O N E SJA,HA R R O L DMJ,S T A S K OJ V i s u a l i z a t i o no f t e s ti n f o r m a t i o nt o a s s i s tf a u l tl o c a l i z a t i o nC/I C S EA CM,:RU IA,Z O E T EWE I JP,G EMUN D AO nt
48、 h ea c c u r a c yo fs p e c t r u m b a s e df a u l tl o c a l i z a t i o nC/T A I C P A R T MUT A T I O N I E E E,:J O N E SJA,HA R R O L D MJ E m p i r i c a le v a l u a t i o no ft h et a r a n t u l aa u t o m a t i cf a u l t l o c a l i z a t i o nt e c h n i q u eC/P r o c t hI E E E/A C
49、MI n t C o n f A u t o m S o f t w E n g(A S E),:NA I S HL,L E EHJ,R AMAMOHANA R AOKAm o d e l f o rs p e c t r a b a s e ds o f t w a r ed i a g n o s i sJA CM T r a n s a c t i o n so nS o f t w a r eE n g i n e e r i n g&M e t h o d o l o g y,():Y O OSE v o l v i n gh u m a nc o m p e t i t i v e
50、s p e c t r a b a s e df a u l t l o c a l i z a t i o nt e c h n i q u e sC/S S B S E,S p r i n g e r,:X I EXY,KUOFC,CHE NTY,e t a l P r o v a b l yo p t i m a l a n dh u m a n c o m p e t i t i v er e s u l t s i nS B S Ef o rs p e c t r u mb a s e df a u l t l o c a l i z a t i o nC/S S B S E,S p
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100