[发明专利]一种冗余变异体识别方法有效
申请号: | 201710329693.2 | 申请日: | 2017-05-11 |
公开(公告)号: | CN107247663B | 公开(公告)日: | 2020-05-08 |
发明(设计)人: | 孙昌爱;郭新玲 | 申请(专利权)人: | 北京科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京市广友专利事务所有限责任公司 11237 | 代理人: | 张仲波 |
地址: | 100083*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 冗余 异体 识别 方法 | ||
1.一种冗余变异体识别方法,其特征在于,包括:
对待测程序源代码进行程序块的划分,根据程序块划分结果生成规则文件;
比较变异体与待测程序源代码,获取每个变异体的变异位置及变异内容,并根据每个变异体的变异位置和生成的规则文件,确定每个变异体所属的块类别;
对待测程序源代码进行数据流分析,获取待测程序的数据流信息,结合获取的待测程序的数据流信息,对获取的每个变异体的变异内容上的变量进行分析,确定变异体的变异类型;其中,所述数据流信息包括:每个变量的定义-使用链;
根据确定的变异体所属的块类别和变异体的变异类型,按照预先定义的冗余变异体识别规则,分析待测程序的每条定义-使用链,获取满足冗余变异体识别规则的变异体并标记为冗余变异体;
其中,给定待测程序源代码p,变异体m1、m2,测试用例集ts,若对∈ts,都有则变异体m2是相对变异体m1的冗余变异体,记作其中,t表示测试用例;m1(t)、p(t)、m2(t)分别表示测试用例t在变异体m1、待测程序源代码p、变异体m2上的执行结果;
其中,所述冗余变异体识别规则包括:
若对变量v的一个定义-使用链du(v,s1,s2),当变异算子在变量定义s1处生成变异体集合Mdef,变异算子作用在变量使用s2处生成变异体集合Muse,且s1和s2处于同一个基本块时,Muse是Mdef的冗余变异体;
其中,所述冗余变异体识别规则包括:
若对变量v的一个定义-使用链du(v,s1,s2),当变异算子在变量定义s1处生成变异体集合Mdef,变异算子作用在变量使用s2处生成变异体集合Muse,且s2所处的基本块是s1所处基本块的任意个上层块的某个顺接块时,Muse是Mdef的冗余变异体;
其中,所述冗余变异体识别规则包括:
若待测程序中存在含有变量v的函数调用,Sm→n为函数m调用函数n的调用语句,变量v在函数n的变量使用s2处使用,且在使用前没有对v的变量定义,则对变量v的一个定义-使用链du(v,Sm→n,s2),当变异算子作用在函数调用语句Sm→n上生成变异体集合Mm→n,变异算子作用在变量使用s2上生成变异体集合Muse,且变量使用s2所处的基本块没有上层块时,Muse是Mm→n的冗余变异体;
其中,所述冗余变异体识别规则包括:
若Sprintf表示待测程序中没有变量的输出语句,变异算子作用在谓词表达式φ上生成变异体集合Mφ,变异算子作用在Sprintf上生成变异体集合Mprintf,则当谓词表达式φ所处的选择块或循环块是Sprintf所处的基本块的上层块时,Mprintf是Mφ的冗余变异体。
2.根据权利要求1所述的冗余变异体识别方法,其特征在于,所述对待测程序源代码进行程序块的划分,根据程序块划分结果生成规则文件包括:
根据预先确定的基本块、选择块和循环块的定义,对待测程序源代码进行程序块的划分,根据程序块划分结果生成规则文件。
3.根据权利要求1或2所述的冗余变异体识别方法,其特征在于,一个待测程序对应一个规则文件,一个规则文件包含多条分块规则;
每条分块规则描述了相应程序块在待测程序源代码中的入口行数与出口行数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京科技大学,未经北京科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710329693.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:软件缺陷检测方法及装置
- 下一篇:一种面向开源软件的协同行为测度方法