CN110764989A - 一种基于化学反应优化的错误定位方法 - Google Patents

一种基于化学反应优化的错误定位方法 Download PDF

Info

Publication number
CN110764989A
CN110764989A CN201810823017.5A CN201810823017A CN110764989A CN 110764989 A CN110764989 A CN 110764989A CN 201810823017 A CN201810823017 A CN 201810823017A CN 110764989 A CN110764989 A CN 110764989A
Authority
CN
China
Prior art keywords
molecule
molecules
population
molecular
error
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810823017.5A
Other languages
English (en)
Other versions
CN110764989B (zh
Inventor
姜淑娟
王兴亚
陆凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China University of Mining and Technology CUMT
Original Assignee
China University of Mining and Technology CUMT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China University of Mining and Technology CUMT filed Critical China University of Mining and Technology CUMT
Priority to CN201810823017.5A priority Critical patent/CN110764989B/zh
Publication of CN110764989A publication Critical patent/CN110764989A/zh
Application granted granted Critical
Publication of CN110764989B publication Critical patent/CN110764989B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及一种基于化学反应优化的错误定位方法,包括以下步骤:(1)软件行为图构建;(2)软件行为图约简;(3)分子种群初始化;(4)最优分子种群搜索;(5)错误定位。该方法对源程序插桩,执行测试用例收集程序执行路径信息,构造软件行为图并进行约简,然后定义化学反应优化分子结构和解空间,初始化反应分子种群,之后选取合适适应度函数利用化学反应优化迭代搜索最优分子种群;最终将种群中的分子转化为程序状态上下文进行错误定位。本发明目的在于提供错误相关的程序上下文信息,利于开发人员理解执行失效的原因,进而定位和修复错误,提高了程序调试效率。

Description

一种基于化学反应优化的错误定位方法
技术领域
本发明属于软件测试技术领域,尤其是程序调试中的错误定位领域,用于定位程序中的错误实体,是一种辅助开发人员定位和修复程序错误的方法。
背景技术
随着计算机科学技术的飞速发展,计算机软件已经深入到人类生活以及社会发展的各个方面。软件的开发效率和产品质量对人类社会的发展产生了前所未有的影响,因此,软件测试作为保证软件质量和可靠性的重要手段贯穿于软件开发的整个周期,是整个系统开发和维护不可缺少的工作。
在软件测试中,错误定位是程序调试的一个重要步骤。据统计,软件测试约占软件开发和维护成本的50%~75%,而错误定位又是软件测试最耗时、代价最昂贵的任务。因此,有效的错误定位方法对提高程序调试效率、降低软件开发和维护成本以及保证软件质量具有重要的意义。
基于搜索的软件工程采用元启发搜索技术,是以合理的计算开销求解一类可转化为组合优化问题的软件工程问题,在软件错误定位与软件错误自动修复领域有很多应用。化学反应优化算法是一种基于化学反应原理的元启发搜索技术,利用化学反应优化算法将错误定位问题转化为组合优化问题,提出一种基于化学反应优化的错误定位方法,提供与程序错误实体相关的上下文信息,进而提高程序调试的效率。
发明内容
为了解决已有的错误定位方法通常只给出可疑程序实体的排序列表而缺少了相关的上下文信息,导致开发人员进行错误定位的效率不高、难以理解软件失效原因的问题,本发明提出一种基于化学反应优化的错误定位方法。该方法针对给定的待测程序以及测试用例集合,为待测程序进行插桩,执行测试用例获取程序执行路径,构造软件行为图;在此基础上对软件行为图约简,减小行为图的规模;然后抽取失败执行图的有向边,根据化学反应优化算法分子结构和解空间,初始化反应分子种群;之后选取合适适应度函数利用化学反应优化算法迭代搜索获取最优分子种群;最终将最优分子种群中的分子转化为程序状态上下文理解程序执行失效原因,进而定位和修复错误。具体而言,该方法包含以下步骤:
1)软件行为图构建。针对待测程序,对其源代码进行插桩,用以在程序执行时输出程序的执行信息。按照程序大小实现语句级别或方法级别插桩,每执行一条语句或者一个方法,输出该语句或者方法的行号,从而获取程序执行路径,根据执行路径构建软件行为图。软件行为图是一个三元组
Figure 21435DEST_PATH_IMAGE001
,其中是顶点集合,表示执行路径中所有程序实体;
Figure 842946DEST_PATH_IMAGE003
是图中有向边集合,表示程序实体执行顺序;是有向边与标签的映射。有向边的标签表示程序实体间的3种控制流关系,分别为“调用”、“返回”和“转移”。收集所有成功与失败测试用例的执行信息,构建软件行为图,最终获得软件行为图集合
Figure 616310DEST_PATH_IMAGE005
2)软件行为图约简。针对执行步骤1)获取的每一个软件行为图,过滤软件行为图中与错误不相关的有向边,实现对软件行为图的约简。对
Figure 438772DEST_PATH_IMAGE005
中每一行为图,计算每一条有向边
Figure 33701DEST_PATH_IMAGE006
的错误相关系数
Figure 232602DEST_PATH_IMAGE007
,计算公式如下:
Figure 698218DEST_PATH_IMAGE008
其中,
Figure 691582DEST_PATH_IMAGE009
Figure 508228DEST_PATH_IMAGE010
分别表示包含
Figure 806092DEST_PATH_IMAGE006
的失败执行和成功执行个数,
Figure 329477DEST_PATH_IMAGE011
Figure 821638DEST_PATH_IMAGE012
分别表示所有失败执行与成功执行个数。当
Figure 63264DEST_PATH_IMAGE013
时,的值为真,表示有向边
Figure 44175DEST_PATH_IMAGE006
与错误相关;否则,
Figure 441659DEST_PATH_IMAGE007
值为假,表示
Figure 170580DEST_PATH_IMAGE006
与错误不相关。保留图中与错误相关的有向边,去除无关边,得到约简后的行为图,最终得到约简后的软件行为图集合
Figure 813176DEST_PATH_IMAGE014
3)分子种群初始化。程序状态上下文是程序实体执行序列,对状态上下文编码,定义分子结构(问题的解形式),然后定义解空间范围。根据步骤2)得到的约简后图集合
Figure 311154DEST_PATH_IMAGE014
,从
Figure 82801DEST_PATH_IMAGE014
中抽取出失败执行行为图集合
Figure 361335DEST_PATH_IMAGE015
,从
Figure 243841DEST_PATH_IMAGE015
中获取所有有向边集合
Figure 393062DEST_PATH_IMAGE016
,定义分子的结构为一个
Figure 835862DEST_PATH_IMAGE018
位二进制向量:
Figure 256479DEST_PATH_IMAGE019
其中,
Figure 289901DEST_PATH_IMAGE018
Figure 403350DEST_PATH_IMAGE016
中有向边个数,
Figure 328581DEST_PATH_IMAGE020
表示第
Figure 615206DEST_PATH_IMAGE021
条有向边是否与状态上下文有关。如果,则在这个解中,第条有向边属于状态上下文;如果
Figure 498214DEST_PATH_IMAGE023
,这个解中第条有向边不属于状态上下文。之后初始化
Figure 271577DEST_PATH_IMAGE018
个分子,每个分子只有一位为1,其他为0且分子之间1的位置互异,即每个分子只包含一条有向边。然后对每一个分子使用贪心算法将向量某一位置1,使得每个分子都能解释所有失败执行,即所有失败执行行为图都包含了至少一条在分子中被认为是属于状态上下文的有向边。最终获得
Figure 461250DEST_PATH_IMAGE018
个可行解,当种群分子个数
Figure 688969DEST_PATH_IMAGE024
大于
Figure 255080DEST_PATH_IMAGE018
,随机复制分子补充至个加入初始种群
Figure 714060DEST_PATH_IMAGE025
。当
Figure 101179DEST_PATH_IMAGE024
小于等于
Figure 533297DEST_PATH_IMAGE018
,选取适应度值高的个分子组成初始分子种群
Figure 805237DEST_PATH_IMAGE025
4)最优分子种群搜索。设置化学反应优化的参数,包括动能损失率、分子势能
Figure 649882DEST_PATH_IMAGE027
、分子动能
Figure 785197DEST_PATH_IMAGE028
及其初始值
Figure 753153DEST_PATH_IMAGE029
、单分子和多分子反应类型决定因子
Figure 413067DEST_PATH_IMAGE030
、分子反应决定因子
Figure 124671DEST_PATH_IMAGE031
、初始中央能量缓冲器
Figure 989859DEST_PATH_IMAGE032
,根据步骤3)得到初始分子种群
Figure 456612DEST_PATH_IMAGE025
,完成参数初始设定。设计分子
Figure 40041DEST_PATH_IMAGE017
的适应度值
Figure 86494DEST_PATH_IMAGE033
计算公式如下:
其中,
Figure 443843DEST_PATH_IMAGE011
为失败执行的数量,
Figure 514567DEST_PATH_IMAGE035
值表示能解释失败执行的数量,即如果一个失败执行行为图包含了至少一条在中假定属于状态上下文的有向边,则该失败执行能被
Figure 449266DEST_PATH_IMAGE017
解释,
Figure 804024DEST_PATH_IMAGE035
加1。
Figure 661121DEST_PATH_IMAGE036
是惩罚函数,如果一个成功执行行为图包含了至少一条
Figure 417725DEST_PATH_IMAGE017
中假定属于状态上下文的有向边,则
Figure 69286DEST_PATH_IMAGE036
加1。
Figure 176919DEST_PATH_IMAGE033
值越小表示分子中包含的有向边属于状态上下文的可能性越高。之后利用化学反应优化算法迭代搜索最优分子,执行一定次数的迭代,每次迭代执行一个初等反应,包括单分子无效碰撞、分解、多分子间无效碰撞以及合成。四种初等反应的算子设计如下:
(1)单分子无效碰撞。随机选取单个分子,随机选择分子中值为1的某位变为0;
(2)分解。随机选取单个分子,并随机选择其中某一位作为分解点,分解成两部分作为两个新分子的固定部分,新分子的空余部分随机置1或0;
(3)多分子间无效碰撞。随机选取两个分子,将一个分子中的某位与另一分子某位交换,生成两个新分子;
(4)合成。随机选取两个分子
Figure 684703DEST_PATH_IMAGE038
,将
Figure 772745DEST_PATH_IMAGE037
中值为1位替换为
Figure 39778DEST_PATH_IMAGE038
中对应位,生成分子
Figure 566575DEST_PATH_IMAGE039
, 将中值为1位替换为
Figure 25555DEST_PATH_IMAGE037
中对应位,生成分子
Figure 779884DEST_PATH_IMAGE040
,计算
Figure 579213DEST_PATH_IMAGE039
Figure 102598DEST_PATH_IMAGE040
适应度值,保留适应度值小的分子作为合成分子
Figure 532442DEST_PATH_IMAGE041
每次反应后计算所有分子的适应度值,
Figure 69341DEST_PATH_IMAGE024
大于反应后分子数,随机复制分子补充至
Figure 610044DEST_PATH_IMAGE024
组成新分子种群,
Figure 315831DEST_PATH_IMAGE024
小于等于反应后分子数,选取适应度值高的个分子组成新分子种群,新分子种群继续进行化学反应。任取分子种群中一个分子,若这个分子连续
Figure 442236DEST_PATH_IMAGE042
代适应度值不变,则达到反应终止条件,反应停止。
5)错误定位。根据步骤4)得到反应后的分子种群,计算每个分子的
Figure 521051DEST_PATH_IMAGE035
值,保留
Figure 81345DEST_PATH_IMAGE035
等于
Figure 587413DEST_PATH_IMAGE011
的分子,计算其适应度值由小到大排序,得到保留分子种群。依序对每个分子,抽取分子中位值为1的有向边获得有向边集合
Figure 803630DEST_PATH_IMAGE043
,将
Figure 577814DEST_PATH_IMAGE043
中拥有相同节点的有向边连接,最终得到与错误相关的完整程序状态上下文,提供给开发人员理解、定位与修复错误。
进一步,其中上述步骤1)的具体步骤如下:
步骤1)-1:开始状态;
步骤1)-2:对源程序插桩;
步骤1)-3:执行测试用例,收集每次执行程序路径信息;
步骤1)-4:根据执行路径信息构建软件行为图,得到全部行为图集合
步骤1)-5:软件行为图集合构建完毕。
进一步,其中上述步骤2)的具体步骤如下:
步骤2)-1:开始状态;
步骤2)-2:针对根据步骤1)得到的软件行为图中的每个图,计算其包含的每一条有向边
Figure 169835DEST_PATH_IMAGE006
的错误相关系数
Figure 151304DEST_PATH_IMAGE007
,计算公式如下:
其中,
Figure 534061DEST_PATH_IMAGE009
Figure 459292DEST_PATH_IMAGE010
分别表示包含
Figure 808233DEST_PATH_IMAGE006
的失败执行和成功执行个数,
Figure 135309DEST_PATH_IMAGE011
分别表示所有失败执行与成功执行个数。当
Figure 395969DEST_PATH_IMAGE013
时,
Figure 486284DEST_PATH_IMAGE007
值为
Figure 464605DEST_PATH_IMAGE045
表示有向边
Figure 919857DEST_PATH_IMAGE006
与错误相关;否则,
Figure 881997DEST_PATH_IMAGE007
值为
Figure 448107DEST_PATH_IMAGE046
表示与错误不相关;
步骤2)-3:有向边
Figure 733519DEST_PATH_IMAGE006
为true保留该有向边,否则删去该有向边,完成约简,组成
Figure 287177DEST_PATH_IMAGE014
步骤2)-4:软件行为图集合约简完毕。
进一步,其中上述步骤3)的具体步骤如下:
步骤3)-1:开始状态;
步骤3)-2:根据步骤2)获得
Figure 443352DEST_PATH_IMAGE014
,抽取失败行为图包含的有向边集合
Figure 302723DEST_PATH_IMAGE016
,定义分子
Figure 911559DEST_PATH_IMAGE017
结构为一个二进制向量;
其中,中有向边个数,
Figure 51499DEST_PATH_IMAGE020
表示第
Figure 294261DEST_PATH_IMAGE021
条有向边是否与状态上下文有关。如果
Figure 48197DEST_PATH_IMAGE022
,则第条有向边属于状态上下文;如果
Figure 832799DEST_PATH_IMAGE023
,第条有向边不属于状态上下文;
步骤3)-3:初始化个分子,每个分子只有一位置1,其余置0,且1位置互异;
步骤3)-4:对
Figure 502181DEST_PATH_IMAGE018
个分子采用贪心算法将某位不断置1,将
Figure 136687DEST_PATH_IMAGE018
个分子转化为个可行解;
步骤3)-5:判断
Figure 154508DEST_PATH_IMAGE018
个分子是否为可行解,若果是进入下一步,否则返回步骤3)-4;
步骤3)-6:按照种群分子个数
Figure 697484DEST_PATH_IMAGE024
Figure 989925DEST_PATH_IMAGE018
关系构造初始分子种群
步骤3)-7:分子种群初始化完毕。
进一步,其中上述步骤4)的具体步骤如下:
步骤4)-1:开始状态;
步骤4)-2:设置化学反应优化的参数,包括动能损失率
Figure 226795DEST_PATH_IMAGE026
、分子势能
Figure 878357DEST_PATH_IMAGE027
、分子动能及其初始值
Figure 944981DEST_PATH_IMAGE029
、单分子和多分子反应类型决定因子、分子反应决定因子
Figure 768766DEST_PATH_IMAGE031
、初始中央能量缓冲器
Figure 658969DEST_PATH_IMAGE032
,根据步骤3)得到的初始分子种群
Figure 716923DEST_PATH_IMAGE025
步骤4)-3:设计分子
Figure 385802DEST_PATH_IMAGE017
的适应度值
Figure 208527DEST_PATH_IMAGE033
计算公式如下:
Figure 697277DEST_PATH_IMAGE034
其中,
Figure 27764DEST_PATH_IMAGE011
为失败执行的数量,
Figure 551149DEST_PATH_IMAGE035
值表示
Figure 574469DEST_PATH_IMAGE017
能解释失败执行的数量,即如果一个失败执行行为图包含了至少一条在
Figure 400384DEST_PATH_IMAGE017
中假定属于状态上下文的有向边,则该失败执行能被
Figure 3404DEST_PATH_IMAGE017
解释,
Figure 381295DEST_PATH_IMAGE035
加1。是惩罚函数,如果一个成功执行行为图包含了至少一条中假定属于状态上下文的有向边,则
Figure 852094DEST_PATH_IMAGE036
加1;
步骤4)-4:化学反应确定反应类型,迭代搜索。随机生成单分子反应决定因子
Figure 412388DEST_PATH_IMAGE047
,如过
Figure 918456DEST_PATH_IMAGE048
执行单分子反应,否则执行多分子反应。对于单分子反应,如满足碰撞次数减去最少碰撞次数大于
Figure 698455DEST_PATH_IMAGE049
执行分解,否则执行单分子碰撞。对于多分子反应,如满足动能小于等于多分子反应决定因子,执行合成,否则执行分子间无效碰撞;
步骤4)-5:每次反应完成计算所有分子适应度值,
Figure 580961DEST_PATH_IMAGE050
小于反应后分子数目选取适应度值高的个分子继续反应;
Figure 938310DEST_PATH_IMAGE024
大于反应后分子数目随机复制分子补充种群继续反应。
步骤 4)-6:判断是否满足反应停止条件,如一个分子连续
Figure 376244DEST_PATH_IMAGE042
代适应度值不变,反应停止,否则回到步骤4)-4;
步骤4)-7:输出反应后分子种群
Figure 859178DEST_PATH_IMAGE025
步骤4)-8:化学反应优化搜索最优分子种群完毕。
进一步,其中上述步骤5)的具体步骤如下:
步骤5)-1:开始状态;
步骤5)-2:计算根据步骤4)得到的分子种群中每个分子的
Figure 66169DEST_PATH_IMAGE035
值,保留能解释所有失败执行的分子;
步骤5)-3:计算保留分子的适应度值,按照适应度值由小到大排序。
步骤5)-4:依序选取分子,抽取分子中值为1的有向边获得集合
Figure 179618DEST_PATH_IMAGE043
,连接
Figure 167166DEST_PATH_IMAGE043
中有相同顶点的有向边,得到完整程序状态上下文,提供给开发人员理解和定位错误;
步骤5)-5:错误定位完毕。
本发明基于化学反应优化搜索程序错误状态上下文,增进了对软件失效的理解,提高了错误定位的效率;收集程序执行路径,构建软件行为图,对行为图进行约简,利用化学反应优化搜索状态上下文,提供给开发人员进行错误定位。由此,理解执行失效原因,提高了软件错误定位的效率,进一步提升了程序调试效率。
附图说明
图1为本发明实施中的一种基于化学反应优化的错误定位方法的流程图。
图2为图1中软件行为图构建的流程图。
图3为图1中软件行为图约简的流程图。
图4为图1中分子种群初始化的流程图。
图5为图1中最优分子种群搜索的流程图。
图6为图1中错误定位的流程图。
具体实施方式
为进一步说明本发明技术内容,特举实施例并配合附图说明如下。
图1为本发明一种基于化学反应优化的错误定位方法的流程图。
一种基于化学反应优化的错误定位方法,其特征在于,包含以下步骤。
S1软件行为图构建,对待测程序插桩,执行给定的测试用例,搜集程序执行信息,构建每次执行的软件行为图,从而生成所有执行的软件行为图集合。
S2软件行为图约简,根据S1构建得到的软件行为图集合,计算集合中每个图包含的有向边的错误相关系数,保留每个图中错误相关系数值为真的有向边,完成约简,最终得到约简后的软件行为图集合。
S3分子种群初始化,根据S2得到的约简行为图集合,抽取失败行为图集合获得有向边集合,根据该集合确定分子结构与解空间,初始化多个分子后构造可行解,进而完成分子种群
Figure 391474DEST_PATH_IMAGE025
初始化。
S4最优分子种群搜索,设定化学反应优化的初始参数与适应度函数,使用根据S3初始化的分子种群进行四种初等反应,迭代搜索最优分子种群,满足反应终止条件则反应停止,获得反应后分子种群。
S5错误定位,根据S4得到反应后分子种群,计算所有分子解释失败执行数,保留能够解释所有失败执行的分子,计算其适应度值按升序排列,依序取每个分子获取有向边集合,连接拥有相同节点的有向边生成状态上下文,提供给开发人员进行错误定位。
图2为软件行为图构建的流程图。对源程序插桩,执行测试用例搜集程序执行路径信息,从而构建软件行为图结合。具体步骤如下。
步骤1:开始状态;步骤2:对源程序插桩;步骤3:执行所有测试用例收集程序执行路径信息;步骤4:由执行路径信息构建软件行为图集合
Figure 279402DEST_PATH_IMAGE005
;步骤5:软件行为图构建完毕。
图3为软件行为图约简的流程图。针对构建的软件行为图集合,计算集合中每个图包含有向边的错误相关系数,保留错误相关系数为真的有向边,完成约简,获取约简后行为图集合。具体步骤如下。
步骤1:开始状态;步骤2:计算图集合中每个图包含的向边的错误相关系数;步骤3:保留错误相关系数为真的有向边,生成约简后行为图集合;步骤4:软件行为图约简完毕。
图4为分子种群初始化的流程图。根据约简行为图,确定分子结构,初始化
Figure 563753DEST_PATH_IMAGE018
个分子转化为可行解,之后根据种群分子数
Figure 835334DEST_PATH_IMAGE024
构造初始分子种群完成初始化。具体步骤如下。
步骤1:开始状态;步骤2:根据约简后失败行为图的有向边集合确定分子结构;步骤3:初始化
Figure 863333DEST_PATH_IMAGE018
个分子;步骤4:采用贪心算法将每个分子转化为可行解;步骤5:判断是否转化为个可行解,若果满足进入下一步,否则返回步骤4;步骤6:根据种群分子数
Figure 562485DEST_PATH_IMAGE024
初始化分子种群POP;步骤7:分子种群初始化完毕。
图5为最优分子种群搜索的流程图。针对初始化的分子种群,采用化学反应优化迭代搜索最优分子群,从而获得反应后分子种群。具体步骤如下。
步骤1:开始状态;步骤2:设置化学反应优化参数;步骤3:设置分子适应度值计算公式;步骤4:确定分子反应类型进行四种初等反应迭代搜索;步骤5:反应后计算分子适应度值,根据
Figure 462308DEST_PATH_IMAGE024
调整分子种群;步骤6:判断反应停止条件,若果满足进入下一步,否则返回步骤4;步骤7:输出反应后分子种群;步骤8:最优分子种群搜索完毕。
图6为错误定位的流程图。根据反应后分子种群,保留能解释所有失败执行的分子,计算每个分子的适应度值,按照适应度由低到高升序排序,依次选取分子获取有向边集合,连接拥有相同节点的有向边生成状态上下文提供给开发人员进行错误定位。具体步骤如下。
步骤1:开始状态;步骤2:计算反应后分子种群中分子的
Figure 628289DEST_PATH_IMAGE035
值,保留解释所有失败执行的分子;步骤3:计算分子适应度值,升序排序;步骤4:依次选取分子,获取有向边集合,连接相同节点有向边,由此生成程序状态上下文提供给开发人员进行错误定位。
综上所述,本发明解决了错误定位方法定位错误缺少相关上下文信息导致难以理解执行失效的问题,不仅促进对软件失效的理解,更提高了程序调试的效率。

Claims (6)

1.一种基于化学反应优化的错误定位方法,其特征在于,针对给定的待测程序以及测试用例集合,为待测程序进行插桩,执行测试用例收集程序执行路径,构造软件行为图;在此基础上保留错误相关有向边,对软件行为图约简;然后抽取所有失败执行行为图有向边,定义化学反应优化算法分子结构和解空间,初始化反应分子种群;之后选取合适适应度函数利用化学反应优化算法迭代搜索获取最优分子种群;最终将最优分子种群中的分子转化为程序状态上下文理解程序执行失效原因,进而定位和修复错误;该方法包含以下步骤:
1)软件行为图构建,对待测程序插桩,执行测试用例获取程序执行路径,构建软件行为图,最终获得软件行为图集合
2)软件行为图约简,根据步骤1)得到的图集合
Figure 955008DEST_PATH_IMAGE002
中每一行为图,计算图中每一条有向边
Figure 93865DEST_PATH_IMAGE003
的错误相关系数
Figure 614976DEST_PATH_IMAGE004
,计算公式如下:
Figure 864692DEST_PATH_IMAGE006
式中分别表示包含
Figure 666667DEST_PATH_IMAGE003
的失败执行和成功执行个数,
Figure 923336DEST_PATH_IMAGE009
Figure 763116DEST_PATH_IMAGE010
分别表示所有失败执行与成功执行个数;当
Figure 915880DEST_PATH_IMAGE011
时,
Figure 208321DEST_PATH_IMAGE004
值为保留,否则去除
Figure 348949DEST_PATH_IMAGE003
,得到约简后行为图,输出约简后软件行为图集合
Figure 830484DEST_PATH_IMAGE013
3)分子种群初始化,根据步骤2)得到的约简后图集合
Figure 225693DEST_PATH_IMAGE013
,从中抽取出失败执行行为图集合
Figure 712169DEST_PATH_IMAGE014
,从中获取所有有向边集合,定义分子
Figure 4927DEST_PATH_IMAGE016
的结构为一个位二进制向量:
Figure 981028DEST_PATH_IMAGE019
其中,
Figure 443234DEST_PATH_IMAGE017
Figure 197563DEST_PATH_IMAGE015
中有向边个数,如果
Figure 606679DEST_PATH_IMAGE020
,则在这个解中,第条有向边属于状态上下文;如果
Figure 559908DEST_PATH_IMAGE022
,这个解中第
Figure 473638DEST_PATH_IMAGE021
条有向边不属于状态上下文;之后初始化个分子,每个分子只包含一条有向边属于状态上下文且互异;然后对每一个分子使用贪心算法将向量某一位置1,使得每个分子都能解释所有失败执行,即所有失败执行行为图都包含了至少一条在分子中被认为是属于状态上下文的有向边;最终获得
Figure 94030DEST_PATH_IMAGE017
个可行解,当种群分子个数
Figure 366879DEST_PATH_IMAGE023
大于
Figure 33484DEST_PATH_IMAGE017
,随机复制分子补充至
Figure 49981DEST_PATH_IMAGE023
个加入初始种群
Figure 547959DEST_PATH_IMAGE024
Figure 490245DEST_PATH_IMAGE023
小于等于
Figure 706462DEST_PATH_IMAGE017
,选取适应度值高的个分子组成初始分子种群
Figure 144714DEST_PATH_IMAGE024
4)最优分子种群搜索,设置化学反应优化的参数,设计分子
Figure 87262DEST_PATH_IMAGE016
的适应度值
Figure 197301DEST_PATH_IMAGE025
计算公式如下:
式中
Figure 613376DEST_PATH_IMAGE009
为失败执行的数量,值表示能解释失败执行的数量,即如果一个失败执行行为图包含了至少一条在
Figure 47003DEST_PATH_IMAGE016
中假定属于状态上下文的有向边,则该失败执行能被
Figure 577341DEST_PATH_IMAGE016
解释,加1;
Figure 884006DEST_PATH_IMAGE029
是惩罚函数,如果一个成功执行行为图包含了至少一条中假定属于状态上下文的有向边,则
Figure 201909DEST_PATH_IMAGE029
加1;之后化学反应优化迭代搜索最优分子群,执行一定次数的迭代,每次迭代执行一种初等反应,包括单分子无效碰撞、分解、多分子间无效碰撞以及合成;四种初等反应的算子设计如下:
(1)单分子无效碰撞,随机选取单个分子,随机选择分子中值为1的某位变为0;
(2)分解,随机选取单个分子,并随机选择其中某一位作为分解点,分解成两部分作为两个新分子的固定部分,新分子的空余部分随机置1或0;
(3)多分子间无效碰撞,随机选取两个分子,将一个分子中的某位与另一分子某位交换,生成两个新分子;
(4)合成,随机选取两个分子
Figure 657162DEST_PATH_IMAGE030
Figure 432351DEST_PATH_IMAGE031
,将中值为1位替换为
Figure 674031DEST_PATH_IMAGE031
中对应位,生成分子, 将
Figure 359407DEST_PATH_IMAGE031
中值为1位替换为
Figure 463629DEST_PATH_IMAGE030
中对应位,生成分子,计算
Figure 790760DEST_PATH_IMAGE032
Figure 399596DEST_PATH_IMAGE033
适应度值,保留适应度值小的分子作为合成分子
Figure 573089DEST_PATH_IMAGE034
每次反应后计算所有分子的适应度值,根据
Figure 521453DEST_PATH_IMAGE023
调整分子种群;判断反应停止条件,任取分子种群中一个分子,若这个分子连续
Figure 489409DEST_PATH_IMAGE035
代适应度值不变,反应停止否则继续反应;
5)错误定位,根据步骤4)得到反应后的分子种群,计算每个分子的
Figure 523224DEST_PATH_IMAGE028
值,保留
Figure 969249DEST_PATH_IMAGE028
等于
Figure 100016DEST_PATH_IMAGE009
的分子,计算其适应度值升序排序,得到保留分子种群;依序对每个分子,抽取分子中位值为1的有向边获得有向边集合
Figure 176556DEST_PATH_IMAGE036
,将
Figure 759985DEST_PATH_IMAGE036
中拥有相同节点的有向边连接,最终得到与错误相关的完整程序状态上下文,提供给开发人员理解、定位与修复错误。
2.根据权利要求1所述的基于化学反应优化的错误定位方法,其特征在于,在步骤1)中,软件行为图构建;通过程序插桩执行测试用例收集程序执行路径;通过软件行为图表示程序执行过程。
3.根据权利要求1所述的基于化学反应优化的错误定位方法,其特征在于,在步骤2)中,软件行为图约简;计算图中有向边的错误相关系数,保留系数为真的有向边,直到所有行为图都完成约简,获得约简后行为图集合。
4.根据权利要求1所述的基于化学反应优化的错误定位方法,其特征在于,在步骤3)中,分子种群初始化;抽取失败行为图中的有向边定义二维向量分子结构;初始化
Figure 445919DEST_PATH_IMAGE017
个分子并通过贪心算法转化为可行解构造初始分子种群。
5.根据权利要求1所述的基于化学反应优化的错误定位方法,其特征在于,在步骤4)中,最优分子种群搜索;设置化学反应优化参数,设计适应度值计算公式衡量分子中有向边属于状态上下文的可能性;设计四种初等反应操作算子,化学反应优化迭代搜索最优分子群,提高了搜索效率;设定了停止条件判断反应终止,利用适应度函数与种群分子数调整种群保证种群多样性。
6.根据权利要求1所述的基于化学反应优化的错误定位方法,其特征在于,在步骤5)中,错误定位;保留解释所有失败执行的分子,提高准确性;计算分子适应度值对分子升序排序,选取最优解;连接分子中拥有相同节点的有向边生成状态上下文,提供了失效产生的上下文信息。
CN201810823017.5A 2018-07-25 2018-07-25 一种基于化学反应优化的错误定位方法 Active CN110764989B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810823017.5A CN110764989B (zh) 2018-07-25 2018-07-25 一种基于化学反应优化的错误定位方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810823017.5A CN110764989B (zh) 2018-07-25 2018-07-25 一种基于化学反应优化的错误定位方法

Publications (2)

Publication Number Publication Date
CN110764989A true CN110764989A (zh) 2020-02-07
CN110764989B CN110764989B (zh) 2021-05-18

Family

ID=69326851

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810823017.5A Active CN110764989B (zh) 2018-07-25 2018-07-25 一种基于化学反应优化的错误定位方法

Country Status (1)

Country Link
CN (1) CN110764989B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112099528A (zh) * 2020-09-18 2020-12-18 中国航空无线电电子研究所 基于化学反应优化算法的制导方法
CN114416570A (zh) * 2022-01-20 2022-04-29 哈尔滨工业大学 基于加权软件行为图的等价变异体检测方法
EP4139853A4 (en) * 2020-04-20 2023-08-16 Zapata Computing, Inc. COMPUTER SYSTEM AND METHOD FOR SOLVING A POOLING PROBLEM AS UNRESTRICTED BINARY OPTIMIZATION

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005020899A1 (de) * 2005-05-04 2006-11-16 Siemens Ag Verfahren und Vorrichtung zur Messung der Testabdeckung bei Multithreading-Programmen
CN105468517A (zh) * 2015-11-10 2016-04-06 中国矿业大学 一种基于黑盒测试用例约简的统计错误定位方法
CN107330245A (zh) * 2017-06-02 2017-11-07 湖南创星科技股份有限公司 一种实数编码化学反应智能优化算法
CN107911478A (zh) * 2017-12-06 2018-04-13 武汉理工大学 基于化学反应优化算法的多用户计算卸载方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005020899A1 (de) * 2005-05-04 2006-11-16 Siemens Ag Verfahren und Vorrichtung zur Messung der Testabdeckung bei Multithreading-Programmen
CN105468517A (zh) * 2015-11-10 2016-04-06 中国矿业大学 一种基于黑盒测试用例约简的统计错误定位方法
CN107330245A (zh) * 2017-06-02 2017-11-07 湖南创星科技股份有限公司 一种实数编码化学反应智能优化算法
CN107911478A (zh) * 2017-12-06 2018-04-13 武汉理工大学 基于化学反应优化算法的多用户计算卸载方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
郑光勇,徐雨明,李肯立,孙士兵: "《一种混合化学反应优化算法求解最小顶点覆盖问题》", 《计算机应用研究》 *
陆凯,姜淑娟,王兴亚: "《结合图挖掘和支持向量机的错误定位*》", 《计算机科学与探索》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4139853A4 (en) * 2020-04-20 2023-08-16 Zapata Computing, Inc. COMPUTER SYSTEM AND METHOD FOR SOLVING A POOLING PROBLEM AS UNRESTRICTED BINARY OPTIMIZATION
CN112099528A (zh) * 2020-09-18 2020-12-18 中国航空无线电电子研究所 基于化学反应优化算法的制导方法
CN112099528B (zh) * 2020-09-18 2023-02-28 中国航空无线电电子研究所 基于化学反应优化算法的制导方法
CN114416570A (zh) * 2022-01-20 2022-04-29 哈尔滨工业大学 基于加权软件行为图的等价变异体检测方法
CN114416570B (zh) * 2022-01-20 2024-05-28 哈尔滨工业大学 基于加权软件行为图的等价变异体检测方法

Also Published As

Publication number Publication date
CN110764989B (zh) 2021-05-18

Similar Documents

Publication Publication Date Title
CN110764989B (zh) 一种基于化学反应优化的错误定位方法
Corno et al. GATTO: A genetic algorithm for automatic test pattern generation for large synchronous sequential circuits
Hinton et al. PRISM: A tool for automatic verification of probabilistic systems
CN106503368A (zh) 一种基于故障机理相关的多状态系统可靠性建模方法
CN105868116A (zh) 基于语义变异算子的测试用例生成和优化方法
CN104765683B (zh) 基于moea/d算法的回归测试用例多目标优化方法
CN102750223B (zh) 一种基于面向对象程序切片谱的错误定位方法
CN105868106A (zh) 超声设备可靠性的测试方法及测试系统
CN109783496A (zh) 基于Excel&VBA的数据收集和处理自动化工具及使用方法
CN112364352A (zh) 可解释性的软件漏洞检测与推荐方法及系统
CN112181420B (zh) 基于强化学习的编译器缺陷定位方法
Oster et al. Automatic test data generation by multi-objective optimisation
Ioannides et al. Feedback-based coverage directed test generation: An industrial evaluation
CN108228187A (zh) 一种数值程序的全局优化方法
CN115576840A (zh) 基于机器学习的静态程序插桩检测方法及装置
Yang et al. Bidirectional implementation of Markov/CCMT for dynamic reliability analysis with application to digital I&C systems
Cabasino et al. A comparison among tools for the diagnosability of discrete event systems
Goings et al. An ecology-based evolutionary algorithm to evolve solutions to complex problems
CN103455417A (zh) 一种基于马尔可夫模型的软件错误定位系统及错误定位方法
CN112948193A (zh) 一种基于差异测试的fpga综合工具缺陷检测方法
DeLaVina Some history of the development of Graffiti
CN116578475A (zh) 一种代码校验方法、装置、设备及可读存储介质
Mohapatra et al. Minimizing test cases to reduce the cost of regression testing
CN113887452B (zh) 基于相关性矩阵的故障诊断优化方法
CN114064472B (zh) 基于代码表示的软件缺陷自动修复加速方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant