[发明专利]一种基于黄金分割搜索及软件执行轨迹的条件切片方法有效
申请号: | 201710530045.3 | 申请日: | 2017-06-30 |
公开(公告)号: | CN107391124B | 公开(公告)日: | 2020-06-16 |
发明(设计)人: | 李必信;张欢;王璐璐 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 柏尚春 |
地址: | 210000 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于黄金分割搜索及软件执行轨迹的条件切片方法,根据给定的一阶谓词逻辑集,在符合条件的区间内,根据黄金分割搜索法选取变量值作为程序动态运行的输入,通过程序多次运行的执行轨迹集合计算得到相应的语句覆盖集,以此为基础,结合程序的静态切片,计算得到程序的条件切片。由于该方法不需要程序的全局分析,提高了效率,且空间复杂度较低,此外程序的执行轨迹获取方便,不受程序类型的影响,使得该方法可应用于过程间、面向对象、并发程序。 | ||
搜索关键词: | 一种 基于 黄金分割 搜索 软件 执行 轨迹 条件 切片 方法 | ||
【主权项】:
一种基于黄金分割搜索及软件执行轨迹的条件切片方法,其特征在于,该方法包括如下步骤:步骤1)对源代码进行插装,得到运行时能够产生执行轨迹的带探针的程序;步骤2)通过黄金分割搜索法选取符合一阶谓词逻辑集的变量值,具体方法为:在满足一阶逻辑限定的取值范围内,选取待分割的区间,通过黄金分割搜索法取点的方式得到变量的值,作为程序运行的输入;步骤3)获取执行轨迹,配置执行所述步骤1)得到的带探针的程序,运行的过程中产生实时运行轨迹,运行完成后得到此次程序运行的执行轨迹;步骤4)利用下式计算语句覆盖集,然后选取当前变量值与左邻接变量值作为右区间端点和左区间端点值,得到新的变量区间:statementsi+1=statementsi∪ti+1其中,i表示执行轨迹的编号,statementsi+1为前i+1次程序运行所得的语句覆盖集,statementsi为前i次程序运行所得的语句覆盖集,ti+1为第i+1次程序运行的轨迹;如果所述语句覆盖集发生更新,则将新的变量区间加入待分割区间集合中,然后返回步骤2);若覆盖集未发生更新,则按照如下方式设定所述新的变量区间黄金分割的次数α:如果新的变量区间所在的父级区间之前设定过α值,则令α=α‑1,如果α不变为0,则直接返回步骤2);如果α变为0,则舍弃该新的变量区间,此时如果待分割区间以及待执行变量均为空,则语句覆盖集计算完成,进入步骤5),否则返回步骤2);如果新的变量区间所在的父级区间之前没有设定过α值,则计算与左邻接执行轨迹的语句覆盖集差异,然后以所述语句覆盖集差异,根据下式设定新的变量区间的α值:αj,i+1=diffj,i+1sj∪si+1*β+1]]>其中j和i+1表示选取变量的编号,αj,i+1表示执行路径j与i+1的分割次数值,用以进一步验证该区间是否还会对语句覆盖集产生影响,diffj,i+1表示两者执行轨迹的不同集所对应的语句覆盖数,sj∪si+1表示两者执行轨迹的语句覆盖总数,β是设定的指数,根据对路径覆盖的精度需求进行调整;步骤5)计算条件切片,具体流程为:a)通过解析源代码的抽象语法树获取代码中相应的节点信息,提取各个节点间的依赖关系,构建完整的程序依赖图;b)以所述程序依赖图为基础,结合源代码执行静态切片算法,获取静态切片staticSlice;c)结合静态切片staticSlice和语句覆盖集statements,利用下式计算程序的条件切片:conditionedSlice=staticSlice∩statements。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710530045.3/,转载请声明来源钻瓜专利网。