一种基于遗传算法的多缺陷定位方法-王赞.pdf
《一种基于遗传算法的多缺陷定位方法-王赞.pdf》由会员分享,可在线阅读,更多相关《一种基于遗传算法的多缺陷定位方法-王赞.pdf(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件学报ISSN 10009825。CODEN RUXUEWJournal ofSoftware,2016,27(4):879900【doi:10133280cnkijos004970】中国科学院软件研究所版权所有一种基于遗传算法的多缺陷定位方法王赞1,樊向宇1,邹雨果1,3,陈翔21(天津大学软件学院软件工程系,天津300072)2(南通大学计算机科学与技术学院,江苏南通226019)3(厦门航空有限公司信息部,福建厦门 361006)通信作者:樊向宇,Email:fxytjueducnEmail:josiscasaccnhttp:wwwjosorgcnTel:+861062562563摘要
2、: 基于程序频谱的缺陷定位方法可以有效地辅助开发人员定位软件内部缺陷,但大部分已有自动化方法在解决多缺陷定位问题时表现不佳,部分效果尚-q-的方法因复杂度较高或需要开发人员较多交互而仍需进一步改善为改善上述问题,提出一种基于遗传算法的多缺陷定位方法GAMFal,具体来说:首先基于搜索的软件工程思想对多缺陷定位问题进行建模。构建了候选缺陷分布的染色体编码方式,并基于扩展的Ochiai系数计算个体的适应度值;随后使用遗传算法在解空间中搜索具有最高适应度值的候选缺陷分布,在终止条件被满足后返回最优解种群;最后根据这个种群对程序实体进行排序这样开发人员可以依次对程序实体进行检查并最终确定多个缺陷的具体
3、位置实证研究以Siemens套件中的7个程序和Linux的3个程序(gzip、grep和sed)作为评测对象,并扩展传统的定位方法评测标准EXAM至EXAMF和EXAML。通过与其他经典的缺陷定位方法(Tarantula、Improved Tarantula及Ochiai)进行对比,并通过Friedman检测和最小显著性差异测试可得,提出的GAMFal方法在整体定位效率方面优于传统方法,且需要更少的人工交互除此之外,GAMFal的执行时间也在可接受的范围之内关键词: 缺陷定位;多缺陷;基于搜索的软件工程;遗传算-法r;EXAM评价标准中图法分类号:TP3ll中文引用格式:王赞,樊向宇,邹雨果,
4、陈翔一种基于遗传算法的多缺陷定位方法软件学报,2016,27(4):879-900http:llwwwjOSorgcn1000-98254970htm英文引用格式:Wang Z,Fan XY,Zou YG,Chert xGenetic algorithm based multiple faults localization techniqueRuan JianXue BaoJournal ofSoftware,2016,27(4):879-900(in Chinese)http:llwwwjosorgcn,l0-9825,4970himGenetic Algorithm Based Multi
5、ple Faults Localization TechniqueWANG Zanl,FAN XiangYul,ZOU YuGu01,一,CHEN Xian92(Department ofSoftware Engineering,School ofComputer SoRware,Tianjin University,Tianjin 300072,China)2(School ofComputer Science and Technology,Nantong University,Nantong 226019,China)3(Department ofInformation,Xiamen Ai
6、rlines,Xiamen 361006,China)Abstract: SpectrumBased fault localization techniques are attractive for their effectiveness,and prewous works have demonstrated thatthey can assist programmers tO locate faults automaticallyHowever,most of them can only work better when there is single bug thanmultiple bu
7、gsOther approaches,although partially successful on multiple faults problem,are complex and need more human interventionTo beaer address these problems,this paper proposes a new spectrum-based fault localization technique based on genetic algorithm,called GAMFal,which Can locate multiple bugs effect
8、ively、ith less human interventionFirst,the multiple bugslocalization isconverted into a search based model and a candidate expression for multiple bugslocation is encoded aS all individual binary stringThen,基金项目:国家自然科学基金(61202030,61373012,61202006)Foundation item:National Natural Science Foundation
9、ofChina(61202030,61373012,61202006)收稿时间:2015-08-31;修改时间:20151015;采用时间:2015-11-20;jOS在线出版时间:20160113CNKI网络优先出版:2016-0l14 13:16:12http:wwwenkinetkcmsdetail112560TP201601141316009html万方数据Journal of Software软件学报V0127,No4,April 2016the new approach extends the Ochiai coefficient to calculate the suspicio
10、usness value used by genetic algorithm as a fitness function tosearch for a best populmion composed by optimal fault location candidates with highest suspiciousness value,and conveys the ranking listof candidates to a checking order of program entitiesAccording to this order,programmers finally exam
11、ine program entities to locatefaultsAn empirical study on Siemens suites and three Linux programs(gzip,grep and sed)is conducted to compare GAMFal with otherspectrum-based approachesThe Friedman test and Least Significance Difference method are then carried out to investigate the statisticalsignific
12、ance、of any differences observed in the experimentsThe result suggests that the proposed method outperforms other relatedtechniques in some respects and is feasible with respect to running timeKey words:fault localization;multiple faults;search-based software engineering;genetic algorithm;EXAM软件缺陷定位
13、(software fault localization)技术是在执行测试用例集后发现有部分测试用例执行失败时,确定缺陷所在具体位置的一种分析方法在传统的软件开发过程中,通常是由开发人员手工调试、找到缺陷并进行修复但这种传统的缺陷定位方法成本较高【l】为了提高调试效率,把开发人员从枯燥的手工调试中解放出来,研究人员提出了大量的自动化缺陷定位方法用以辅助开发人员快速准确地定位缺陷已有的自动化缺陷定位方法可以简单地分为两类:静态定位方法和动态定位方法其中静态定位方法【2】在程序运行前通过分析代码结构来定位缺陷,而动态定位方法【3-5】则通过分析测试用例的执行轨迹和运行结果来定位缺陷在动态定位方法中
14、,基于程序频谱的缺陷定位(program spectrum based fault localization,简称SFL)技术表现出很好的定位效果15J它们通过计算出每个程序实体(可设置为语句、语句块或函数等)内含有缺陷的可能性,然后生成缺陷分析报告并以此来辅助开发人员进行调试,直至找到真正缺陷位置并完成修复SFL是当前软件缺陷定位问题的研究热点,也是本文研究的问题程序频谱是执行测试用例时收集到的程序执行信息,包括测试用例的程序实体覆盖信息和执行结果在大量SFL方法中,Tarantula【3】、Jaccard【6】、OchiaitTl和oo隅】等方法取得了较好的效果它们使用统计学方法计算出程序
15、实体的可疑值,并依次排序但这类方法在定位单缺陷时的效果要优于定位多缺陷时的效果141然而在实际软件开发过程中,被测程序内部含有的缺陷数难以预先获知,并且在绝大多数情况下都多于1个目前研究人员对多缺陷定位问题进行了初步研究Jones等人【4】基于测试用例执行结果将被测程序划分为几个不同部分,随后指派不同的开发人员分别去定位相关部分内的缺陷这种方法需要多个开发人员来检查代码,因此需要较高的人力成本Abreu等人提出BARlNEL方法【9】,这种方法使用贝叶斯模型排序代表多缺陷的候选集BARINEL方法在单缺陷定位和多缺陷定位中都具有较好的性能,但是它需要开发人员在检查代码的过程中保持实时交互,以确
16、保可以依此不断修正候选集排序Steimann和Bertschler10】尝试使用概率分布来估计内部缺陷数然而,缺陷的概率分布难以预知,并且很难进行估计和验证MUSE方法】不断地对程序语句执行变异操作,试图得到所有测试用例都能通过的新版本来定位到缺陷该方法的效果很好,但是需要耗费大量时间,难以在实际中使用本文提出一种基于遗传算法的多缺陷定位方法框架GAMFal首先以基于搜索的软件工程思想对多缺陷问题进行建模,将多缺陷定位问题转化为一类搜索问题;然后以二进制染色体形式表达潜在的多缺陷候选分布,同时,基于覆盖的频谱信息及“通过失败”的执行结果拓展Ochiai方法以构建适应值函数,并以此为依据采用遗传
17、算法搜索解空间,搜索出的最优解可显性地表示多个缺陷的可能位置这样,该方法便能在较少人工参与的情况下有效地进行多缺陷定位本文的主要贡献总结如下:(1)提出基于遗传算法的多缺陷定位方法GAMFal具体来说,将多缺陷定位问题建模为一类搜索问题,拓展传统的Ochiai系数,使其能够适应于多缺陷定位问题;随后以此为适应度值函数,基于遗传算法寻找最优候选集,并在此基础上对程序实体进行可疑值排序(2)基于现有缺陷定位方法评价标准匠物朋的两个扩展标准匠识朋f和匠搬则分别表示找到第1个缺陷和找到最后一个缺陷需要检查的程序实体占总程序实体的百分比),实验对比本文方法和其他3种方法(Tarantula、Improv
18、ed Tarantula和Ochiai)的性能,证明本文方法在多缺陷定位时具有一定的优势本文第1节介绍研究背景,并通过一个简单实例,引出研究动机第2节描述我们提出的方法框架GAMFal第3节为实证研究,描述实验设计、采用的评测数据集、GAMFal方法在Siemens套件的7个程序和Linux的3个程序上的缺陷定位效果及与其他3种缺陷定位方法的比较实验,并讨论实验结果以及有效性影响因素第4万方数据王赞等:一种基于遗传算法的多缺陷定位方法节总结全文并指出值得关注的下一步研究工作l研究背景和相关工作88111基于频谱的软件缺陷定位本节首先对SFL问题进行描述,随后给出一个具体实例进行说明定义1(测试
19、用例集)T=tl,t:,tm)表示被测程序的配套测试用例集,其中,f表示该测试用例集的第f个测试用例定义2(待测程序实体集)E=ea,e2,表示被测程序内包含的程序实体集,其中,er表示第f个程序实体程序实体粒度可设置为语句、语句块或函数等定义3(覆盖矩阵)仁(瞄)用来表示T和E之间的覆盖关系M是一个mxn的矩阵,其中第i行表示第i个测试用例的程序实体覆盖情况,第J列表示第J个程序实体被不同测试用例覆盖的情况每一个代表第i个测试用例对第,个程序实体的覆盖情况,当M=1时,表示测试用例f覆盖程序实体当尬=0时,表示测试用例i未覆盖程序实体,定义4(失败测试用例覆盖矩阵)磊=(M,)是覆盖矩阵M的
20、一部分,只包含失败测试用例的覆盖信息定义5(通过测试用例覆盖矩阵)朋声(釉是覆盖矩阵M的另一部分,只包含通过测试用例的覆盖信息定义6(执行结果向量)R=r。,r2,代表测试用例集中的测试用例的测试结果,n表示第i个测试用例的执行结果,lf埘当r尸O时,表示第i个测试用例执行通过当n=1时,表示第i个测试用例执行失败定义7(程序实体统计量)程序频谱构造方式仅需简单统计测试用例的程序实体覆盖信息当程序实体为语句、语句块或函数时,基于各个测试用例的程序频谱和执行结果,可由程序实体统计量表示程序实体统计量定义为口,(P)=心=P A,;=qP,qo,1|;口l,o(口)和al,l(o分别表示“覆盖程序
21、实体P”的通过测试用例数和失败测试用例数,ao,o(P)和ao,i(P)分别表示“未覆盖程序实体矿的通过测试用例数和失败测试用例数Tarantula可疑度系数【3ISr和Ochiai可疑度系数【71品的计算公式依次定义如下:鱼!f尘ST(班_糟等型r (1)ql(P)+a01(P) alo(D+aoo(e)S P):1 鱼!堡! (2)o(7 (口l。(P)+口o。(e)(q。(D+q。(D) 。Jones等人3】还提出引入了置信度的改进Tarantula方法,用来辅助Tarantula方法排序,其定义如下: She)-趴小叫羔,揣(3)下面通过图l所示的函数findSecond来说明这类方法
22、的工作方式,并对比GAMFal方法与已有方法的差异,讨论GAMFal方法的可行性findSecond函数的输入是4个整数,输出是这些整数中的第二大整数在图l给出的版本中,第14行和第17行程序都有错误,即在第14行中代码temp=b应为temp=min,在第17行中代码temp=b应为temp=c目前已有的可疑度值计算公式一般基于陈翔等人总结的8个假设【12】,该文是对虞凯等人工作的进一步完善【13】,其中一个假设是程序实体的怀疑度值与该程序实体被失败测试用例覆盖的次数成正比如果程序中只有一个缺陷,那么这个假设是可以被接受的,但是如果程序中含有两个或两个以上的缺陷,则存在如下问题:(1)被失败
23、测试用例覆盖最多的一般不是这两个缺陷所在的代码行,而是这些失败测试用例共同覆盖的那部分程序实体,这样得到的怀疑度值排序结果显然是不够准确的;(2)单缺陷定位方法会在很大程度上忽略缺陷间的干扰以及相互作用情况【14】万方数据882 Journal矽Software软件学报V0127,No4,April 2016函数findSecond1 intfindSecon以int a,int b,int c,int曲2 int max,min,temp;3 if(口max)11 temp=max;12 max=c;13 else if(ctemp)20 return吐21 else if(dmax)22
24、return max:23 1 else f24 return temp;25 126 Fig1 FunetionfindSecond with multiple faults图1含有多个缺陷的函数findSecond根据图1的被测程序及表1中测试用例的覆盖情况和执行结果可以看出,现有的3种方法中只有Tarantula可以快速找到第1个缺陷在3种方法计算出的可疑值中,排名第2的程序实体都是失败测试用例共同经过的第24行,但第24行并没有缺陷同时,没有缺陷的第4行、第5行也因被较多的失败测试用例覆盖而排名较为靠前而运用本文提出的GAMFal方法搜索出的3个最优解分别为(13)、(14,17)组合
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一种 基于 遗传 算法 缺陷 定位 方法 王赞
限制150内