CN111444078B - 一种基于蚁群算法的软件缺陷定位方法及装置 - Google Patents
一种基于蚁群算法的软件缺陷定位方法及装置 Download PDFInfo
- Publication number
- CN111444078B CN111444078B CN201910041810.4A CN201910041810A CN111444078B CN 111444078 B CN111444078 B CN 111444078B CN 201910041810 A CN201910041810 A CN 201910041810A CN 111444078 B CN111444078 B CN 111444078B
- Authority
- CN
- China
- Prior art keywords
- pheromone
- optimal path
- path
- ant colony
- defect
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种基于蚁群算法的软件缺陷定位方法及装置,属于软件测试技术领域。该方法包括:构建蚁群搜索图;初始化蚁群搜索图中所有路径的信息素浓度;构造用于揭示缺陷分布能力的适应度函数;将M只蚂蚁置于所述蚁群搜索图的第一层的其中一个节点位置处进行搜索,搜索完成后形成M条长度为N的路径,根据M条路径的适应度值选取当前最优路径集;选取满足迭代终止条件时的最优路径集作为最终最优路径集;统计最终最优路径集中各最优路径中的可执行语句出现的次数,选取次数大于设定次数的可执行语句作为缺陷语句。本发明采用蚁群算法,将软件缺陷定位问题转换为基于搜索的求最优解问题,进而求得缺陷程序中的缺陷语句位置,缺陷定位效果较好。
Description
技术领域
本发明涉及一种基于蚁群算法的软件缺陷定位方法及装置,属于软件测试技术领域。
背景技术
随着软件复杂性的增加,软件中包含的缺陷类型和缺陷所在位置呈现多样化,使得缺陷定位环境变得愈加复杂,这给多缺陷定位技术的研究带来了很大的困难。针对软件多缺陷定位问题,一般的处理方法为:根据测试数据的执行结果将缺陷程序划分为不同部分,随后通过开发人员人工检查代码,手动确定缺陷位置,该方法不仅消耗大量时间,而且需要花费较多的人力。
为了解决上述问题,公告号为CN104317707B的发明专利文件,公开了一种基于程序结构影响感知的软件错误定位方法,该方法基于可疑度函数,计算每条语句的可疑度值,然后根据可疑度值从大到小对语句进行排序,根据此顺序对程序语句逐条排查,定位程序中的错误。在实际使用该方法过程中,发现软件错误定位效果较差。
发明内容
本发明的目的是提供一种基于蚁群算法的软件缺陷定位方法及装置,用以解决现有技术中的软件错误定位方法的定位效果差的问题。
为实现上述目的,本发明提供了一种基于蚁群算法的软件缺陷定位方法,包括以下步骤:
构建蚁群搜索图,该蚁群搜索图包括N层,N等于缺陷程序的可执行语句数,每层设置有两个节点,一个节点表示执行对应的可执行语句,另一个节点表示不执行对应的可执行语句,且每一层中的每个节点与该层下一层中的每个节点均连通;
初始化蚁群搜索图中所有路径的信息素浓度;
构造用于揭示缺陷分布能力的适应度函数;
将M只蚂蚁置于所述蚁群搜索图的第一层的其中一个节点位置处,进行搜索,根据当前节点与下一层两个节点之间的信息素浓度,选择信息素浓度较高的路径对应的节点,在移动之后通过调整局部信息素挥发系数来更新该路径上的信息素浓度,在M只蚂蚁完成对所有层的搜索之后,形成M条长度为N的路径,利用所述适应度函数分别计算这M条路径的适应度值,并根据M条路径的适应度值选取当前最优路径集;判断是否满足迭代终止条件,若不满足迭代终止条件,则通过调整全局信息素挥发系数来更新当前最优路径集中各最优路径上的信息素浓度,并进行下一轮的搜索,直至满足迭代终止条件,得到最终最优路径集;其中,所述满足迭代终止条件为达到设定的迭代次数;
统计最终最优路径集中各最优路径中的可执行语句出现的次数,选取次数大于设定次数的可执行语句作为缺陷语句。
本发明还提供了一种基于蚁群算法的软件缺陷定位装置,包括存储器和处理器,所述处理器用于运行存储在所述存储器中的程序指令,以实现如下方法:
构建蚁群搜索图,该蚁群搜索图包括N层,N等于缺陷程序的可执行语句数,每层设置有两个节点,一个节点表示执行对应的可执行语句,另一个节点表示不执行对应的可执行语句,且每一层中的每个节点与该层下一层中的每个节点均连通;
初始化蚁群搜索图中所有路径的信息素浓度;
构造用于揭示缺陷分布能力的适应度函数;
将M只蚂蚁置于所述蚁群搜索图的第一层的其中一个节点位置处,进行搜索,根据当前节点与下一层两个节点之间的信息素浓度,选择信息素浓度较高的路径对应的节点,在移动之后通过调整局部信息素挥发系数来更新该路径上的信息素浓度,在M只蚂蚁完成对所有层的搜索之后,形成M条长度为N的路径,利用所述适应度函数分别计算这M条路径的适应度值,并根据M条路径的适应度值选取当前最优路径集;判断是否满足迭代终止条件,若不满足迭代终止条件,则通过调整全局信息素挥发系数来更新当前最优路径集中各最优路径上的信息素浓度,并进行下一轮的搜索,直至满足迭代终止条件,得到最终最优路径集;其中,所述满足迭代终止条件为达到设定的迭代次数;
统计最终最优路径集中各最优路径中的可执行语句出现的次数,选取次数大于设定次数的可执行语句作为缺陷语句。
本发明的基于蚁群算法的软件缺陷定位方法及装置的有益效果是:采用蚁群算法,将软件缺陷定位问题转换为基于搜索的求最优解问题,进而求得缺陷程序中的缺陷语句位置,缺陷定位效果较好,并且,即使在缺陷程序中的缺陷类型和缺陷数量较多时,也能取得较好的缺陷定位效果。
为了更精确地求解路径的适应度值,以便根据路径的适应度值控制蚂蚁搜索的路径使其不断靠近最优路径,提高软件缺陷定位方法的效率,作为对上述基于蚁群算法的软件缺陷定位方法及装置的一种改进,所述适应度函数FitOchiai(C)为:FitOchiai(C)=σ(C)×(Tf×(σ(C)+ψ(C)))-1/2,其中,C代表路径,Tf代表失败测试数据的数量,σ(C)代表路径C与失败测试数据执行轨迹的重合度,ψ(C)代表路径C与成功测试数据执行轨迹的重合度。
为了更精确地完成局部信息素浓度的更新,作为对上述基于蚁群算法的软件缺陷定位方法及装置的另一种改进,所述在移动之后通过调整局部信息素挥发系数来更新该路径上的信息素浓度,对应的信息素浓度更新公式为:τ(Vk,Vk+1)=ατ(Vk,Vk+1)+(1-α)τ0,其中,τ(Vk,Vk+1)为路径(k,k+1)上的信息素浓度,α为局部信息素挥发系数,τ0为路径初始信息素浓度。
为了更精确地完成当前最优路径集中各最优路径上的信息素浓度的更新,作为对上述基于蚁群算法的软件缺陷定位方法及装置的又一种改进,所述通过调整全局信息素挥发系数来更新当前最优路径集中各最优路径上的信息素浓度,对应的信息素浓度更新公式为:τ(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为当前最优路径的适应度值。
为了解决软件缺陷定位方法执行后期,因路径多样性丢失使方法陷入局部最优的问题,作为对上述基于蚁群算法的软件缺陷定位方法及装置的进一步改进,在不满足迭代终止条件时,若连续设定轮次得到的最优路径集中各最优路径的适应度值均没有增大,则降低局部信息素挥发系数和全局信息素挥发系数,并重新进行下一轮搜索。
附图说明
图1是本发明的基于蚁群算法的软件缺陷定位方法流程图;
图2-1是图1中步骤S1的流程图;
图2-2是N=5时蚁群搜索图的节点连通示意图;
图3是图1中步骤S2的流程图;
图4是图1中步骤S3的流程图;
图5是图1中步骤S4的流程图;
图6是图1中步骤S5的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例对本发明进行进一步详细说明。
基于蚁群算法的软件缺陷定位方法实施例:
结合图1-图6,本实施例的基于蚁群算法的软件缺陷定位方法,包括以下5个步骤,具体为:
步骤S1:通过缺陷程序的测试数据覆盖信息和执行结果,初始化蚁群搜索图和路径信息素浓度。
其中,缺陷程序的测试数据覆盖信息包含了测试数据在缺陷程序执行过程中的执行轨迹,即其所经过的语句和这些语句的执行频次,由于失败测试数据(即执行结果为失败的测试数据)的执行轨迹必然包含缺陷语句位置,所以利用缺陷程序的失败测试数据覆盖信息初始化蚁群搜索图和路径信息素浓度,能够较好地排除非缺陷语句位置带来的影响,使得蚂蚁能够更快的搜索到最优路径。
如图2-1所示,步骤S1的详细步骤如下:
步骤1):开始状态;
步骤2):通过测试数据覆盖信息,得到失败测试数据的执行轨迹和缺陷程序的可执行语句数;
步骤3):根据得到的缺陷程序的可执行语句数,构建蚁群搜索图,设缺陷程序的可执行语句数为N,则蚁群搜索图包括N层(即一层对应一个可执行语句),每层设置有两个节点,一个节点表示执行对应的可执行语句,另一个节点表示不执行对应的可执行语句,则节点数为2N,有向边数为4N,由此构建一个分层结构的蚁群搜索图,且该图每一层中的每个节点与该层下一层中的每个节点均连通;
步骤4):给蚁群搜索图中所有路径的信息素浓度赋上一个大小相等的初值,该初值通常设置为一个较小的常数;
步骤5):将失败测试数据执行轨迹的开始位置与蚁群搜索图的入口相对应,按照失败测试数据执行轨迹中二进制值顺序选择图中节点,每一层只选择一个节点,并利用局部信息素浓度更新公式更新所经路径上的信息素浓度,以完成蚁群搜索图中路径信息素浓度的初始化。
本实施例中,利用失败测试数据执行轨迹初始化路径信息素浓度,能够较好地排除非缺陷语句位置带来的影响,使得蚂蚁能够更快的搜索到最优路径;作为其他实施方式,也可以仅利用步骤4)完成对路径信息素浓度的初始化。
步骤S2:初始化蚂蚁于蚁群搜索图中入口节点位置并开始搜索,搜索完成后形成的每一条完整的搜索路径即为一个假设缺陷分布(也称候选缺陷分布)。
蚂蚁被设计成具有记忆功能的个体,能够记录自己目前位置以及从入口节点到结束节点之间形成的路径,从入口节点开始,蚂蚁按照规则移动N步,N为缺陷程序的可执行语句数,这样蚂蚁移动完成后形成的路径即为一组长度为N的二进制串,该二进制串可以看作一个假设缺陷分布。
如图3所示,步骤S2的详细步骤如下:
步骤1):开始状态;
步骤2):初始化M只蚂蚁于蚁群搜索图的入口(即蚁群搜索图的第一层的其中一个节点位置)处,开始进行搜索;
步骤3):蚂蚁判断下一层两个节点与当前节点之间分别形成的路径的信息素浓度,若左分支的信息素浓度大于右分支的信息素浓度,则选择左分支移动,反之,选择右分支移动(以图2-2中所示的方位为例,如果蚂蚁的当前节点为第1层中的节点0,那么下一层两个节点分别为第2层中的节点0和节点1,此时第1层中的节点0和第2层中的节点1之间形成的路径01为左分支,第1层中的节点0和第2层中的节点0之间形成的路径00为右分支)。这里通过增加随机扰动性来防止方法陷入局部最优,具体为:设置一个扰动计数器r和一个常数q,当蚂蚁连续r次选择左分支时(r一般设置为3),即进行一次扰动判断,此时生成一个随机数w,当随机数w的值小于q时,才继续选择左分支,否则选择右分支;
步骤4):移动之后通过调整局部信息素挥发系数对所经路径上的信息素浓度进行更新,对应的信息度浓度更新公式(即局部信息素浓度更新公式)为:
τ(Vk,Vk+1)=ατ(Vk,Vk+1)+(1-α)τ0
式中,τ(Vk,Vk+1)为路径(k,k+1)上的信息素浓度,α为局部信息素挥发系数,τ0为路径初始信息素浓度,其中,路径(k,k+1)指蚂蚁所经过的蚁群搜索图中相邻两层(例如第k层和第k+1层)的节点之间形成的某条路径(以图2-2为例,蚁群搜索图中第1层和第2层的节点之间形成四条路径,分别为路径00、路径01、路径11和路径10,蚂蚁完成第1层到第2层的搜索后,仅经过这四条路径中的其中一条,具体是哪条路径要根据蚂蚁是否经过确定)。
步骤5):每只蚂蚁都要进行N次搜索,在M只蚂蚁完成对蚁群搜索图所有层的搜索之后,形成M条长度为N的路径(即M个假设缺陷分布)。
N=5时蚁群搜索图的节点连通示意图,如图2-2所示:节点0代表执行对应的可执行语句,节点1代表不执行对应的可执行语句。例如当某只蚂蚁搜索完成后形成的搜索路径为01001时,表明:第1条、第3条、第4条可执行语句没有被执行,第2条、第5条可执行语句被执行,该二进制串01001即为一个假设缺陷分布。
步骤S3:通过改进的怀疑度计算公式,构造揭示缺陷分布能力的适应度函数。
其中,适应度函数用于控制蚂蚁的搜索路径,使其搜索路径逐渐靠近最优路径,适应度函数主要展示了当前路径与最优路径之间的差距,也就是当前解与最优解之间的距离。
如图4所示,步骤S3的详细步骤如下:
步骤1):起始状态;
步骤2):获取失败测试数据的数量Tf;
步骤3):构造计算候选缺陷分布与测试数据相似性的解释函数,包括σ(C)和ψ(C),其中,σ(C)为候选缺陷分布C(即路径C)与失败测试数据执行轨迹的重合度,ψ(C)为候选缺陷分布C(即路径C)与成功测试数据执行轨迹的重合度;
步骤4):依据扩展语句怀疑度计算公式Ochiai(s)的形式,构造出揭示缺陷分布能力的适应度函数FitOchiai(C),具体公式如下:
FitOchiai(C)=σ(C)×(Tf×(σ(C)+ψ(C)))-1/2
其中,扩展语句怀疑度计算公式Ochiai(s)为:
式中,nef(s)表示覆盖程序实体s的失败测试数据的数量,对应于FitOchiai(C)中的σ(C)部分;nep(s)表示覆盖程序实体s的成功测试数据数量,对应于FitOchiai(C)中的ψ(C)部分;nf表示测试套件中针对缺陷程序的所有失败测试数据数量,对应于FitOchiai(C)中的Tf部分。
步骤S4:在适应度函数的控制下,蚂蚁的搜索路径不断靠近最优路径,最终得到的最优路径即为一个缺陷分布,同时注意迭代次数,若不满足迭代终止条件(即没有达到设定的迭代次数)则继续路径搜索,反之则结束。
如图5所示,步骤S4的详细步骤如下:
步骤1):起始状态;
步骤2):根据适应度函数计算利用步骤S2得到的M条路径的适应度值;
步骤3):选出当前最优路径集(例如从M条路径中选取适应度值大于设定值的所有路径得到当前最优路径集);
步骤4):判断是否满足迭代终止条件;
步骤5):若不满足迭代终止条件,则通过调整全局信息素挥发系数来更新当前最优路径集中各最优路径上的信息素浓度,从而使这些路径在下一次迭代中能够被更多的蚂蚁选择,缩短向最优路径靠近的时间,然后,判断是否连续V次得到的最优路径集中各最优路径的适应度值均没有增大,如果是,则降低局部信息素挥发系数α和全局信息素挥发系数ρ,使得蚂蚁在搜索时能探索到更多未探索的区域,以解决方法执行后期,路径多样性丢失,方法陷入局部最优的问题,并进行下一轮的搜索;
其中,更新当前最优路径集中各最优路径上的信息素浓度时,对应的信息素浓度更新公式为:
τ(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为当前最优路径的适应度值,其中,路径(k,k+1)指蚂蚁所经过的蚁群搜索图中相邻两层(例如第k层和第k+1层)的节点之间形成的某条路径(以图2-2为例,蚁群搜索图中第1层和第2层的节点之间形成四条路径,分别为路径00、路径01、路径11和路径10,蚂蚁完成第1层到第2层的搜索后,仅经过这四条路径中的其中一条,具体是哪条路径要根据蚂蚁是否经过确定)。
步骤6):若满足迭代终止条件,则收集该当前最优路径集作为最终最优路径集。
步骤S5:在步骤S4中求得最终最优路径集,通过对该集合中缺陷位置信息的提取,得到缺陷语句位置以及出现次数,最后根据缺陷语句的出现次数排序并映射到程序缺陷的真实位置。
如图6所示,步骤S5的详细步骤如下:
步骤1):起始状态;
步骤2):根据得到的最终最优路径集提取实体信息,即提取最终最优路径集中各最优路径中的可执行语句;
步骤3):根据实体在解集中出现的次数排序,即根据可执行语句出现的次数对可执行语句进行排序;
步骤4):将排序结果映射为程序缺陷的真实位置,即将出现次数大于设定次数的可执行语句作为缺陷语句,然后将缺陷语句映射到缺陷程序中,得到其在缺陷程序中的真实位置;
步骤5):软件缺陷定位结束。
例如:若N=5时,得到的最终最优路径集合为{01001,10110,10101},那么统计最终最优路径集中各最优路径中的可执行语句出现的次数时,得到的结果为:第一条可执行语句出现次数为2,第二条可执行语句出现次数为1,第三条可执行语句出现次数为2,第四条可执行语句出现次数为1,第五条可执行语句出现次数为2,此时若将出现次数大于1次的可执行语句作为缺陷语句,那么缺陷语句分别为第一条、第三条和第五条可执行语句。
基于蚁群算法的软件缺陷定位装置实施例:
本发明的基于蚁群算法的软件缺陷定位装置,包括存储器和处理器,处理器用于运行存储在存储器中的程序指令,以实现本发明的基于蚁群算法的软件缺陷定位方法,具体方法参见基于蚁群算法的软件缺陷定位方法实施例,此处不再赘述。
Claims (8)
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所述的基于蚁群算法的软件缺陷定位方法,其特征在于,在不满足迭代终止条件时,若连续设定轮次得到的最优路径集中各最优路径的适应度值均没有增大,则降低局部信息素挥发系数和全局信息素挥发系数,并重新进行下一轮搜索。
5.一种基于蚁群算法的软件缺陷定位装置,其特征在于,包括存储器和处理器,所述处理器用于运行存储在所述存储器中的程序指令,以实现如下方法:
构建蚁群搜索图,该蚁群搜索图包括N层,N等于缺陷程序的可执行语句数,每层设置有两个节点,一个节点表示执行对应的可执行语句,另一个节点表示不执行对应的可执行语句,且每一层中的每个节点与该层下一层中的每个节点均连通;
初始化蚁群搜索图中所有路径的信息素浓度;
构造用于揭示缺陷分布能力的适应度函数,所述适应度函数FitOchiai(C)为:FitOchiai(C)=σ(C)×(Tf×(σ(C)+ψ(C)))-1/2,其中,C代表路径,Tf代表失败测试数据的数量,σ(C)代表路径C与失败测试数据执行轨迹的重合度,ψ(C)代表路径C与成功测试数据执行轨迹的重合度;
将M只蚂蚁置于所述蚁群搜索图的第一层的其中一个节点位置处,进行搜索,根据当前节点与下一层两个节点之间的信息素浓度,选择信息素浓度较高的路径对应的节点,在移动之后通过调整局部信息素挥发系数来更新该路径上的信息素浓度,在M只蚂蚁完成对所有层的搜索之后,形成M条长度为N的路径,利用所述适应度函数分别计算这M条路径的适应度值,并根据M条路径的适应度值选取当前最优路径集;判断是否满足迭代终止条件,若不满足迭代终止条件,则通过调整全局信息素挥发系数来更新当前最优路径集中各最优路径上的信息素浓度,并进行下一轮的搜索,直至满足迭代终止条件,得到最终最优路径集;其中,所述满足迭代终止条件为达到设定的迭代次数;
统计最终最优路径集中各最优路径中的可执行语句出现的次数,选取次数大于设定次数的可执行语句作为缺陷语句。
6.根据权利要求5所述的基于蚁群算法的软件缺陷定位装置,其特征在于,所述在移动之后通过调整局部信息素挥发系数来更新该路径上的信息素浓度,对应的信息素浓度更新公式为:τ(Vk,Vk+1)=ατ(Vk,Vk+1)+(1-α)τ0,其中,τ(Vk,Vk+1)为路径(k,k+1)上的信息素浓度,α为局部信息素挥发系数,τ0为路径初始信息素浓度。
7.根据权利要求5所述的基于蚁群算法的软件缺陷定位装置,其特征在于,所述通过调整全局信息素挥发系数来更新当前最优路径集中各最优路径上的信息素浓度,对应的信息素浓度更新公式为:τ(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为当前最优路径的适应度值。
8.根据权利要求5所述的基于蚁群算法的软件缺陷定位装置,其特征在于,在不满足迭代终止条件时,若连续设定轮次得到的最优路径集中各最优路径的适应度值均没有增大,则降低局部信息素挥发系数和全局信息素挥发系数,并重新进行下一轮搜索。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910041810.4A CN111444078B (zh) | 2019-01-16 | 2019-01-16 | 一种基于蚁群算法的软件缺陷定位方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910041810.4A CN111444078B (zh) | 2019-01-16 | 2019-01-16 | 一种基于蚁群算法的软件缺陷定位方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111444078A CN111444078A (zh) | 2020-07-24 |
CN111444078B true CN111444078B (zh) | 2023-02-07 |
Family
ID=71648462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910041810.4A Active CN111444078B (zh) | 2019-01-16 | 2019-01-16 | 一种基于蚁群算法的软件缺陷定位方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111444078B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685320B (zh) * | 2021-01-09 | 2023-04-25 | 北京信息科技大学 | 一种基于多候选程序的软件缺陷修复方法及装置 |
CN115080402B (zh) * | 2022-06-22 | 2023-04-18 | 河南工业大学 | 一种基于鲸鱼优化算法的软件缺陷定位方法及处理装置 |
CN116089317B (zh) * | 2023-04-10 | 2023-06-27 | 江西财经大学 | 基于路径相似表与个体迁移的多路径测试方法与系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102573027A (zh) * | 2011-12-21 | 2012-07-11 | 北京邮电大学 | 基于蚁群优化的离散功率控制方法 |
CN104317707A (zh) * | 2014-10-15 | 2015-01-28 | 中国科学院软件研究所 | 一种基于程序结构影响感知的软件错误定位方法 |
CN104820636A (zh) * | 2015-04-09 | 2015-08-05 | 北京轩宇信息技术有限公司 | 一种并行的基于蚁群算法的测试用例序列生成方法 |
CN105760954A (zh) * | 2016-02-15 | 2016-07-13 | 南通大学 | 一种基于改进蚁群算法的泊车系统路径规划方法 |
CN106650074A (zh) * | 2016-12-14 | 2017-05-10 | 桂林电子科技大学 | 一种基于遗传蚁群融合算法的数字微流控芯片灾难性故障测试方法 |
CN108508745A (zh) * | 2018-01-22 | 2018-09-07 | 中国铁道科学研究院通信信号研究所 | 一种多目标测试序列集优化生成方法 |
CN109214498A (zh) * | 2018-07-10 | 2019-01-15 | 昆明理工大学 | 基于搜索集中度和动态信息素更新的蚁群算法优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301473B (zh) * | 2017-06-12 | 2018-06-15 | 合肥工业大学 | 基于改进遗传算法的同类平行机批调度方法及系统 |
-
2019
- 2019-01-16 CN CN201910041810.4A patent/CN111444078B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102573027A (zh) * | 2011-12-21 | 2012-07-11 | 北京邮电大学 | 基于蚁群优化的离散功率控制方法 |
CN104317707A (zh) * | 2014-10-15 | 2015-01-28 | 中国科学院软件研究所 | 一种基于程序结构影响感知的软件错误定位方法 |
CN104820636A (zh) * | 2015-04-09 | 2015-08-05 | 北京轩宇信息技术有限公司 | 一种并行的基于蚁群算法的测试用例序列生成方法 |
CN105760954A (zh) * | 2016-02-15 | 2016-07-13 | 南通大学 | 一种基于改进蚁群算法的泊车系统路径规划方法 |
CN106650074A (zh) * | 2016-12-14 | 2017-05-10 | 桂林电子科技大学 | 一种基于遗传蚁群融合算法的数字微流控芯片灾难性故障测试方法 |
CN108508745A (zh) * | 2018-01-22 | 2018-09-07 | 中国铁道科学研究院通信信号研究所 | 一种多目标测试序列集优化生成方法 |
CN109214498A (zh) * | 2018-07-10 | 2019-01-15 | 昆明理工大学 | 基于搜索集中度和动态信息素更新的蚁群算法优化方法 |
Non-Patent Citations (3)
Title |
---|
Study on Power Transformer Fault Test Sequence Optimization Based on Multi-colony Ant Colony Algorithm;Luyuan Wei,Xia Cui;《2011 Third International Conference on Intelligent Human-Machine Systems and Cybernetics》;20111010;全文 * |
基于三目标搜索的测试用例集约简方法;张妍等;《计算机工程》;20160315(第03期);全文 * |
自动程序修复方法研究述评;王赞等;《计算机学报》;20170728(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111444078A (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111444078B (zh) | 一种基于蚁群算法的软件缺陷定位方法及装置 | |
Di Mattia et al. | A survey on gans for anomaly detection | |
CN101866317B (zh) | 一种基于聚类分析的回归测试用例选择方法 | |
CN110502447B (zh) | 一种基于图的回归测试用例优先排序方法 | |
CN115687115B (zh) | 一种移动应用程序自动化测试方法及系统 | |
CN114416421B (zh) | 一种代码缺陷的自动定位与修复方法 | |
CN109146847B (zh) | 一种基于半监督学习的晶圆图批量分析方法 | |
CN110222387B (zh) | 基于混合漏积分crj网络的多元钻井时间序列预测方法 | |
CN114936158B (zh) | 一种基于图卷积神经网络的软件缺陷定位方法 | |
CN107408522A (zh) | 使用高维变量选择模型确定关键参数 | |
CN116932384A (zh) | 一种基于特征融合和特征选择的软件缺陷预测方法 | |
CN112710310A (zh) | 一种视觉语言室内导航方法、系统、终端及应用 | |
CN112668809A (zh) | 建立自闭症儿童康复效果预测模型的方法、预测自闭症儿童康复效果的方法及系统 | |
CN112712169A (zh) | 基于图卷积的全残差深度网络的模型建立方法及应用 | |
CN113779988A (zh) | 一种通信领域过程类知识事件抽取方法 | |
CN115081484A (zh) | 基于crj-oselm算法的航空发动机传感器故障诊断方法 | |
CN112965894B (zh) | 一种基于上下文感知的缺陷定位方法 | |
CN110825642A (zh) | 一种基于深度学习的软件代码行级缺陷检测方法 | |
CN108228232B (zh) | 一种针对程序中循环问题的自动修复方法 | |
CN114153735A (zh) | 一种基于频谱技术和断言切换技术的缺陷定位方法 | |
CN110554952B (zh) | 一种基于搜索的分层回归测试数据生成方法 | |
CN116992362A (zh) | 一种基于夏普利值的变压器故障表征特征量筛选方法和装置 | |
CN113077458B (zh) | 一种遥感影像中的云和阴影检测方法及系统 | |
CN104615535A (zh) | 一种基于扩展的数据流模型来生成测试用例的方法与装置 | |
CN112181420B (zh) | 基于强化学习的编译器缺陷定位方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |