CN104750610A - 基于占优度的消息传递并行程序变异体约简方法 - Google Patents
基于占优度的消息传递并行程序变异体约简方法 Download PDFInfo
- Publication number
- CN104750610A CN104750610A CN201510140052.3A CN201510140052A CN104750610A CN 104750610 A CN104750610 A CN 104750610A CN 201510140052 A CN201510140052 A CN 201510140052A CN 104750610 A CN104750610 A CN 104750610A
- Authority
- CN
- China
- Prior art keywords
- branch
- variation
- conditional statement
- dominant
- true
- 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.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种基于占优度的消息传递并行程序变异体约简方法,该方法包括:形成消息传递并行程序弱变异测试转化后的新程序;确定新程序中各变异条件语句真分支之间的占优关系;计算新程序中各变异条件语句真分支之间的占优度和各变异条件语句真分支的被占优度;得到冗余的变异条件语句真分支并进行约简;得到约简后的变异条件语句真分支和变异体。本技术方案针对消息传递并行程序弱变异测试转化后的新程序,根据变异条件语句真分支之间的占优度和各变异条件语句真分支的被占优度对变异体进行约简,不仅减少了变异体的数量,还提高了变异测试的效率,为消息传递并行程序的变异体约简问题提供了一种有效的解决思路。
Description
技术领域
本发明涉及并行程序测试领域,特别涉及一种基于占优度的变异体约简方法,可用于消息传递并行程序的变异体约简。
背景技术
在软件测试领域中,变异测试是其主流的研究方向之一,变异测试不仅可用于评估和改善测试用例的质量,还具有较高的测试充分性。然而,随着变异算子的增多及软件复杂性的提高,变异测试过程中会生成大量且复杂的变异体,从而导致变异测试高昂的测试代价,使得变异测试的可行性和应用范围受到很大限制。如果通过合适的方法减少变异测试的变异体数量,那么,将会降低变异测试的代价,提高变异测试的可行性和应用范围。
变异体约简是降低变异测试代价的一种有效方法,该方法在保证变异测试充分性的同时,通过相关策略减少变异体的数量。现阶段,主要的变异体约简方法包括:变异体抽样、变异体聚类、选择变异、以及高阶变异方法,另外,还有一些方法通过变异体之间的相关关系对变异体进行约简。以上研究成果的应用结果表明,对变异体进行约简能够有效降低变异测试代价,并利于提高变异测试的可行性和应用范围。
消息传递并行程序是应用最广泛的一类并行程序。消息传递并行程序不仅包含串行程序中的众多变量和语句类型,还拥有其特有的变量类型和通信函数,此外,该类程序的执行还具有不确定性及死锁等特征。这使得,对消息传递并行程序实施测试比串行程序更加复杂和困难。
对消息传递并行程序实施变异测试,有利于保证该类程序的可靠性。然而,消息传递并行程序的诸多特点,使得其变异测试的过程中会生成较串行程序更多且复杂的变异体,另外,这些特点使得已有的变异体约简方法不适用于消息传递并行程序。因此,有必要提出适用于消息传递并行程序的变异体约简方法,以提高该类程序的变异测试效率。
消息传递并行程序与串行程序的最大区别,在于其执行的不确定性,这使得,在不同的调度序列下该类程序可能出现不同的执行过程和结果。这样一来,消息传递并行程序的变异体以及分支之间的相关关系也会受到其执行不确定性的影响。因此,若要利用分支之间的相关关系对消息传递并行程序实施变异体约简,降低该类程序的变异测试代价,有必要提出适用于该类程序的相关关系分析方法。
发明内容
为了克服已有相关关系分析方法的不足,根据消息传递并行程序执行的不确定性,本发明提出一种适用该类程序的相关关系分析方法,并用于该类程序的变异体约简,降低该类程序的变异测试代价。
为了实现上述目的,本发明提出了一种基于占优度的消息传递并行程序变异体约简方法,该方法包括:
形成消息传递并行程序弱变异测试转化后的新程序;
根据新程序中各变异条件语句真分支在各调度序列下的执行情况,确定新程序中各变异条件语句真分支之间的占优关系;
根据变异条件语句真分支之间的占优关系,计算各变异条件语句真分支之间的占优度,根据变异条件语句真分支之间的占优度,计算各变异条件语句真分支的被占优度;
利用变异条件语句真分支之间的占优度和各变异条件语句真分支的被占优度,得到冗余的变异条件语句真分支并进行约简;
得到约简后的变异条件语句真分支和变异体;
其中,所述利用变异条件语句真分支之间的占优度和各变异条件语句真分支的被占优度,得到冗余的变异条件语句真分支的步骤包括:
根据变异条件语句真分支的被占优度将变异条件语句真分支分成两类,第1类变异条件语句真分支的被占优度小于1,第2类变异条件语句真分支的被占优度大于或等于1;
对第2类变异条件语句真分支进行降序排列;
判断第2类变异条件语句真分支是否是冗余的分支;如果存在某个变异条件语句真分支对第2类变异条件语句真分支的占优度为1,那么,被占优度的第2类变异条件语句真分支是冗余的分支;另外,如果存在某些互不占优的变异条件语句真分支,它们对第2类分支的占优度之和为1,那么,被占优的第2类变异条件语句真分支是冗余的分支;
优选地,所述形成消息传递并行程序弱变异测试转化后的新程序的步骤包括:
根据变异语句的类型,采用针对性的方法构建变异条件语句,并将构建好的变异条件语句插入原程序中,从而形成转化后的新程序,把弱变异准则下的变异体杀死问题转化为新程序的分支覆盖问题。
优选地,所述确定新程序中各变异条件语句真分支之间的占优关系的步骤包括:
获得消息传递并行程序的所有调度序列,根据各调度序列下执行变异条件语句真分支的条件,得到变异条件语句真分支之间的占优关系。如果在任何调度序列下,当满足某变异条件语句真分支的执行条件时,也一定满足另一变异条件语句真分支的执行条件,那么,它们之间存在完全占优关系;如果只在部分调度序列下符合上述情形,那么,它们之间存在部分占优关系;如果在任何调度序列下都不符合上述情形,那么,它们互不占优。
优选地,所述计算变异条件语句真分支之间的占优度和各变异条件语句真分支的被占优度的步骤包括:
根据变异条件语句真分支之间的占优关系,得到变异条件语句真分支之间存在占优关系的调度序列个数,那么,存在占优关系的调度序列个数与总调度序列数的比值为变异条件语句真分支之间的占优度。另外,对于某一变异条件语句真分支,考察占优该分支的所有变异条件语句真分支,那么,它们对该分支的占优度之和为该变异条件语句分支被占优度。
优选地,所述判断第2类变异条件语句真分支是否是冗余的分支的方法为:
如果存在其它变异条件语句真分支对第2类变异条件语句真分支的占优度为1,那么,被占优度的第2类变异条件语句真分支是冗余的分支;另外,如果存在某些互不占优的变异条件语句真分支,且它们对第2类变异条件语句真分支的占优度之和为1,那么,被占优度的第2类变异条件语句真分支是冗余的分支。
上述技术方案具有以下有益效果:本技术方案针对消息传递并行程序弱变异测试转化后的新程序,根据变异条件语句真分支之间的占优度和各变异条件语句真分支的被占优度对变异体进行约简,不仅减少了变异体的数量,还提高了变异测试的效率,为消息传递并行程序的变异体约简问题提供了一种新的解决思路。随着消息传递并行程序规模的增大及复杂性的提高,该类程序的变异测试过程中会产生大量的变异体,本技术方案可有效降低该类程序变异测试的代价。
附图说明
图1为本发明提出的一种基于占优度的消息传递并行程序变异体约简方法流程图;
图2为约简变异条件语句真分支的伪代码;
图3为示例程序的源代码;
图4为根据示例程序及其变异体形成的新程序控制流程图;
具体实施方式
下面结合具体附图和实例对本发明的实施方式进行详细说明。
如图1所示,为本发明提出的一种基于占优度的消息传递并行程序变异体约简方法流程图,该方法包括:
步骤101):形成消息传递并行程序弱变异测试转化后的新程序。
(1.1)构建变异条件语句。对消息传递并行程序的进程内语句和进程间的通信语句,采用针对性的方法构建变异条件语句。对于某个消息传递并行程序S,假设该程序的第i个进程Si的某一进程内语句为其谓词表达式为那么,对该语句实施某变异操作,记变异后得到的变异体为S′,其变异语句为相应的谓词表达式为那么,根据Papadakis等的方法,可以得到该变异体的变异条件语句谓词表达式这样一来,再把覆盖分支的标志语句作为真分支,便构建好了进程内语句的的变异条件语句。如果变异体由通信语句变异产生,为了使变异前后的状态具有可比性,在构建变异条件语句之前,需要重现原程序的通信环境,因此,对相关的进程添加一些重现通信环境的赋值语句。为了形成变异条件语句的谓词表达式,首先,在变异语句或该语句的匹配语句之后,添加原语句或原语句的匹配语句;然后,添加一些用于记录变异语句或其匹配语句执行之后的状态或参量的语句;最后,基于记录的结果形成变异条件语句的谓词表达式,把相关的标志语句作为真分支,便完成了通信语句的变异条件语句构建。
(1.2)形成新程序。对于不同类型的变异语句,其变异条件语句插入原程序的方式是不同的。如果变异语句是进程内语句,那么,把与该语句相关的变异条件语句依次插入在该语句之前。如果变异语句是进程间的通信语句,那么,在插入变异条件语句之前将相关的通信语句插入在变异语句或其匹配语句之后,并将变异条件语句插入到通信语句或其匹配语句之后。把全部的变异条件语句插入原程序中可形成一个新程序。
步骤102):确定新程序中各变异条件语句真分支之间的占优关系。
(2.1)基于消息传递并行程序的不确定接收语句,形成新程序的所有调度序列。消息传递并行程序的消息接收语句,是导致该类程序执行不确定性的主要因素。假如某个消息接收语句引起了消息传递并行程序执行的不确定性,那么,称该消息接收语句为不确定接收语句,其所属的节点为不确定接收节点。这样一来,根据所有的不确定接收语句及其匹配语句,可形成消息传递并行程序的所有调度序列。
(2.2)考虑新程序的两个变异条件语句真分支a和b,在该程序输入空间的任意输入下,如果在该程序的所有调度序列下,都满足当分支a执行时,分支b一定会执行,那么,称分支a完全占优b,记为如果仅在该程序的部分调度序列下,满足分支a执行时,分支b一定会执行,那么,称分支a部分占优b,记为。当满足或者时,称分支a为占优分支,分支b为被占优分支。另外,如果在该程序的所有调度序列下,都不满足当分支a执行时,分支b一定会执行,那么,称分支a不占优b。如果分支a不占优b且分支b也不占优a,那么,称分支a与b互不占优,记为a||b。
步骤103):计算各变异条件语句真分支之间的占优度和各变异条件语句真分支的被占优度。
对于新程序的两个变异条件语句真分支a和b,称当分支a执行时,分支b一定执行的调度序列个数与全部调度序列个数的比,为分支a对b的占优度,记为D(a,b);考虑分支b及占优b的所有变异条件语句真分支,那么,这些分支对分支b的占优度之和为分支b的被占优度,记为D(b)。根据新程序的所有调度序列及变异条件语句真分支之间的占优关系,利用占优度的公式可计算出变异条件语句真分支之间的占优度,进一步可得到各变异条件语句真分支的被占优度。考虑某新程序的两个变异条件语句真分支b1和b2,根据占优度的定义可以得到,当时,D(b1,b2)=1;当时,0<D(b1,b2)<1;另外,如果满足b1||b2,那么,D(b1,b2)=D(b2,b1)=0。为了计算时的D(b1,b2),根据该程序的调度序列个数,记为n,及满足的调度序列个数,并记为m,利用占优度的计算公式即可得到变异条件语句真分支b1和b2之间的占优度。考虑某新程序的变异条件语句真分支b,如果该程序共有T个这样的分支,它们要么满足完全占优b,要么满足部分占优b,并记这T个分支分别为b1,b2,…,bT,那么,它们对分支b的占优度分别为D(b1,b),D(b2,b),…,D(bT,b),利用被占优度的计算公式可得到变异条件语句真分支b的被占优度。
步骤104):得到冗余的变异条件语句真分支并进行约简。
(4.1)根据被占优度对变异条件语句真分支进行分类。假设新程序S共有n个变异条件语句,记这n个语句的真分支分别为b1,b2,…,bn,并用集合B={b1,b2,…,bn}表示这些真分支,集合B中各变异条件语句真分支之间的占优度及各变异条件语句真分支的被占优度分别为:D(bi,bj),i,j=1,2,…,n,i≠j和D(bi),i=1,2,…,n。根据被占优度对变异条件语句真分支进行分类,第1类变异条件语句真分支的被占优度小于1,第2类变异条件语句真分支的被占优度大于或等于1;由于只有第2类变异条件语句真分支才可能是冗余的分支,因此,找出满足条件D(bi)>=1,i=1,2,…,n的所有变异条件语句真分支,并用集合B′表示。
(4.2)对第2类变异条件语句真分支进行降序排列。根据集合B′中各分支的被占优度对它们进行降序排序,可以得到B′={b1′,b2′,…bm′|D(bi′)>D(bj′),i,j=1,2…,m,i<j,m<=n},其中,bi′,i=1,2,…,m为B′中的变异条件语句真分支,m为B′中的分支个数。
(4.3)判断第2类变异条件语句真分支是否是冗余的分支,并约简冗余的分支。假设对集合B′中的第一个分支b1′进行分析,考察是否存在变异条件语句真分支bi,bi≠b1′,bi∈B,使得D(bi,b1′)=1。如果上述情况满足,那么,变异条件语句真分支b1′是冗余的分支;如果上述情况不满足,那么,考察是否存在分支集合 使得如果存在,那么,变异条件语句真分支b1′是冗余的分支。如果变异条件语句真分支是冗余的分支,则将其从集合B和B′中同时删除并放入集合B″,集合B″用于保存被删除的变异条件语句真分支;如果变异条件语句真分支不是冗余的分支,那么,不进行任何处理。
步骤105):得到约简后的变异条件语句真分支和变异体。
按照集合B′中的顺序对各变异条件语句真分支进行分析,直到分析完集合B′中的全部变异条件语句真分支为止。当集合B′中的变异条件语句真分支都被分析之后,集合B′为空集,集合B和B″中的分支分别对应约简后的变异条件语句真分支和被约简的变异条件语句真分支,这样一来,与集合B中的变异条件语句真分支对应的变异体为约简后的变异体。其中,与约简变异条件语句真分支相关的伪代码如图2所示。
下面以程序gcd为例,说明本发明的具体实现过程。
程序gcd的功能是求取3个数的最大公约数,其源程序及其控制流程图如图3所示,其中,图(a)为进程S0的源程序,图(b)为进程S1和S2的源程序,图(c)为进程S3的源程序,图(d)为该程序的控制流程图。
步骤101):形成消息传递并行程序弱变异测试转化后的新程序。
考虑示例程序的节点该节点的条件语句表达式为“if(x>1&&y>1)”,假设采用算术变异算子对其实施变异操作生成如下3个变异语句:“if(x>=1&&y>1)”和“if(x<=1&&y>1)”,以及“if(x>1&&y>=1)”,并记与这3个变异语句对应的变异体分别为m1、m2和m3。另外,考虑示例程序的节点同样采用算术变异算子对其条件语句表达式“if(b>1)”实施变异操作,假设由其变异得到的一个变异语句为“if(b>=1)”,并记其对应的变异体为m4。那么,根据变异条件语句的构建方法,可以得到变异体m1、m2、m3以及m4的变异条件语句,它们分别为:
if((x>1&&y>1)!=(x>=1&&y>1))
sgn1=1;
和
if((x>1&&y>1)!=(x<=1&&y>1))
sgn2=1;
和
if((x>1&&y>1)!=(x>1&&y>=1))
sgn3=1;
以及
if((b>1)!=(b>=1))
sgn4=1;
记上述4个变异条件语句分别为s1、s2、s3和s4,它们的真分支分别为b1、b2、b3和b4。那么,将变异条件语句s1、s2、s3,以及s4分别插入原程序中,形成的新程序如图4所示。
步骤102):确定新程序中各变异条件语句真分支之间的占优关系。
对于示例消息传递并行程序,考虑其节点和对应的消息接收语句均为“MPI_Recv(buf,1,MPI_INT,MPI_ANY_SOURCE,2,MPI_COMM_WORLD,&status);”,该消息接收语句消息信封中的参量为任意进程和2;另外,其节点和对应的消息发送语句均为“MPI_Send(&a,1,MPI_INT,0,2,MPI_COMM_WORLD);”,该消息发送语句消息信封中的参量为为0和2。这样一来,节点和都可以接收到节点和发送的消息,因此,节点和均为的不确定接收节点,节点和均为节点和的匹配语句。由上述不确定接收节点可能的通信情况可知,该程序共有2个调度序列,其中,在第1个调度序列下,节点和分别完成与节点和的通信;第2个调度序列下,节点和分别完成与节点和的通信。
由变异条件语句s1、s2、s3和s4的谓词表达式可知,执行分支b1时需要满足x=1和y>1,执行分支b2时需要满足y>1,而执行分支b3和b4时分别需要满足x>1和y=1,以及b=1。根据执行上述4个分支所需满足的条件,可知,当满足分支b1的执行条件时,不管在示例程序的那种调度序列下,分支b2都必然执行,由此可得,另外,当满足分支b1的执行条件时,在程序的任意一个调度序列下,分支b3都不会执行;且反之亦然。因此,b1||b3。同理可得b2||b3,以及b2||b4。另外,考虑在该示例程序的第1个调度序列下,进程S1中b的值传递给了进程S0中的变量x;在其第2个调度序列下,b的值传递给了进程S0中的变量y。这样一来,在该示例程序的第1个调度序列下,执行分支b4的条件等价于x=1;在其第2个调度序列下,执行分支b4的条件等价于y=1。因此,当满足分支b1的执行条件时,在示例程序的第1个调度序列下,分支b4必然会执行;但是,在第2个调度序列下,b4不会执行。由此可得,同理可得
步骤103):计算各变异条件语句真分支之间的占优度和各变异条件语句真分支的被占优度。
根据占优度和被占优度的计算公式,可以得到变异条件语句真分支b1、b2、b3和b4之间的占优度,以及它们的被占优度,其中,
D(b1,b2)=1,D(b1,b3)=0,D(b1,b4)=0.5;
D(b2,b1)=0,D(b2,b3)=0,D(b2,b4)=0;
D(b3,b1)=0,D(b3,b2)=0,D(b3,b4)=0.5;
D(b4,b1)=0,D(b4,b2)=0,D(b4,b3)=0;
D(b1)=0,D(b2)=1,D(b3)=0,D(b4)=1。
步骤104):得到冗余的变异条件语句真分支并进行约简。
对于变异条件语句真分支b1、b2、b3和b4,它们可构成分支集合B={b1,b2,b3,b4},下面给出约简集合B中变异条件语句真分支的过程。鉴于变异条件语句真分支b2和b4的被占优度都为1,因此,它们可能是冗余的分支,用集合B′={b2,b4}表示。由于分支b3和b4的被占优度相同,因此,对集合B′中的分支按照被占优度降序排序后,其顺序不变。考虑到D(b1,b2)=1,因此,分支b2是冗余的分支,从集合B和B′中删除。删除b2之后,B={b1,b3,b4},B′={b4},B″={b2},其中集合B″中的分支是被删除的分支。另外,由于D(b1,b4)+D(b3,b4)=1,且b1||b3,因此,分支b4是冗余的分支,从集合B和B′中删除。
步骤105):得到约简后的变异条件语句真分支和变异体。
分析完集合B′中的全部变异条件语句之后,B={b1,b3},B″={b2,b4}。这样一来,约简变异条件语句真分支之后剩余的分支为b1和b3,它们对应的变异体分别为m1和m3为约简后的变异体。
Claims (5)
1.基于占优度的消息传递并行程序变异体约简方法,其特征在于,该方法包括:
形成消息传递并行程序弱变异测试转化后的新程序;
根据新程序中各变异条件语句真分支在各调度序列下的执行情况,确定新程序中各变异条件语句真分支之间的占优关系;
根据变异条件语句真分支之间的占优关系,计算各变异条件语句真分支之间的占优度,根据变异条件语句真分支之间的占优度,计算各变异条件语句真分支的被占优度;
利用变异条件语句真分支之间的占优度和各变异条件语句真分支的被占优度,得到冗余的变异条件语句真分支并进行约简;
得到约简后的变异条件语句真分支和变异体;
其中,所述利用变异条件语句真分支之间的占优度和各变异条件语句真分支的被占优度,得到冗余的变异条件语句真分支的步骤包括:
根据变异条件语句真分支的被占优度将变异条件语句真分支分成两类,第1类变异条件语句真分支的被占优度小于1,第2类变异条件语句真分支的被占优度大于或等于1;
对第2类变异条件语句真分支进行降序排列;
判断第2类变异条件语句真分支是否是冗余的分支;如果存在某个变异条件语句真分支对第2类变异条件语句真分支的占优度为1,那么,被占优度的第2类变异条件语句真分支是冗余的分支;另外,如果存在某些互不占优的变异条件语句真分支,它们对第2类分支的占优度之和为1,那么,被占优的第2类变异条件语句真分支是冗余的分支。
2.根据权利要求1所述的基于占优度的消息传递并行程序变异体约简方法,其特征在于,所述形成消息传递并行程序弱变异测试转化后的新程序的步骤包括:
对消息传递并行程序的进程内语句和进程间的通信语句,采用针对性的方法构建变异条件语句;对于不同类型的变异语句,其变异条件语句插入原程序的方式是不同的;如果变异语句是进程内语句,那么,把与该语句相关的变异条件语句,依次插入在该语句之前;如果变异语句是进程间的通信语句,那么,在插入变异条件语句之前,将相关的通信语句插入在变异语句或其匹配语句之后;然后,将变异条件语句插入到通信语句或其匹配语句之后;把全部的变异条件语句都插入原程序中,可形成一个新程序。
3.根据权利要求1所述的基于占优度的消息传递并行程序变异体约简方法,其特征在于,所述确定新程序中各变异条件语句真分支之间的占优关系的步骤包括:
基于消息传递并行程序的不确定接收语句,形成新程序的所有调度序列;根据各调度序列下执行变异条件语句真分支的条件,得到变异条件语句真分支之间的占优关系;考虑新程序的两个变异条件语句真分支a和b,在该程序输入空间的任意输入下,如果在该程序的所有调度序列下,都满足当分支a执行时,分支b一定会执行,那么,称分支a完全占优b,记为a>cb;如果仅在该程序的部分调度序列下,满足分支a执行时,分支b一定会执行,那么,称分支a部分占优b,记为a>pb;当满足a>cb或者a>pb时,称分支a为占优分支,分支b为被占优分支;另外,如果在该程序的所有调度序列下,都不满足当分支a执行时,分支b一定会执行,那么,称分支a不占优b;如果满足分支a不占优b且分支b也不占优a,那么,称分支a与b互不占优,记为a||b。
4.根据权利要求1所述的基于占优度的消息传递并行程序变异体约简方法,其特征在于,所述计算各变异条件语句真分支之间的占优度和各变异条件语句真分支的被占优度的步骤包括:
对于新程序的两个变异条件语句真分支a和b,称当分支a执行时,分支b一定执行的调度序列个数与全部调度序列个数的比值,为分支a对b的占优度,记为D(a,b);考虑分支b及占优b的所有变异条件语句真分支,那么,这些分支对分支b的占优度之和为分支b的被占优度,记为D(b);根据新程序的所有调度序列及变异条件语句真分支之间的占优关系,利用占优度的公式可计算出变异条件语句真分支之间的占优度,进一步可得到各变异条件语句真分支的被占优度;考虑某新程序的两个变异条件语句真分支b1和b2,根据占优度的定义可以得到,当b1>cb2时,D(b1,b2)=1;当b1>cb2时,0<D(b1,b2)<1;另外,如果满足b1||b2,那么,D(b1,b2)=D(b2,b1)=0;为了计算b1>cb2时的D(b1,b2),根据该程序的调度序列个数,记为n,及满足b1>cb2的调度序列个数,并记为m,利用占优度的计算公式即可得到分支b1和b2之间的占优度;考虑某新程序的变异条件语句真分支b,如果该程序共有T个这样的分支,它们要么满足完全占优b,要么满足部分占优b,并记这T个分支分别为b1,b2,…,bT,那么,它们对分支b的占优度分别为D(b1,b),D(b2,b),…,D(bT,b),利用被占优度的计算公式可得到变异条件语句真分支b的被占优度。
5.根据权利要求1所述的基于占优度的消息传递并行程序变异体约简方法,其特征在于,所述判断第2类变异条件语句真分支是否是冗余的分支的方法:
假设新程序S共有n个变异条件语句,记这n个语句的真分支分别为b1,b2,…,bn,并用集合B={b1,b2,…,bn}表示;集合B中各变异条件语句真分支之间的占优度及各变异条件语句真分支的被占优度分别为:D(bi,bj),i,j=1,2,…,n,i≠j及D(bi),i=1,2,…,n;根据被占优度对变异条件语句真分支进行分类,第1类变异条件语句真分支的被占优度小于1,第2类变异条件语句真分支的被占优度大于或等于1;由于只有第2类变异条件语句真分支才可能是冗余的分支,因此,将这类分支都放入集合B′中,并按被占优度进行降序排序,可得到排序后的集合其中,bi′,i=1,2,…,m为集合B′中的变异条件语句真分支,m为B′中的分支个数;对于集合B′中的变异条件语句真分支bi′,i=1,2,…,m,考察是否存在变异条件语句真分支bj,bj≠bi′,bj∈B,使得D(bj,bi′)=1;如果上述情况满足,那么,变异条件语句真分支bi′是冗余的分支;如果上述情况不满足,那么,考察是否存在变异条件语句真分支集合{b1,b2,…,bt|bj∈B,bj≠bi′,bj||bk,i,k=1,2,…,t,t<n},使得如果存在,那么,变异条件语句真分支bi′是冗余的分支。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510140052.3A CN104750610B (zh) | 2015-03-24 | 2015-03-24 | 基于占优度的消息传递并行程序变异体约简方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510140052.3A CN104750610B (zh) | 2015-03-24 | 2015-03-24 | 基于占优度的消息传递并行程序变异体约简方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104750610A true CN104750610A (zh) | 2015-07-01 |
CN104750610B CN104750610B (zh) | 2018-01-09 |
Family
ID=53590342
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510140052.3A Expired - Fee Related CN104750610B (zh) | 2015-03-24 | 2015-03-24 | 基于占优度的消息传递并行程序变异体约简方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104750610B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739746A (zh) * | 2018-12-12 | 2019-05-10 | 江苏师范大学 | 一种基于原语句占优分析的变异测试方法 |
CN110084369A (zh) * | 2019-04-08 | 2019-08-02 | 西北工业大学 | 基于多目标优化的变异测试变异体约简方法 |
CN110334020A (zh) * | 2019-06-24 | 2019-10-15 | 北京科技大学 | 一种冗余变异体识别方法及识别装置 |
CN113590474A (zh) * | 2021-07-12 | 2021-11-02 | 山东建筑大学 | 一种并行程序顽固变异体的判定方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754760A (en) * | 1996-05-30 | 1998-05-19 | Integrity Qa Software, Inc. | Automatic software testing tool |
CN102331966A (zh) * | 2011-01-10 | 2012-01-25 | 中国矿业大学 | 面向路径的软件测试数据进化生成系统 |
CN103605605A (zh) * | 2013-11-21 | 2014-02-26 | 中国矿业大学 | 基于语句占优关系和两阶段遗传算法的高阶变异测试方法 |
-
2015
- 2015-03-24 CN CN201510140052.3A patent/CN104750610B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754760A (en) * | 1996-05-30 | 1998-05-19 | Integrity Qa Software, Inc. | Automatic software testing tool |
CN102331966A (zh) * | 2011-01-10 | 2012-01-25 | 中国矿业大学 | 面向路径的软件测试数据进化生成系统 |
CN103605605A (zh) * | 2013-11-21 | 2014-02-26 | 中国矿业大学 | 基于语句占优关系和两阶段遗传算法的高阶变异测试方法 |
Non-Patent Citations (3)
Title |
---|
徐拾义: "降低软件变异测试复杂性的新方法", 《上海大学学报(自然科学版)》 * |
梁煜: "消息传递并行程序的测试及其通信环境", 《中国博士学位论文全文数据库信息科技辑》 * |
田甜,巩敦卫: "消息传递并行程序路径覆盖测试数据生成问题的模型及其进化求解方法", 《计算机学报》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739746A (zh) * | 2018-12-12 | 2019-05-10 | 江苏师范大学 | 一种基于原语句占优分析的变异测试方法 |
CN110084369A (zh) * | 2019-04-08 | 2019-08-02 | 西北工业大学 | 基于多目标优化的变异测试变异体约简方法 |
CN110334020A (zh) * | 2019-06-24 | 2019-10-15 | 北京科技大学 | 一种冗余变异体识别方法及识别装置 |
CN110334020B (zh) * | 2019-06-24 | 2020-08-11 | 北京科技大学 | 一种冗余变异体识别方法及识别装置 |
CN113590474A (zh) * | 2021-07-12 | 2021-11-02 | 山东建筑大学 | 一种并行程序顽固变异体的判定方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104750610B (zh) | 2018-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2948250C (en) | System and method for safety-critical software automated requirements-based test case generation | |
CN107783758B (zh) | 一种智能合约工程方法 | |
CN110705078B (zh) | 一种核动力装置的仿真模型开发系统及分析方法 | |
US20220398373A1 (en) | Multi-stage fpga routing method for optimizing time division multiplexing | |
WO2007124057A2 (en) | Computer program generating | |
CN104573063A (zh) | 一种基于大数据的数据分析方法 | |
CN104750610A (zh) | 基于占优度的消息传递并行程序变异体约简方法 | |
CN105426312A (zh) | 一种冒烟测试用例集生成方法和装置 | |
CN109739740A (zh) | 一种aadl模型组合形式化验证方法 | |
CN107977312B (zh) | 一种基于复杂接口时序的软件系统测试验证方法 | |
CN106126279A (zh) | 自动添加bim模型族文件信息的方法及系统 | |
Liu et al. | Net-structure-based conditions to decide compatibility and weak compatibility for a class of inter-organizational workflow nets | |
CN109656801B (zh) | 一种基于路径自适应技术的业务流测试用例自动生成系统 | |
CN118466382A (zh) | 一种可完成编写程序仿真的plc控制器 | |
CN107273193A (zh) | 一种基于dag的面向多计算框架的数据处理方法及系统 | |
CN105159746B (zh) | 面向容错组合web服务的可靠性仿真工具 | |
CN111651507A (zh) | 一种大数据加工方法及系统 | |
CN115906927B (zh) | 基于人工智能的数据访问分析方法、系统及云平台 | |
Ergurtuna et al. | An efficient formula synthesis method with past signal temporal logic | |
Bucaioni et al. | Trace-based timing analysis of automotive software systems: an experience report | |
Wichmann et al. | Specification and execution of system optimization processes with UML activity diagrams | |
CN104572802A (zh) | 用于加载具有复杂关系的数据的方法和系统 | |
CN103226512A (zh) | 基于构件测试用例集组合的构件组装测试方法 | |
CN114036769A (zh) | 面向航电系统物理架构的功能部署方案生成方法及装置 | |
Gurad et al. | An approach to code generation from uml diagrams |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180109 Termination date: 20190324 |