[发明专利]一种基于程序频谱的多缺陷定位方法有效
申请号: | 201810906860.X | 申请日: | 2018-08-10 |
公开(公告)号: | CN109165159B | 公开(公告)日: | 2021-10-01 |
发明(设计)人: | 金福生;王茹楠;蔡天倚;王树良 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/00;G06N3/12 |
代理公司: | 北京正阳理工知识产权代理事务所(普通合伙) 11639 | 代理人: | 鲍文娟 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 程序 频谱 缺陷 定位 方法 | ||
本发明涉及一种基于程序频谱的多缺陷定位方法,属于软件安全技术领域。包括以下步骤:步骤一:构造待缺陷定位检测的程序频谱;步骤二:对多缺陷定位问题建模,即构建候选缺陷分布种群,具体为使用二进制序列表示步骤一得到的待缺陷定位检测的程序频谱;步骤三:使用遗传算法对步骤二构建的候选缺陷分布种群的解空间进行搜索,得到用于定位的最优种群;步骤四:对步骤三得到的最优种群中的候选缺陷个体的怀疑值排序,得出最终的怀疑值排名。本发明通过对多缺陷定位问题进行建模,并使用遗传算法得到函数怀疑值列表,能够对程序中的多缺陷同时定位;通过基于程序频谱的多缺陷定位方法以及遗传算法,有效提高了多缺陷的定位效率以及定位准确率。
技术领域
本发明涉及一种基于程序频谱的多缺陷定位方法,特别涉及使用遗传算法解决多缺陷定位的问题,属于软件安全技术领域。
背景技术
航空、航天、医疗、高铁等安全关键领域对于软件的安全性及可靠性有着非常高的要求,这些领域中一旦发生未预料到的故障,往往会造成巨大的损失并产生很大的负面影响。因此,如何在软件部署在生产环境之前,甚至在软件刚刚开发完成时发现软件中潜藏的缺陷显得十分重要。
程序频谱作为一种有效描述程序运行特征的方式,被广泛应用于软件缺陷定位方面。对于确实测试不通过的测试用例,当这个存在的缺陷被修改前后,该测试用例的程序频谱有差异的可能性更大。生成程序频谱所需要观测的程序实体类型主要有语句、函数、谓词、数据等,其固有属性可以包括该程序实体是否被覆盖过、在覆盖路径上出现的位置、具体的被覆盖次数等。目前主流的根据程序频谱进行缺陷定位的方法,其不同之处在于程序频谱中需要采集的程序实体信息以及程序实体的定义。有些程序频谱构造时只需要简单的统计程序实体在程序的测试用例中的覆盖情况,这是轻量级的程序频谱构造方式;有些重量级的分析程序频谱方式则需要统计程序实体之间的数据流关系、控制流图以及程序函数之间的依赖等信息,从而构建复杂的程序频谱。目前轻量级的程序频谱构造方式占据主流,因为轻量级程序频谱构造方式不需要过多的依赖程序的各项信息,使用起来更为方便。
动态定位方法是一类重要的软件缺陷定位方法,动态定位主要要求算法在定位前先调用被测程序执行大量测试用例,通过统计测试用例在执行通过和未通过测试用例时经过程序实体的情况来进行后续的缺陷定位,进而得到程序实体的缺陷怀疑值排序。然而,现有的动态缺陷定位方法往往忽略了一个程序中含有多个缺陷的情况,从而导致在进行缺陷定位时,与多个故障函数相联系的函数其缺陷怀疑值比故障函数本身更高。
发明内容
本发明的目的在于针对现有软件缺陷定位方法忽略程序中的多个缺陷情况,导致定位准确率低和效率低的技术现状,提出了一种基于程序频谱的多缺陷定位方法。
本发明的核心思想是:先对基于程序频谱的多缺陷定位问题进行建模,再采用遗传算法得到程序的怀疑值列表,即改进了已有的缺陷定位方法并且使用遗传算法确定最终的缺陷位置,实现对程序的多缺陷进行定位。
一种基于程序频谱的多缺陷定位方法,包括以下步骤:
步骤一:构造待缺陷定位检测的程序频谱,具体为:
首先采用面向切面编程的方法,获得待缺陷定位检测的程序中所有函数调用序列的信息;再根据得到的所有函数调用序列的信息,通过执行测试用例,得到K个待缺陷定位检测的程序频谱;
其中,每个程序频谱均由n个程序实体构成;
步骤二:对多缺陷定位问题建模,即构建候选缺陷分布种群,具体为使用二进制序列表示步骤一得到的待缺陷定位检测的程序频谱;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810906860.X/2.html,转载请声明来源钻瓜专利网。