CN104750610B - 基于占优度的消息传递并行程序变异体约简方法 - Google Patents
基于占优度的消息传递并行程序变异体约简方法 Download PDFInfo
- Publication number
- CN104750610B CN104750610B CN201510140052.3A CN201510140052A CN104750610B CN 104750610 B CN104750610 B CN 104750610B CN 201510140052 A CN201510140052 A CN 201510140052A CN 104750610 B CN104750610 B CN 104750610B
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 109
- 230000009467 reduction Effects 0.000 title claims abstract description 16
- 230000035772 mutation Effects 0.000 claims abstract description 34
- 238000012360 testing method Methods 0.000 claims abstract description 33
- 238000006243 chemical reaction Methods 0.000 claims abstract description 8
- 230000008569 process Effects 0.000 claims description 20
- 238000004891 communication Methods 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000003780 insertion Methods 0.000 claims description 5
- 230000037431 insertion Effects 0.000 claims description 5
- 235000013399 edible fruits Nutrition 0.000 claims 1
- 230000014509 gene expression Effects 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 102100022138 Achaete-scute homolog 3 Human genes 0.000 description 1
- 102000005643 COP9 Signalosome Complex Human genes 0.000 description 1
- 108010070033 COP9 Signalosome Complex Proteins 0.000 description 1
- 101000901094 Homo sapiens Achaete-scute homolog 3 Proteins 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010181 polygamy Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
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,b2,…,bk|bi∈B,bi≠b1′,bi||bj,i,j=1,2,…,kk<n},使得如果存在,那么,变异条件语句真分支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.基于占优度的消息传递并行程序变异体约简方法,其特征在于,该方法包括:
形成消息传递并行程序弱变异测试转化后的新程序;
根据新程序中各变异条件语句真分支在各调度序列下的执行情况,确定新程序中各变异条件语句真分支之间的占优关系;
定义占优度和被占优度:对于消息传递并行程序中的两个分支a和b,称当分支a执行时,分支b一定执行的调度序列个数与全部调度序列个数的比,为分支a对b的占优度,记为D(a,b);考虑分支b及占优b的所有分支,那么,这些分支对分支b的占优度之和为分支b的被占优度,记为D(b);
根据变异条件语句真分支之间的占优关系,计算各变异条件语句真分支之间的占优度,根据变异条件语句真分支之间的占优度,计算各变异条件语句真分支的被占优度;
利用变异条件语句真分支之间的占优度和各变异条件语句真分支的被占优度,得到冗余的变异条件语句真分支并进行约简;
得到约简后的变异条件语句真分支和变异体;
其中,所述利用变异条件语句真分支之间的占优度和各变异条件语句真分支的被占优度,得到冗余的变异条件语句真分支的步骤包括:
根据变异条件语句真分支的被占优度将变异条件语句真分支分成两类,第1类变异条件语句真分支的被占优度小于1,第2类变异条件语句真分支的被占优度大于或等于1;
对第2类变异条件语句真分支进行降序排列;
判断第2类变异条件语句真分支是否是冗余的分支:如果存在某个变异条件语句真分支对第2类变异条件语句真分支的占优度为1,那么,被占优的第2类变异条件语句真分支是冗余的分支;另外,如果存在某些互不占优的变异条件语句真分支,它们对第2类分支的占优度之和为1,那么,被占优的第2类变异条件语句真分支是冗余的分支。
2.根据权利要求1所述的基于占优度的消息传递并行程序变异体约简方法,其特征在于,所述形成消息传递并行程序弱变异测试转化后的新程序的步骤包括:
对消息传递并行程序的进程内语句和进程间的通信语句,采用针对性的方法构建变异条件语句;对于不同类型的变异语句,其变异条件语句插入原程序的方式是不同的:如果变异语句是进程内语句,那么,把与该语句相关的变异条件语句,依次插入在该语句之前;如果变异语句是进程间的通信语句,那么,在插入变异条件语句之前,将相关的通信语句插入在变异语句或其匹配语句之后;然后,将变异条件语句插入到通信语句或其匹配语句之后;把全部的变异条件语句都插入原程序中,可形成一个新程序。
3.根据权利要求1所述的基于占优度的消息传递并行程序变异体约简方法,其特征在于,所述确定新程序中各变异条件语句真分支之间的占优关系的步骤包括:
基于消息传递并行程序的不确定接收语句,形成新程序的所有调度序列;根据各调度序列下执行变异条件语句真分支的条件,得到变异条件语句真分支之间的占优关系:考虑新程序的两个变异条件语句真分支a和b,在该程序输入空间的任意输入下,如果在该程序的所有调度序列下,都满足当分支a执行时,分支b一定会执行,那么,称分支a完全占优b,记为a fc b;如果仅在该程序的部分调度序列下,满足分支a执行时,分支b一定会执行,那么,称分支a部分占优b,记为a fp b;当满足a fc b或者a fp b时,称分支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完全占优b2,即b1 fc b2时,D(b1,b2)=1;当b1部分占优b2,即b1 fp b2时,0<D(b1,b2)<1;另外,如果满足b1与b2互不占优,即b1||b2,那么,D(b1,b2)=D(b2,b1)=0;为了计算b1 fp b2时的D(b1,b2),根据该程序的调度序列个数,记为n,及满足b1 fc b2的调度序列个数,并记为m,利用占优度的计算公式即可得到分支b1和b2之间的占优度;考虑某新程序的变异条件语句真分支b,如果该程序共有T个这样的分支,它们要么满足完全占优b,要么满足部分占优b,并记这T个分支分别为b1,b2,L,bT,那么,它们对分支b的占优度分别为D(b1,b),D(b2,b),L,D(bT,b),利用被占优度的计算公式可得到变异条件语句真分支b的被占优度。
5.根据权利要求1所述的基于占优度的消息传递并行程序变异体约简方法,其特征在于,所述判断第2类变异条件语句真分支是否是冗余的分支的方法:
假设新程序S共有n个变异条件语句,记这n个语句的真分支分别为b1,b2,L,bn,并用集合B={b1,b2,L,bn}表示;集合B中各变异条件语句真分支之间的占优度及各变异条件语句真分支的被占优度分别为:D(bi,bj),i,j=1,2,L,n,i≠j及D(bi),i=1,2,L,n;根据被占优度对变异条件语句真分支进行分类,第1类变异条件语句真分支的被占优度小于1,第2类变异条件语句真分支的被占优度大于或等于1;由于只有第2类变异条件语句真分支才可能是冗余的分支,因此,将这类分支都放入集合B′中,并按被占优度进行降序排序,可得到排序后的集合B′={b1′,b2′,L bm′|D(bi′)>D(bj′),i,j=1,2L,m,i<j,m<=n},其中,bi'为集合B'中的变异条件语句真分支,其中i=1,2,···,m,m为B′中的分支个数;对于集合B′中的变异条件语句真分支bi′,i=1,2,L,m,考察是否存在变异条件语句真分支bj,bj≠bi′,bj∈B,使得D(bj,bi′)=1;如果上述情况满足,那么,变异条件语句真分支bi′是冗余的分支;如果上述情况不满足,那么,考察是否存在变异条件语句真分支集合{b1,b2,L,bk|bi∈B,bi≠b1′,bi||bj,i,j=1,2,L,k,k<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 CN104750610A (zh) | 2015-07-01 |
CN104750610B true 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) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739746B (zh) * | 2018-12-12 | 2022-03-01 | 江苏师范大学 | 一种基于原语句占优分析的变异测试方法 |
CN110084369A (zh) * | 2019-04-08 | 2019-08-02 | 西北工业大学 | 基于多目标优化的变异测试变异体约简方法 |
CN110334020B (zh) * | 2019-06-24 | 2020-08-11 | 北京科技大学 | 一种冗余变异体识别方法及识别装置 |
CN113590474B (zh) * | 2021-07-12 | 2022-03-22 | 山东建筑大学 | 一种并行程序顽固变异体的判定方法及系统 |
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 |
---|
消息传递并行程序的测试及其通信环境;梁煜;《中国博士学位论文全文数据库信息科技辑》;20070215(第2期);I138-26 * |
消息传递并行程序路径覆盖测试数据生成问题的模型及其进化求解方法;田甜,巩敦卫;《计算机学报》;20131130;第36卷(第11期);2231-2223 * |
降低软件变异测试复杂性的新方法;徐拾义;《上海大学学报(自然科学版)》;20071031;第13卷(第5期);525-531 * |
Also Published As
Publication number | Publication date |
---|---|
CN104750610A (zh) | 2015-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104750610B (zh) | 基于占优度的消息传递并行程序变异体约简方法 | |
CN106095673B (zh) | 基于web接口的自动化测试方法及系统 | |
Jacobs et al. | The 4th reactive synthesis competition (SYNTCOMP 2017): Benchmarks, participants & results | |
CN104156313A (zh) | 一种Web服务测试用例自动生成方法 | |
US20160124731A1 (en) | Automated code-generation for cross-language development, testing, and integration | |
CN111045670B (zh) | 一种二进制代码与源代码间复用关系的识别方法与装置 | |
US11204860B2 (en) | Methods and apparatuses for generating smart contract test case | |
CN107918358B (zh) | 数控装备故障分析方法和装置 | |
CN105117379A (zh) | 自动转换程序文本的方法及装置 | |
CN102289491B (zh) | 基于模糊规则推理的并行应用性能脆弱点分析方法 | |
JP2007334627A (ja) | サービスベースソフトウェア設計支援方法及びそのための装置 | |
Jacobs et al. | The 3rd reactive synthesis competition (SYNTCOMP 2016): Benchmarks, participants & results | |
US9002899B2 (en) | Method of merging and incremental construction of minimal finite state machines | |
CN105164667B (zh) | 修改分析流 | |
CN102918522A (zh) | 用于生成统计研究信息的系统、方法以及逻辑 | |
CN107608890A (zh) | 一种基于带权重的事件处理函数模型生成gui软件测试用例的方法 | |
CN105930162B (zh) | 一种基于子图搜索的特征定位方法 | |
Guo et al. | Limited Query Graph Connectivity Test | |
Gaspers et al. | Guarantees and limits of preprocessing in constraint satisfaction and reasoning | |
CN103778210B (zh) | 一种待分析文件的文件具体类型的判断方法及装置 | |
Kagliwal et al. | Set-cover heuristics for two-level logic minimization | |
Meier | Parametrised enumeration | |
CN103092994B (zh) | 基于信息概念格矫正的svm文本自动分类方法及其系统 | |
Ehlers et al. | Faster sorting networks for $17 $, $19 $ and $20 $ inputs | |
CN109643407A (zh) | 列车设备管理装置和列车设备管理程序 |
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 |
Granted publication date: 20180109 Termination date: 20190324 |
|
CF01 | Termination of patent right due to non-payment of annual fee |