CN113590474B - 一种并行程序顽固变异体的判定方法及系统 - Google Patents
一种并行程序顽固变异体的判定方法及系统 Download PDFInfo
- Publication number
- CN113590474B CN113590474B CN202110785914.3A CN202110785914A CN113590474B CN 113590474 B CN113590474 B CN 113590474B CN 202110785914 A CN202110785914 A CN 202110785914A CN 113590474 B CN113590474 B CN 113590474B
- Authority
- CN
- China
- Prior art keywords
- variant
- statement
- intractable
- execution
- execution sequence
- 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/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- 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/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开公开了一种并行程序顽固变异体的判定方法,其特征在于,包括:根据变异语句的执行状况,对变异语句的发送节点执行顺序进行等价类划分;确定影响变异体顽固性的因素;根据影响变异体顽固性的因素,结合等价类划分后的发送节点执行顺序对因素的影响,计算变异体的顽固性复合指标;设置阈值,与所述顽固性复合指标比较,完成顽固变异体的判定;本公开将并行程序的理念与变异测试原理相结合,根据发送节点执行顺序与影响变异体顽固性因素之间的联系,筛选出并行程序的顽固变异体,对顽固变异体着重测试,进而提高测试效率。
Description
技术领域
本公开属于计算机软件测试技术领域,尤其涉及一种并行程序顽固变异体的判定方法及系统。
背景技术
本部分的陈述仅仅是提供了与本公开相关的背景技术信息,不必然构成在先技术。
软件测试是提高软件质量的重要途径;为了对软件进行测试,通常需要准备一定数量的测试数据,称为测试数据集;测试数据集的充分性是提高软件测试的可信度关键前提;评价某测试数据集的充分性,往往通过对被测软件实施变异测试来实现;实施变异测试的过程如下:首先,对原程序依据一定规则,某个语句进行符合语法的微小变动,得到的新程序称为变异体,所依据的规则叫做变异算子;然后,采用相同的输入,分别执行原程序和变异体,如果这两个程序的输出或者某中间状态不同,则称该输入杀死了变异体;除了用于评价测试数据集的充分性,变异测试还被用于测试数据生成、缺陷检测等;如何提高变异测试效率是近年来软件测试领域的热点问题;顽固变异体是影响变异测试效率的重要因素;顽固变异体的有效判定和杀死顽固变异体测试数据的快速生成是提高变异测试效率的关键途径之一。
并行程序,是指含有两个或者以上并行执行流程的程序;分布存储并行程序指每个流程拥有各自独立的存储器,程序执行过程中,流程之间的交互主要以消息传递的方式实现;通过多流程并行执行和相互通信,并行程序能够实现较高的求解速度和精度,已经广泛应用于科学研究和生产生活中,如天气预报、邮件过滤以及病毒分析等;具体地讲,除了具有一般串行程序的特点以外,并行、通信和不确定性是分布存储并行程序的主要特征,也给分布存储并行程序的变异测试带来了挑战;为了改进变异测试效率,研究该类程序的顽固变异测试理论和方法是十分有意义的,目前还不存在分布存储并行程序顽固变异体判定的方法,严重影响了变异测试在分布存储并行程序的应用。
发明内容
本公开为了解决上述问题,提出了一种并行程序顽固变异体的判定方法及系统;本公开将并行程序的理念与变异测试原理相结合,根据发送节点执行顺序与影响变异体顽固性因素之间的联系,筛选出并行程序的顽固变异体,可通过对顽固变异体着重测试,进而提高测试效率。
第一方面,本公开提供了一种并行程序顽固变异体的判定方法,包括:
根据变异语句的执行状况,对变异语句的发送节点执行顺序进行等价类划分;
确定影响变异体顽固性的因素;
根据影响变异体顽固性的因素,结合等价类划分后的发送节点执行顺序对因素的影响,计算变异体的顽固性复合指标;
设置阈值,与所述顽固性复合指标比较,完成顽固变异体的判定。
进一步的,根据变异语句中的变量确定变异语句的执行状况;
结合通信依赖对变异语句相关变量集合中变量的影响,对变异语句发送节点执行顺序进行等价类划分;根据发送节点执行顺序是否影响变异语句的执行,将发送节点执行顺序划分为影响变异语句执行的发送节点执行顺序集合和不影响变异语句执行的发送节点执行顺序集合;
根据任意程序输入下,变异语句执行状况不同,对影响变异语句执行的发送节点执行顺序集合进行分类;
所述变异语句相关变量集合,是指变异语句中的所有变量以及数据依赖的变量;所述通信依赖,是指由流程之间的通信导致变量之间的依赖关系。
进一步的,将变异语句的可达概率、变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性作为确定影响变异体顽固性的因素;
所述可达概率是指反映变异语句的可达性;所述变异算子的属性是指变异算子对变异语句执行状态的影响;所述变异语句与流程的相关性反映变异语句相关的流程数。
进一步的,计算变异体的顽固性复合指标包括基于单个路径计算变异体的顽固性复合指标和基于多个路径计算变异体的顽固性复合指标。
进一步的,基于单个路径计算变异体的顽固性复合指标包括:
变异语句相关变量集合中的元素不受发送语句执行顺序影响时,发送语句执行顺序对于变异语句的可达概率、变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性均没有影响,变异语句的可达性作为影响变异体顽固性的首要条件;可达概率为1时,顽固性复合指标取决变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性;
变异语句相关变量集合中的元素受发送语句执行顺序影响时,发送节点执行顺序不影响变异语句的执行,在任何程序输入下,执行任何一条可执行路径,均无法到达变异语句,可达概率、变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性均为0,顽固性复合指标的计算,根据变异语句相关变量集合中的元素不受发送语句执行顺序影响时顽固性复合指标的计算进行。
进一步的,基于多个路径计算变异体的顽固性复合指标包括:从程序的开始语句到变异语句的路径有多条,计算所有路径的顽固性复合指标;通过所有路径的顽固性复合指标对路径的覆盖难度进行排名,选择所有路径的顽固性复合指标中的最小值作为计算变异体的顽固性复合指标。
进一步的,所述顽固性复合指标的值越大,变异体测试数据生成越难;预先设定一个阈值,所述顽固性复合指标的值大于设定的阈值,则认为变异体是顽固的。
第二方面,本公开还提供了一种并行程序顽固变异体的判定系统,包括等价类划模块、顽固性复合指标计算模块和顽固变异体判定模块;
所述等价类划模块,被配置为:根据变异语句的执行状况,对变异语句的发送节点执行顺序进行等价类划分;
所述顽固性复合指标计算模块,被配置为:确定影响变异体顽固性的因素;根据影响变异体顽固性的因素,结合等价类划分后的发送节点执行顺序对因素的影响,计算变异体的顽固性复合指标;
所述顽固变异体判定模块,被配置为:设置阈值,与所述顽固性复合指标比较,完成顽固变异体的判定。
第三方面,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面中所述的并行程序顽固变异体的判定方法。
第四方面,本公开还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中所述并行程序顽固变异体的判定方法。
与现有技术相比,本公开的有益效果为:
本公开提出了基于变异语句的发送节点执行顺序等价类的生成方法;提出了影响变异体顽固性的因素以及计算变异体顽固性的方法,在实现顽固变异体判定的基础上,根据发送节点执行顺序与影响变异体顽固性因素之间的联系,筛选出并行程序的顽固变异体,通过对顽固变异体着重测试,极大的提高了测试效率。
附图说明
构成本实施例的一部分的说明书附图用来提供对本实施例的进一步理解,本实施例的示意性实施例及其说明用于解释本实施例,并不构成对本实施例的不当限定。
图1为本公开实施例1的流程图;
图2为本公开实施例2的程序的伪代码。
具体实施方式:
下面结合附图与实施例对本公开作进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
实施例1:
本公开提供了一种并行程序顽固变异体的判定方法,包括:
根据变异语句的执行状况,对变异语句的发送节点执行顺序进行等价类划分;
确定影响变异体顽固性的因素;
根据影响变异体顽固性的因素,结合等价类划分后的发送节点执行顺序对因素的影响,计算变异体的顽固性复合指标;
设置阈值,与所述顽固性复合指标比较,完成顽固变异体的判定。
在本实施例中,根据变异语句中的变量确定变异语句的执行状况;结合通信依赖对变异语句相关变量集合中变量的影响,对变异语句发送节点执行顺序进行等价类划分;根据发送节点执行顺序是否影响变异语句的执行,将发送节点执行顺序划分为影响变异语句执行的发送节点执行顺序集合和不影响变异语句执行的发送节点执行顺序集合;根据任意程序输入下,变异语句执行状况不同,对影响变异语句执行的发送节点执行顺序集合进行分类。
分布存储并行程序有多个流程,每个流程不仅包含串行程序中的局部计算,而且包含用于流程交互的通信语句;可以理解的,对于相同的程序输入,不同的发送节点执行顺序,执行的目标语句不同;因此,根据变异语句的执行状况是否相同,可以将目标语句分成若干类,每一类的发送节点执行顺序是等价的;具体的,假设与变异语句s相关的发送节点执行顺序结合为Δ,根据发送节点执行顺序是否会影响s的执行,将Δ分为如下两类:一类为影响s执行的发送节点执行顺序集合,记为Δyes;另一类为不影响s执行的发送节点执行顺序,记为Δno,那么Δ=Δyes∪Δno;根据任意程序输入下,变异语句执行状态不同,将Δyes分为e类:
Δ=Δyes∪Δno (1)
Δyes=Δ1∪Δ2…Δe(Δi∩Δj=φ,i,j∈{1,2,…e}) (2)
为了寻找划分执行发送节点顺序的方法,引入如下2个概念;变异语句相关变量集合:是指变异语句中的所有变量以及数据依赖的变量,记为VMS={v1,v2,…,vn}。通信依赖:由流程之间的通信导致变量之间的依赖关系,包括直接通信依赖和间接通信依赖。假设流程M1的变量v1来源于M2发送的变量v2,则v1与v2是直接依赖关系;若v2来源于M3的变量v3,则v3与v1是间接依赖关系。
如果变异语句相关变量不存在不确定性的通信依赖,则发送节点执行顺序对变异语句没有影响,如果变异语句相关变量存在不确定性的通信依赖,则会影响变异语句是否执行以及执行状态。
在本实施例中,将变异语句的可达概率、变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性作为确定影响变异体顽固性的因素;具体的,在强变异测试准则下,杀死变异体需要满足三个条件:可达性、必要性和充分性;也就是说,测试数据杀死变异体需要具备三步:(1)测试数据能够到达变异语句s;(2)使程序在s处的状态发生改变;(3)该变化导致程序输出不同。由上述条件可知,测试数据到达变异语句的概率越小,杀死变异体的测试用例更难生成;另外,变异算子本身的属性也会影响程序的输出结果,例如将变异语句“if(x>y)”实施变异,得到变异语句“if(x≥y)”与““if(x≤y)”,前者的改动只增加了“x=y”这种情况,而后者的改动与原程序的条件相反,所以,后者的改动更容易对程序的输出产生影响。此外,变异语句相关流程数量和变异语句相关输入变量的数量也会影响变异体的顽固性。一般地,相关流程数量越多,被检测出来的可能性越大,相关输入变量越多,输入变量的范围越大,则被检测出来的可能性越小。
本公开将变异语句的可达概率,变异算子的属性,变异语句与流程的相关性、变异语句与输入变量的相关性作为顽固变异体的评价指标。记:在VMS集合中,存在通信依赖的变量所在的流程为变异语句相关流程组成变异语句相关流程集合FMS,其集合FMS中的元素的数量为fmn;FMS集合中的流程的输入分量组成变异语句相关输入变量集合ICMS,其集合ICMS中的元素的数量为imn。
在本实施例中,计算变异体的顽固性复合指标包括基于单个路径计算变异体的顽固性复合指标和基于多个路径计算变异体的顽固性复合指标;具体的,(1) 基于单个路径计算变异体的顽固性复合指标包括:变异语句相关变量集合中的元素不受发送语句执行顺序影响时,发送语句执行顺序对于变异语句的可达概率、变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性均没有影响,变异语句的可达性作为影响变异体顽固性的首要条件;可达概率为1时,顽固性复合指标取决变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性;变异语句相关变量集合中的元素受发送语句执行顺序影响时,发送节点执行顺序不影响变异语句的执行,在任何程序输入下,执行任何一条可执行路径,均无法到达变异语句,可达概率、变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性均为0,顽固性复合指标的计算,根据变异语句相关变量集合中的元素不受发送语句执行顺序影响时顽固性复合指标的计算进行;(2)基于多个路径计算变异体的顽固性复合指标包括:从程序的开始语句到变异语句的路径有多条,计算所有路径的顽固性复合指标;通过所有路径的顽固性复合指标对路径的覆盖难度进行排名,选择所有路径的顽固性复合指标中的最小值作为计算变异体的顽固性复合指标。
在本实施例中,所述顽固性复合指标的值越大,变异体测试数据生成越难;预先设定一个阈值,所述顽固性复合指标的值大于设定的阈值,则认为变异体是顽固的;具体方法如下:
基于变异语句的发送节点执行顺序等价类划分与变异体的顽固性复合指标,计算基于路径pathl的变异体的顽固性;
基于所有路径下的变异体顽固性的数值,计算变异体的顽固性;
设置阈值,完成顽固变异体的判定。
本实施例的具体工作过程和原理为:
基于变异语句的发送节点执行顺序等价类的划分:
变异语句是否执行以及执行状态取决于变异语句中的变量;结合通信依赖对集合VMS中变量的影响,从而给出变异语句发送节点执行顺序等价类的划分方法。
1.VMS中元素相关的通信依赖是确定的;
当变异语句完全不受发送节点执行顺序的影响时,称通信依赖是确定的;此时,所有发送节点执行顺序组成一个等价类,即Δno=Δ,Δyes=φ。
2.VMS中元素相关的通信依赖是不确定的;
变量vi存在不确定性的通信依赖,意味着vi的通信依赖可能与多个流程有关;那么,基于vi在其他流程的定义性出现,给出发送节点执行顺序等价类的划分方案,如下所示。
(1)遍历集合VMS中的元素,找出与vi存在不确定性通信依赖变量的发送流程;
(2)遍历发送流程的语句,寻找vi在其定义性出现的语句s'。建立发送节点执行顺序与s'中vi值之间的关系。如果在两个不同的发送节点执行顺序下,s' 中vi值相同,则称这两个发送节点执行顺序等价。也就是说,这两个发送节点执行顺序属于同一类。基于此,Δ分成e类,即Δ={Δ1,Δ2…,Δe}。判断vi是否在条件与循环语句内,如果是,并且存在输入满足控制条件,那么Δyes={Δ1,Δ2…,Δe},Δno=φ;如果对于发送节点执行顺序类Δi下的任何输入,变异语句均不被执行,那么,Δno=Δi,Δyes=Δ-Δno;如果变异语句不在条件或者循环语句内,那么,Δyes={Δ1,Δ2…,Δe},Δno=φ。
影响变异体顽固性指标的确立:
1.变异语句可达概率;
该指标反映变异语句的可达性;假设变异语句s的所在流程为Mi,如果s是可达的,那么,从流程Mi开始到s,至少存在一条可执行路径。s的可达性与路径上的条件语句密切相关;表1列出条件语句的执行概率,其中v1,v2是变量,pred1, pred2是谓词,q是一个常数,研究表明,q=1/16。
表1条件语句的执行概率
由式(3)可知,ep(pathl)∈(0,1],且ep(pathl)越小,通过pathl路径越难到达s。综合L条到达s的可执行路径,穿越s所有路径的可达概率为:
2.变异语句影响输出的概率;
该指标反映变异算子属性;变异算子对变异语句是否会造成状态改变具有一定的影响。本实施例中考虑典型的5种变异算子:ABS、AOR、LCR、ROR和UOI;将变异算子是否顽固的概率p(s)作为第2个指标,用来估计变异语句能够导致程序不同输出的概率;表2-表5详细列出了该信息。
表2变异算子顽固性
表3ROR算子顽固性
表4 UOI算子顽固性
表5 AOR算子顽固性
3.变异语句与流程的相关性;
该指标反映变异语句相关的流程数;一般地,不同的变异语句,相关流程数量是不同的,相关流程越多,变异体被检测出来的可能性越大,因此将集合 FMS中流程的数量与流程总数的比值作为判断顽固变异体的指标;假设程序总流程为fn,执行路径pathl,其相关性cfm为:
4.变异语句与输入变量的相关性;
集合IVMS中的变量越多,输入变量的范围越大,变异体被检测出来的可能性越小;因此,变异语句与输入变量的相关性将影响变异体的顽固性;假设在执行pathl的情况下,IVMS中变量的数目为imn,程序输入总数为in,则变异语句与输入变量的相关性cim(pathl)如公式(7)所示。
考虑所有路径,相关性如公式(8)所示。
顽固变异体的判定:
现在给出蜕变关系顽固变异体的判定方法;记并行程序变异体M顽固性为 Stub(M);内容如下:
1.基于单个路径,变异体顽固性复合指标的计算;
(1)VMS中的元素不受发送语句执行顺序的影响;此时,发送语句执行顺序对于S的可达概率、变异算子有效性、s与流程的相关性、s与输入变量的相关性均没有影响;s的可达性是影响变异体顽固性的首要条件,只有s可达,才有可能影响程序输出,若s是可达概率为1,则M顽固性则取决于其他三个指标;因此,对于路径path1,其复合指标可以表示为:
ρ(pathl)=α(1-ep(pathl))+β(1-cfm(pathl))+γp(s)+κcim(pathl) (9)
ρ(pathl)=λ1(1-cfm(pathl))+λ2p(s)+λ3cim(pathl) (10)
其中,若s必被执行,ρ(pathl)计算方式如公式(10)所示;反之,采用公式(9) 计算。
(2)VMS中的元素受发送语句执行顺序的影响;如果发送节点执行顺序不影响s的执行,那么,在任何程序输入下,执行任何一条可执行路径,均无法到达s,M在该顺序下不会被检查出来,所以ep(pathl)=0、cfm(pathl)=0、p(s)=0、 cim(pathl)=0。在每一个执行顺序的执行概率相等的前提下,ep(pathl)、p(s)、 cfm(pathl)、cim(pathl)的计算如公式(11)-公式(14)所示所示,复合指标ρ(pathl) 的计算如公式(9)-公式(10)所示。
2.基于多个路径,变异体顽固性的计算;
从程序的开始语句到变异语句的路径有L条,反复执行,计算所有路径的ρ值;其中,ρ(pathl)∈[0,1],ρ(pathl)越小,则pathl越难覆盖,因此,可以通过ρ(path1),ρ(path2),...,ρ(pathL)的值对路径的覆盖难度进行排名;由于所有这些路径都可以覆盖变异语句,因此选择ρ(path1),ρ(path2),...,ρ(pathL)的最小值作为评估杀死M的难度综合指标,表示为Stub(M)。
Stub(M)=min{ρ(path1),ρ(path2),…,ρ(pathL)} (15)
3.判定顽固的变异体;
因此,Stub(M)∈(0,1),该值越大,则变异体测试数据生成越难。基于一个预先设定的阈值fv,如果Stub(M)>fv,则认为M是顽固的,在本文实验中fv取值为0.5。
4.参数的设置;
在反映M被杀死的难易程度时,通过α、β和γ体现不同评价指标分别有不同的重要程度,这些权值的设置是基于多次实验的结果。首先,从变异体集合中随机抽取变异体,记为集合Zr,执行Zr中变异体,筛选出变异得分低的顽固变异体集合Zt;然后,将权值分别赋予不同值,计算Zr中变异体的Stub(M)>fv值,分别选出基于不同权值下的顽固变异体集合;最后,将多个顽固变异体集合分别与Zt进行对比,从而选择顽固变异体集合差异最小的权值;根据实验,本实施例中,将α、β、γ和κ值分别设置为0.4、0.2、0.2、0.2,λ1,λ2和λ3均设置为1/3。
实施例2,
在本实施例中,选择程序triangle作为被测程序,图2为程序triangle的代码,基于变异分析,评价所提方法的性能。该程序的功能为,求程序前3的输入变量构成的三角形类型,和计算type的值;本实施例中,将实施变异操作,得到变异语句“w=w-type”。
为验证顽固变异体判定指标的有效性,进行如下操作:首先,依据本公开的变异体顽固性的计算方法,确定程序中的顽固变异体;然后,采用随机法生成覆盖变异语句的测试数据;最后,将这些测试数据执行被测程序与顽固变异体。根据变异体的杀死情况,来评估本公开的合理性。
1.基于变异语句的发送节点执行顺序等价类的划分
根据程序可知,与该变异语句相关的变量为VMS={x,y,z,l,m,n},语句和可以接收和任意语句的变量,则变量l,m和n存在不确定性的通性依赖,其发送节点的执行顺序如表6所示,Δ={EOSN1,EOSN2,EOSN3,EOSN4,EOSN5,EOSN6}。
表6不同的发送节点的执行顺序
语句和发送消息的值分别为input[1]+4以及0,要想执行语句需要中的l大于等于4,使其谓词表达式为真,根据表1可知,在EOSN1和EOSN2下,接收的发送消息,使得在EOSN3和 EOSN4下,接收的发送消息,使得l=input[1]+4,在EOSN5和EOSN6下,接收的发送消息,使得l=0,可知在EOSN5和EOSN6下,对于任意的程序输入,均不可以执行语句因此Δno={EOSN5,EOSN6},Δyes={EOSN1,EOSN2,EOSN3,EOSN4},变量l不确定性通信依赖的发送流程为 F2,F3,F4,其定义性出现的语句为以及根据定义性出现语句中不同的值,可以将Δyes分为两类:Δyes={{EOSN1,EOSN2},{EOSN3,EOSN4}}。
综上分析,Δyes={{EOSN1,EOSN2},{EOSN3,EOSN4}},Δno={EOSN5,EOSN6}
2.影响变异体顽固性指标的计算
根据程序可知,变异语句相关流程为M1,M2,M3和M4,变异语句相关输入变量为input[0]~input[3];可达的路径有3条:path1=(8,11,17,18,19,25)、 path2=(8,11,17,20,21,22,25)和path3=(8,11,17,20,23,24,25)。
指标1、变异语句可达性;
指标2、变异算子属性;
指标3、变异语句与流程之间的相关性;
指标4、变异语句与输入变量的相关性;
3.基于发送语句执行顺序的四个指标的计算:
指标1、变异语句可达性;
指标2、变异算子属性;
指标3、变异语句与流程之间的相关性;
指标4、变异语句与输入变量的相关性;
4.变异体顽固性综合指标的计算;
ρ(path1)=0.4×(1-0.00247)+0.2×0.026+0.2×(1-0.53)+0.2×0.67=0.632212;
ρ(path2)=0.4×(1-0.00227)+0.2×0.026+0.2×(1-0.53)+0.2×0.67=0.632292;
ρ(path3)=0.4×(1-0.0343)+0.2×0.026+0.2×(1-0.53)+0.2×0.67=0.61948;
Stub(M)=min{0.632212,0.632292,0.61948}。
5.判定顽固变异体
Stub(M)=min{0.632212,0.632292,0.61948}=0.61948>0.5根据多次实验,设置阈值 fv为0.5,因此M被判定为顽固变异体。
6.实验验证是否为顽固的变异体
采用随机法生成满足语句覆盖的测试数据集,将测试数据集的数量设置为 1000,将测试数据集中的测试数据分别执行被测程序与变异体程序,通过变异得分来判定该变异体是否为顽固变异体;表7中列出了5次实验的结果。
表7实验的变异得分
由表7可知,本公开的顽固变异体的判定方法是有效的。
实施例3:
本实施例公开了一种并行程序顽固变异体的判定系统,包括等价类划模块、顽固性复合指标计算模块和顽固变异体判定模块;
所述等价类划模块,被配置为:根据变异语句的执行状况,对变异语句的发送节点执行顺序进行等价类划分;
所述顽固性复合指标计算模块,被配置为:确定影响变异体顽固性的因素;根据影响变异体顽固性的因素,结合等价类划分后的发送节点执行顺序对因素的影响,计算变异体的顽固性复合指标;
所述顽固变异体判定模块,被配置为:设置阈值,与所述顽固性复合指标比较,完成顽固变异体的判定。
实施例4:
本实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现实施例1所述的并行程序顽固变异体的判定方法。
实施例5:
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现实施例1所述并行程序顽固变异体的判定方法。
以上所述仅为本实施例的优选实施例而已,并不用于限制本实施例,对于本领域的技术人员来说,本实施例可以有各种更改和变化。凡在本实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本实施例的保护范围之内。
Claims (7)
1.一种并行程序顽固变异体的判定方法,其特征在于,包括:
根据变异语句的执行状况,对变异语句的发送节点执行顺序进行等价类划分;
确定影响变异体顽固性的因素;
根据影响变异体顽固性的因素,结合等价类划分后的发送节点执行顺序对因素的影响,计算变异体的顽固性复合指标;
设置阈值,与所述顽固性复合指标比较,完成顽固变异体的判定;
所述计算变异体的顽固性复合指标包括基于单个路径计算变异体的顽固性复合指标和基于多个路径计算变异体的顽固性复合指标;
所述基于单个路径计算变异体的顽固性复合指标包括:
变异语句相关变量集合中的元素不受发送语句执行顺序影响时,发送语句执行顺序对于变异语句的可达概率、变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性均没有影响;变异语句的可达性作为影响变异体顽固性的首要条件,可达概率为1时,则顽固性复合指标取决变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性;
变异语句相关变量集合中的元素受发送语句执行顺序影响时,发送节点执行顺序不影响变异语句的执行,在任何程序输入下,执行任何一条可执行路径,均无法到达变异语句,可达概率、变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性均为0,顽固性复合指标的计算,根据变异语句相关变量集合中的元素不受发送语句执行顺序影响时顽固性复合指标的计算进行;
所述基于多个路径计算变异体的顽固性复合指标包括:从程序的开始语句到变异语句的路径有多条,计算所有路径的顽固性复合指标;通过所有路径的顽固性复合指标对路径的覆盖难度进行排名,选择所有路径的顽固性复合指标中的最小值作为计算变异体的顽固性复合指标。
2.如权利要求1所述的一种并行程序顽固变异体的判定方法,其特征在于,根据变异语句中的变量确定变异语句的执行状况;
结合通信依赖对变异语句相关变量集合中变量的影响,对变异语句发送节点执行顺序进行等价类划分;根据发送节点执行顺序是否影响变异语句的执行,将发送节点执行顺序划分为影响变异语句执行的发送节点执行顺序集合和不影响变异语句执行的发送节点执行顺序集合;
根据任意程序输入下,变异语句执行状况不同,对影响变异语句执行的发送节点执行顺序集合进行分类;
所述变异语句相关变量集合,是指变异语句中的所有变量以及数据依赖的变量;所述通信依赖,是指由流程之间的通信导致变量之间的依赖关系。
3.如权利要求2所述的一种并行程序顽固变异体的判定方法,其特征在于,
将变异语句的可达概率、变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性作为确定影响变异体顽固性的因素;
所述可达概率是指反映变异语句的可达性;所述变异算子的属性是指变异算子对变异语句执行状态的影响;所述变异语句与流程的相关性反映变异语句相关的流程数。
4.如权利要求3所述的一种并行程序顽固变异体的判定方法,其特征在于,所述顽固性复合指标的值越大,变异体测试数据生成越难;预先设定一个阈值,所述顽固性复合指标的值大于设定的阈值,则认为变异体是顽固的。
5.一种并行程序顽固变异体的判定系统,其特征在于,包括等价类划模块、顽固性复合指标计算模块和顽固变异体判定模块;
所述等价类划模块,被配置为:根据变异语句的执行状况,对变异语句的发送节点执行顺序进行等价类划分;
所述顽固性复合指标计算模块,被配置为:确定影响变异体顽固性的因素;根据影响变异体顽固性的因素,结合等价类划分后的发送节点执行顺序对因素的影响,计算变异体的顽固性复合指标;
所述顽固变异体判定模块,被配置为:设置阈值,与所述顽固性复合指标比较,完成顽固变异体的判定;
所述计算变异体的顽固性复合指标包括基于单个路径计算变异体的顽固性复合指标和基于多个路径计算变异体的顽固性复合指标;
所述基于单个路径计算变异体的顽固性复合指标包括:
变异语句相关变量集合中的元素不受发送语句执行顺序影响时,发送语句执行顺序对于变异语句的可达概率、变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性均没有影响;变异语句的可达性作为影响变异体顽固性的首要条件,可达概率为1时,则顽固性复合指标取决变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性;
变异语句相关变量集合中的元素受发送语句执行顺序影响时,发送节点执行顺序不影响变异语句的执行,在任何程序输入下,执行任何一条可执行路径,均无法到达变异语句,可达概率、变异算子的属性、变异语句与流程的相关性和变异语句与输入变量的相关性均为0,顽固性复合指标的计算,根据变异语句相关变量集合中的元素不受发送语句执行顺序影响时顽固性复合指标的计算进行;
所述基于多个路径计算变异体的顽固性复合指标包括:从程序的开始语句到变异语句的路径有多条,计算所有路径的顽固性复合指标;通过所有路径的顽固性复合指标对路径的覆盖难度进行排名,选择所有路径的顽固性复合指标中的最小值作为计算变异体的顽固性复合指标。
6.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1-4任一项所述的并行程序顽固变异体的判定方法。
7.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-4任一项所述的并行程序顽固变异体的判定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110785914.3A CN113590474B (zh) | 2021-07-12 | 2021-07-12 | 一种并行程序顽固变异体的判定方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110785914.3A CN113590474B (zh) | 2021-07-12 | 2021-07-12 | 一种并行程序顽固变异体的判定方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113590474A CN113590474A (zh) | 2021-11-02 |
CN113590474B true CN113590474B (zh) | 2022-03-22 |
Family
ID=78247084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110785914.3A Active CN113590474B (zh) | 2021-07-12 | 2021-07-12 | 一种并行程序顽固变异体的判定方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590474B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461535B (zh) * | 2022-04-14 | 2022-07-12 | 山东建筑大学 | 面向并行变异算子的顽固变异体测试数据生成方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699053A (zh) * | 2020-08-03 | 2021-04-23 | 徐州工程学院 | 一种融入模糊聚类的软件测试方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8276021B2 (en) * | 2009-12-18 | 2012-09-25 | Microsoft Corporation | Concurrency test effectiveness via mutation testing and dynamic lock elision |
CN104750610B (zh) * | 2015-03-24 | 2018-01-09 | 中国矿业大学 | 基于占优度的消息传递并行程序变异体约简方法 |
CN105302719B (zh) * | 2015-10-26 | 2017-11-28 | 北京科技大学 | 一种变异测试方法及装置 |
-
2021
- 2021-07-12 CN CN202110785914.3A patent/CN113590474B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699053A (zh) * | 2020-08-03 | 2021-04-23 | 徐州工程学院 | 一种融入模糊聚类的软件测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113590474A (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Stadler et al. | Graph posterior network: Bayesian predictive uncertainty for node classification | |
Gegick et al. | Prioritizing software security fortification throughcode-level metrics | |
Baumgartner et al. | Causal modeling with multi-value and fuzzy-set Coincidence Analysis | |
Kremenek et al. | Correlation exploitation in error ranking | |
Feige et al. | Learning and inference in the presence of corrupted inputs | |
Cito et al. | Counterfactual explanations for models of code | |
Haroush et al. | A statistical framework for efficient out of distribution detection in deep neural networks | |
WO2009087757A1 (ja) | 情報フィルタリングシステム、情報フィルタリング方法および情報フィルタリングプログラム | |
Evans | Graphical methods for inequality constraints in marginalized DAGs | |
Shi et al. | Robust task scheduling in non-deterministic heterogeneous computing systems | |
CN107025169B (zh) | 一种基于贝叶斯网络推理的软件错误分层诊断方法 | |
CN113590474B (zh) | 一种并行程序顽固变异体的判定方法及系统 | |
US7778943B2 (en) | Stochastic evidence aggregation system of failure modes utilizing a modified dempster-shafer theory | |
Thimm et al. | Some complexity results on inconsistency measurement | |
Wang et al. | New control charts for monitoring the Weibull percentiles under complete data and Type‐II censoring | |
Konstantinov et al. | On the impossibility of fairness-aware learning from corrupted data | |
CN114661568A (zh) | 异常操作行为检测方法、装置、设备及存储介质 | |
Chiang et al. | Analysis and assessment of weighted combinatorial criterion for test suite reduction | |
Periyasamy et al. | Prediction of future vulnerability discovery in software applications using vulnerability syntax tree (PFVD-VST). | |
Angluin et al. | Learning a circuit by injecting values | |
Rodeghero et al. | An empirical study on how expert knowledge affects bug reports | |
Berghammer et al. | Set-based multi-objective optimization, indicators, and deteriorative cycles | |
Kobayashi | Design and evaluation of automatic test generation strategies for functional testing of software | |
Lee et al. | An investigation of essential topics on software fault-proneness prediction | |
Khoshgoftaar et al. | An application of genetic programming to software quality prediction |
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 |