[发明专利]一种基于程序频谱的多缺陷定位方法有效
申请号: | 201810906860.X | 申请日: | 2018-08-10 |
公开(公告)号: | CN109165159B | 公开(公告)日: | 2021-10-01 |
发明(设计)人: | 金福生;王茹楠;蔡天倚;王树良 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/00;G06N3/12 |
代理公司: | 北京正阳理工知识产权代理事务所(普通合伙) 11639 | 代理人: | 鲍文娟 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种基于程序频谱的多缺陷定位方法,属于软件安全技术领域。包括以下步骤:步骤一:构造待缺陷定位检测的程序频谱;步骤二:对多缺陷定位问题建模,即构建候选缺陷分布种群,具体为使用二进制序列表示步骤一得到的待缺陷定位检测的程序频谱;步骤三:使用遗传算法对步骤二构建的候选缺陷分布种群的解空间进行搜索,得到用于定位的最优种群;步骤四:对步骤三得到的最优种群中的候选缺陷个体的怀疑值排序,得出最终的怀疑值排名。本发明通过对多缺陷定位问题进行建模,并使用遗传算法得到函数怀疑值列表,能够对程序中的多缺陷同时定位;通过基于程序频谱的多缺陷定位方法以及遗传算法,有效提高了多缺陷的定位效率以及定位准确率。 | ||
搜索关键词: | 一种 基于 程序 频谱 缺陷 定位 方法 | ||
【主权项】:
1.一种基于程序频谱的多缺陷定位方法,其特征在于:包括以下步骤:步骤一:构造待缺陷定位检测的程序频谱,具体为:首先采用面向切面编程的方法,获得待缺陷定位检测的程序中所有函数调用序列的信息;再根据得到的所有函数调用序列的信息,通过执行测试用例,得到K个待缺陷定位检测的程序频谱;其中,每个程序频谱均由n个程序实体构成;步骤二:对多缺陷定位问题建模,即构建候选缺陷分布种群,具体为使用二进制序列表示步骤一得到的待缺陷定位检测的程序频谱;其中,候选缺陷分布种群,记为R;R包含V个候选缺陷分布个体,其中第i个候选缺陷分布个体记为ri,且表示ri的二进制序列记为该个体的染色体,称ri为染色体为{0,1,0,...,0},其中,每一位二进制数字表示一个基因,0表示对应位置的程序实体没有缺陷,1表示对应位置的程序实体有缺陷,0及1的个数,即ri包含的基因个数为n;步骤三:使用遗传算法对步骤二构建的候选缺陷分布种群的解空间进行搜索,得到用于定位的最优种群,具体包括以下子步骤:步骤3.1遍历步骤二得到的候选缺陷种群中的每个个体,依次计算每个个体解释失败测试用例的能力;其中,记候选缺陷种群中第t个个体rt解释失败测试用例的能力为φ(rt),φ(rt)的计算方法如公式(1)所示:其中,λ表示示性函数;M表示测试用例对于程序实体的覆盖矩阵;覆盖矩阵M中的元素Mij表示第i个测试用例在执行过程中是否经过了第j个程序实体,若经过了Mij=1,否则Mij=0;|TF|t是候选缺陷分布个体rt在执行测试用例中未通过的测试用例的数量;rtj表示的是种群R中第t个候选缺陷分布个体rt的第j个程序实体的基因;步骤3.2设定用于多缺陷定位的种群规模大小并使用贪心算法对步骤二构建的基于程序频谱的候选分布种群的解空间进行优化,得到贪心算法优化后的种群;其中,多缺陷定位的种群规模大小,记为Np;贪心算法采用Additional‑Greedy算法;得到的新的种群,记为C={c1,c2,...cNp},此新的种群的个体数量为Np;步骤3.2,具体包括如下子步骤:步骤3.2.1初始化新的种群,记为C,其中种群C中的个体初始化为空值;此新的种群C用于存储经过贪心算法优化输出的种群;步骤3.2.2判断步骤3.1得到的φ(rt)与该候选缺陷分布个体rt与|TF|t是否相等,若相等则将该候选缺陷分布个体rt添加到种群C中,若不相等,则将该候选缺陷分布个体rt位置的染色体中位置ex上为0的基因置1,并将得到的新的个体添加到种群C中;其中,位置ex确定一次的具体方式为:依次将rt中基因为0的位置置为1,每次仅操作一个基因,并根据公式(1)计算rt中被置1的那个基因的缺陷个体的解释失败测试用例的能力φ,记录当前个体以及当前置1的位置,计算后重置候选缺陷分布个体为rt;步骤3.2.3重复步骤3.2.2中位置ex的置1及重置操作,直到rt中所有的0都曾被置为1;步骤3.2.4重复步骤3.2.2至步骤3.2.3,直到种群C中的个体数量等于设定的值Np,步骤3.2.4得到的种群称为贪心算法优化后的种群;步骤3.3计算种群C中的每一个候选缺陷分布个体的惩罚函数,计算方法如公式(2):其中,ck是种群C中第k个候选缺陷分布个体,P(ck)表示ck的惩罚函数,ckj表示的是种群C中第k个候选缺陷分布个体的第j个程序实体的基因;步骤3.4计算种群C中每一个候选缺陷分布个体的适应度函数,即Multi怀疑值,具体计算方法如公式(3)所示:其中,*表示的是指数计算;步骤3.5设置参数G表示从候选缺陷种群中的所有个体选择的个体的数目,采用轮盘赌方式,选择出适应度高的G个个体,组成完成选择后的种群;步骤3.6设置交换概率参数pc,pc表示两个染色体的同一个位置上的基因状态交换的概率;采用交叉洗牌方式,按照此概率参数pc对步骤3.5完成选择后的新种群中的每两条父染色体进行交叉操作,得到两个子代染色体;步骤3.7重复步骤3.6的操作,直到对步骤3.5完成选择后的新种群中的所有个体交叉完毕,所有交叉后得到的新个体组成完成交叉后的新种群;步骤3.8对步骤3.7完成交叉操作后得到的种群中的每个个体进行变异操作,得到变异后的种群,具体包括如下子步骤:步骤3.8.1设定基因‘0’变为‘1’的概率为PM1,基因‘1’变为‘0’的概率为PM2,并计算每个个体染色体中,基因为‘1’的基因数量num;步骤3.8.2设定缺陷程序实体阈值参数Line,比较步骤3.8.1中得到num与Line的大小关系;如果num大于Line,则当前个体的染色体中的基因中的‘1’按照PM2的概率变为‘0’;如果num小于Line,则当前个体染色体中的基因中的‘0’按照PM1的概率变为‘1’;得到完成变异后的种群;步骤3.9按照公式(3)分别计算步骤3.8得到的变异后种群中所有个体的怀疑值,以及步骤3.2中的贪心算法优化后的种群中所有个体的怀疑值;再对两个种群中所有的个体的怀疑值进行排序,选择出怀疑值最大的Np个个体组成用于定位的最优种群,将其他个体淘汰;步骤四:对步骤三得到的最优种群中的候选缺陷个体的怀疑值排序,得出最终的怀疑值排名;其中,怀疑值排名越靠前的个体如果在一个个体中,有超过一个程序实体被认定为有缺陷,即该位置的基因为‘1’,那么就需要进一步查看种群中其他缺陷分布个体的情况,如果其他排名高的个体也认定该位置的程序实体有缺陷,则该程序实体排名更加靠前。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201810906860.X/,转载请声明来源钻瓜专利网。