当前位置: 首页 > 专利查询>南开大学专利>正文

一种基于特征选择的程序缺陷定位方法技术

技术编号:30974958 阅读:17 留言:0更新日期:2021-11-25 21:00
本发明专利技术公开了一种基于特征选择的程序缺陷定位方法,该方法包括:执行测试样例,得到分支覆盖特征谱;根据分支覆盖特征谱和样本数据集计算缺陷相关统计量;根据缺陷相关统计量得到程序各个元素的可疑度;根据程序元素的可疑度将其排序,按序排查代码。本发明专利技术提出了基于相关统计量的缺陷定位方法,从数据的角度分析测试用例的覆盖信息,利用特征选择中特征对分类结果重要性的概念,选择对测试用例执行结果影响较大的分支。计算复杂度低。相比较传统启发式的基于覆盖分析的缺陷定位方法在准确性上具有一定的提升,并通过提高缺陷查找效率缩短了纠错性维护的时间和人力成本。短了纠错性维护的时间和人力成本。短了纠错性维护的时间和人力成本。

【技术实现步骤摘要】
一种基于特征选择的程序缺陷定位方法


[0001]本专利技术属于软件系统和人工智能
,具体涉及一种基于特征选择的程序缺陷定位方法。

技术介绍

[0002]软件系统在当今社会的军事、生活、教育等各个方面占据着重要的地位。随着人们对软件系统依赖性的不断增强,软件系统失效往往给生活和经济带来巨大的损失,尤其在军事、航空等对可靠性有高要求的行业。软件缺陷是导致软件失效的主要因素。软件缺陷的存在可能导致软件系统不能按照预期执行,从而造成误差甚至系统崩溃。为了保证软件正确性,需要软件维护人员及时清除可能导致软件失效的缺陷。
[0003]当软件系统失效时,需要对软件系统进行纠错性软件维护,将潜在的软件缺陷清除。缺陷定位指的是当软件失效时,查找并定位软件缺陷的过程,是纠错性软件维护的基础。虽然缺陷定位是纠错性软件维护的首要条件,但是人工进行缺陷定位往往是一个冗长而繁复的过程。一方面人工缺陷定位通常依赖软件维护人员的经验和对软件系统的了解,即使经验丰富的软件维护人员也很难迅速定位导致软件系统行为失效的根本原因。另一方面,针对大规模软件系统,人工缺陷定位所消耗的时间较长,软件维护人员需要充分理解源代码后逐步排查。
[0004]当前主要的缺陷定位方法包括基于覆盖分析的方法、基于程序切片的方法、基于程序不变量的方法、基于模型检验的方法、基于状态变更的方法等。其中大多数方法通过对软件系统的源代码或行为进行建模,查找与软件系统失效相关的代码。根据建模对象的不同,传统的缺陷定位方法可以分为动态分析和静态分析两类。前者通过动态分析程序的行为,如执行路径或状态等,查找相关代码;后者主要通过静态分析软件系统的源代码,从而分析与软件系统失效行为有关的程序元素。
[0005]虽然自动化缺陷定位的理论和技术得到了很大的发展,但当前的自动缺陷定位仍然面临两个技术难题:1. 随着需求的不断增加,软件系统越来越大,导致缺陷定位的效率降低。因此,适用于大规模软件系统的缺陷定位越来越得到关注。
[0006]2. 软件系统中潜在的缺陷可能不止一个,多个软件缺陷之间的相互影响可能导致自动缺陷定位的难度提高,准确度下降。尽管目前已经存在部分针对多缺陷的调试技术,但多缺陷的自动定位仍然是不小的挑战。
[0007]传统的基于覆盖分析的缺陷定位方法,基于启发式的思想使用特定公式计算程序元素的可疑度,其核心思想是被失效用例执行越多、成功用例执行越少的代码可疑度越高。该类方法通常只需要统计测试用例的执行结果和覆盖信息,并根据特定的公式计算代码的可疑度,其优点在于计算复杂度低,面对大规模软件系统时,由于不需要对软件系统的源代码进行建模,因此效率较高。但也存在一定的问题:由于基于覆盖分析的方法不对程序源代码进行建模,而是从统计的角度根据代码被失效和成功覆盖的频率推测代码的可疑度,因
此对于存在多缺陷的程序,难以区分不同缺陷导致的失效用例,忽略不同软件缺陷之间的相互影响,可能导致缺陷定位的准确性降低。其主要原因有两个方面:(1)未被失效用例覆盖的代码可能也包含缺陷;(2)不同软件缺陷共同路径上的正确代码被失效用例覆盖的频率较大,导致可疑度偏高。

技术实现思路

[0008]本专利技术的目的是要解决传统的基于覆盖分析的缺陷定位方法难以区分不同缺陷导致的失效用例,以及忽略不同软件缺陷之间的相互影响的问题,为此,本专利技术提供一种基于特征选择的程序缺陷定位方法。
[0009]本专利技术是通过以下技术方案实现的:一种基于特征选择的程序缺陷定位方法,包括以下步骤:步骤S1,将给定的程序划分为m个程序元素;步骤S2,构造n个测试样例,组成测试样例集;步骤S3,执行各测试样例,记录每个测试样例执行的结果是成功还是失败,并记录各测试样例对程序元素的覆盖情况,得到分支覆盖特征谱;步骤S4,根据得到的分支覆盖特征谱计算各个程序元素的平均缺陷相关统计量;步骤S5,按照各程序元素的平均缺陷相关统计量大小,由大到小,将各程序元素进行排序,然后按序对各程序元素进行代码排查。
[0010]在上述技术方案中,步骤S4包括以下步骤:步骤S41,将测试样例集D中的测试样例划分为正类测试样例子数据集和负类测试样例子数据集,正类测试样例都是执行成功样例,负类测试样例都是执行失败样例;步骤S42,随机将测试样例集中的测试样例进行排序,排序为C = {,,,...,},n是测试样例的个数;步骤S43,对于第i个测试样例,i为1...n之一,从正类测试样例子数据集和负类测试样例子数据集中各寻找出一个距离
ꢀꢀ
最近的测试样例,其中与同类的测试样例为,与 异类的测试样例为;步骤S44,计算第i个测试样例对于第j个程序元素的缺陷相关统计量的计算公式为:=

*(

diff(,)+diff(,)),其中,代表第i个测试样例对于第j个程序元素的分支覆盖特征,若测试样例覆盖第j个程序元素,则=1,否侧=0 ;表示测试样例的执行结果,当其执行成功时为1,否则为0;代表距离最近的同类测试样例对于第j个程序元素的分支覆盖特征,若测试样例覆盖第j个程序元素,则=1,否则=0;代表距离最近的异类测试样例对于第j个程序元素的分支覆盖特征,若测试样例覆盖第j个程序元素,则=1,否则=0;对于diff(,),若为离散型,如果=,则diff(,)=0,否则diff(,)=1,若为连续型,则diff(,)=||;对于diff(,),若为离散型,如果=,则diff(,)=0,否则diff(
,)=1,若为连续型,diff(,)=||;按照上述计算公式,计算出每一个测试样例对于当前程序元素的缺陷相关统计量,并进行累加,得到当前程序元素对于所有测试样例的缺陷相关统计量总和;步骤S45,将步骤S44得到的当前程序元素对于所有测试样例的缺陷相关统计量总和除以测试样例的总数,得到当前程序元素的平均缺陷相关统计量;步骤S46,按照步骤S44

S45计算出各个程序元素的平均缺陷相关统计量。
[0011]在上述技术方案中,使用曼哈顿距离来计算两个任意测试样例与之间的距离,寻找出距离
ꢀꢀ
最近的测试样例;两个任意测试样例与之间距离的计算公式为:distance()=,是表示测试样例对第j个程序元素的分支覆盖特征,是表示测试样例对第j个程序元素的分支覆盖特征。
[0012]在上述技术方案中,步骤S5包括以下步骤:步骤S51,对于排序后的程序元素序列 B = {,,,...,},从开始按序排查,如果是分支结构的一个分支,排查 所在分支结构的判定语句 ;排查与判定语句
ꢀꢀ
在一个基本代码块内且影响到其判定结果的语句;排查在
ꢀꢀ
内且控制依赖于分支
ꢀꢀ
的语句;步骤S52,如果不是分支结构的一个分支,排查与
ꢀꢀ
同在一个函数的所有必须被执行的可执行语句。
[0013]本专利技术的有益效果为:(1)本专利技术提出了基于相关统计量的缺陷定位方法,从数据的角度分析测试用例的覆盖信本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于特征选择的程序缺陷定位方法,其特征在于,包括以下步骤:步骤S1,将给定的程序划分为m个程序元素;步骤S2,构造n个测试样例,组成测试样例集;步骤S3,执行各测试样例,记录每个测试样例执行的结果是成功还是失败,并记录各测试样例对程序元素的覆盖情况,得到分支覆盖特征谱;步骤S4,根据得到的分支覆盖特征谱计算各个程序元素的平均缺陷相关统计量;步骤S5,按照各程序元素的平均缺陷相关统计量大小,由大到小,将各程序元素进行排序,然后按序对各程序元素进行代码排查。2.根据权利要求1所述的基于特征选择的程序缺陷定位方法,其特征在于:步骤S4包括以下步骤:步骤S41,将测试样例集D中的测试样例划分为正类测试样例子数据集和负类测试样例子数据集,正类测试样例是执行成功样例,负类测试样例是执行失败样例;步骤S42,随机将测试样例集中的测试样例进行排序,排序为C = {,,,...,},n是测试样例的个数;步骤S43,对于第i个测试样例,i为1...n之一,从正类测试样例子数据集和负类测试样例子数据集中各寻找出一个距离
ꢀꢀ
最近的测试样例,其中与同类的测试样例为,与 异类的测试样例为;步骤S44,计算第i个测试样例对于第j个程序元素的缺陷相关统计量的计算公式为:=

*(

diff(,)+diff(,)),其中,代表第i个测试样例对于第j个程序元素的分支覆盖特征,若第i个测试样例覆盖第j个程序元素,则=1,否侧=0 ;表示第i个测试样例的执行结果,当其执行成功时为1,否则为0;代表距离最近的同类测试样例对于第j个程序元素的分支覆盖特征,若测试样例覆盖第j个程序元素,则=1,否则=0;代表距离最近的异类测试样例对于第j个程序元素的分支覆盖特征,若测试样例覆盖...

【专利技术属性】
技术研发人员:徐思涵符心亮李君龙蔡祥睿王志煜李梅高雅
申请(专利权)人:南开大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1