基于加权软件行为图的等价变异体检测方法技术

技术编号:33291465 阅读:64 留言:0更新日期:2022-05-01 00:11
本发明专利技术公开了一种基于加权软件行为图的等价变异体检测方法,首先解析原始程序和变异体的源代码,进行语句级插桩,为后续执行时捕获执行路径奠定基础。其次,分别运行原始程序和变异体,在相同的输入下,如果变异体的输出与原始程序的输出不一致,这类变异体一定是不等价的,直接排除,否则可能是等价的,继续后续处理。最后,逐一对比相同输入下变异体和原始程序的加权软件行为图,如果在任一输入下二者不相等,则该变异体与原始程序不等价,如果在全部输入下二者始终相等,则该变异体等价于原始程序。该方法既能够像人工判定时一样准确追踪程序的内部执行行为,提高等价变异体判断的准确性,又能够减少人工判定成本,提高等价变异体检测的效率。异体检测的效率。异体检测的效率。

【技术实现步骤摘要】
基于加权软件行为图的等价变异体检测方法


[0001]本专利技术属于计算机软件测试领域,涉及一种自动检测等价变异体的方法,具体涉及一种基于加权软件行为图的等价变异体检测方法。

技术介绍

[0002]变异测试是一种基于错误的测试方法。该方法通过向原始程序植入简单的语法变更来模拟编程错误,从而得到原始程序的变异体。在给定测试集下运行原始程序和变异体,如果变异体的运行结果与原始程序的不同,则称该变异体被杀死,否则称该变异体存活。测试集能够杀死某变异体,就表明它能够检测到该变异体模拟的编程错误。被杀死的变异体占全部非等价变异体的比例称为变异得分。变异得分越高,则表示测试集能够检测到的编程错误越多,也就是说测试集的测试充分性越好。
[0003]等价变异体是一种特殊的变异体,它在任何输入数据下,都会与原始程序有相同的输出。这种变异体不能够代表编程错误,在计算变异得分时要被去除。但等价性的判定是异常困难的。当前普遍认为,人工判定是最准确的。
[0004]变异体可被杀死的三个条件分别是可达性、感染性和传播性。即发生变异的语句确实可被执行,该变异确本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于加权软件行为图的等价变异体检测方法,其特征在于所述方法包括如下步骤:步骤1:利用静态分析工具解析原始程序和变异体程序的源代码,生成各源代码的抽象语法树,在抽象语法树上实施语句级插桩后反向生成带探针语句的原始程序和变异体程序;步骤2:执行带探针语句的原始程序和变异体程序,获得程序的执行结果和语句编号序列,对比变异体的执行结果和原始程序的执行结果,将变异体划分为“杀死的”和“存活的”两类,其中,被杀死的变异体一定与原始程序不等价,在后面的步骤中忽略;存活的变异体可能与原始程序等价,在后面的步骤中继续处理;步骤3:分别为原始程序和变异体程序生成加权软件行为图;步骤4:对比原始程序的加权软件行为图与变异体程序的加权软件行为图,从而判断变异体是否等价于原始程序。2.根据权利要求1所述的基于加权软件行为图的等价变异体检测方法,其特征在于所述步骤1的具体步骤如下:步骤11:词法和语法解析源代码,得到以抽象语法树表达的源代码结构信息,同时记录下源代码中每条语句所在的行号;步骤12:先序遍历抽象语法树,识别语句类型,在可执行语句位置插入输出语句行号的探针语句节点;步骤13:插入输出文件流变量定义、打开、关闭语句节点;步骤14:将插入探针语句节点的抽象语法树反向生成源代码。3.根据权利要求1所述的基于加权软件行为图的等价变异体检测方法,其特征在于所述步骤3中,加权软件行为图的具体构造步骤如下:步骤31:遍历程序执行后得到的包含m个语句编号的轨迹序列trace={s1,s2,...,s
i
‑1,s
i
,...,s
m
},相邻的两个元素s
i
‑1,s
i
意...

【专利技术属性】
技术研发人员:苏小红龚丹王甜甜张彦航
申请(专利权)人:哈尔滨工业大学
类型:发明
国别省市:

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

1