[发明专利]一种基于蚁群算法的软件缺陷定位方法及装置有效

专利信息
申请号: 201910041810.4 申请日: 2019-01-16
公开(公告)号: CN111444078B 公开(公告)日: 2023-02-07
发明(设计)人: 曹鹤玲;邓淼磊;王宪勇;苗建雨;费选;靳小波;宋炯炯;薛正元;许德刚;赵玉娟;杨静;徐振强 申请(专利权)人: 河南工业大学
主分类号: G06F11/36 分类号: G06F11/36;G06N3/006
代理公司: 郑州睿信知识产权代理有限公司 41119 代理人: 吴敏
地址: 450001 河南省郑*** 国省代码: 河南;41
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 算法 软件 缺陷 定位 方法 装置
【权利要求书】:

1.一种基于蚁群算法的软件缺陷定位方法,其特征在于,包括以下步骤:

构建蚁群搜索图,该蚁群搜索图包括N层,N等于缺陷程序的可执行语句数,每层设置有两个节点,一个节点表示执行对应的可执行语句,另一个节点表示不执行对应的可执行语句,且每一层中的每个节点与该层下一层中的每个节点均连通;

初始化蚁群搜索图中所有路径的信息素浓度;

构造用于揭示缺陷分布能力的适应度函数,所述适应度函数FitOchiai(C)为:FitOchiai(C)=σ(C)×(Tf×(σ(C)+ψ(C)))-1/2,其中,C代表路径,Tf代表失败测试数据的数量,σ(C)代表路径C与失败测试数据执行轨迹的重合度,ψ(C)代表路径C与成功测试数据执行轨迹的重合度;

将M只蚂蚁置于所述蚁群搜索图的第一层的其中一个节点位置处,进行搜索,根据当前节点与下一层两个节点之间的信息素浓度,选择信息素浓度较高的路径对应的节点,在移动之后通过调整局部信息素挥发系数来更新该路径上的信息素浓度,在M只蚂蚁完成对所有层的搜索之后,形成M条长度为N的路径,利用所述适应度函数分别计算这M条路径的适应度值,并根据M条路径的适应度值选取当前最优路径集;判断是否满足迭代终止条件,若不满足迭代终止条件,则通过调整全局信息素挥发系数来更新当前最优路径集中各最优路径上的信息素浓度,并进行下一轮的搜索,直至满足迭代终止条件,得到最终最优路径集;其中,所述满足迭代终止条件为达到设定的迭代次数;

统计最终最优路径集中各最优路径中的可执行语句出现的次数,选取次数大于设定次数的可执行语句作为缺陷语句。

2.根据权利要求1所述的基于蚁群算法的软件缺陷定位方法,其特征在于,所述在移动之后通过调整局部信息素挥发系数来更新该路径上的信息素浓度,对应的信息素浓度更新公式为:τ(Vk,Vk+1)=ατ(Vk,Vk+1)+(1-α)τ0,其中,τ(Vk,Vk+1)为路径(k,k+1)上的信息素浓度,α为局部信息素挥发系数,τ0为路径初始信息素浓度。

3.根据权利要求1所述的基于蚁群算法的软件缺陷定位方法,其特征在于,所述通过调整全局信息素挥发系数来更新当前最优路径集中各最优路径上的信息素浓度,对应的信息素浓度更新公式为:τ(Vk,Vk+1)=ρτ(Vk,Vk+1)+(1-ρ)Δτ(Vk,Vk+1),其中,τ(Vk,Vk+1)为路径(k,k+1)上的信息素浓度,ρ为全局信息素挥发系数,Δτ(Vk,Vk+1)为路径(k,k+1)上信息素浓度的增量,Δτ(Vk,Vk+1)=1/Hopt,Hopt为当前最优路径的适应度值。

4.根据权利要求1所述的基于蚁群算法的软件缺陷定位方法,其特征在于,在不满足迭代终止条件时,若连续设定轮次得到的最优路径集中各最优路径的适应度值均没有增大,则降低局部信息素挥发系数和全局信息素挥发系数,并重新进行下一轮搜索。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于河南工业大学,未经河南工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201910041810.4/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top