CN114461535B - 面向并行变异算子的顽固变异体测试数据生成方法及系统 - Google Patents
面向并行变异算子的顽固变异体测试数据生成方法及系统 Download PDFInfo
- Publication number
- CN114461535B CN114461535B CN202210388183.3A CN202210388183A CN114461535B CN 114461535 B CN114461535 B CN 114461535B CN 202210388183 A CN202210388183 A CN 202210388183A CN 114461535 B CN114461535 B CN 114461535B
- Authority
- CN
- China
- Prior art keywords
- variant
- variants
- stubborn
- test data
- statement
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 115
- 238000000034 method Methods 0.000 title claims abstract description 86
- 230000035772 mutation Effects 0.000 title claims abstract description 48
- 230000002147 killing effect Effects 0.000 claims abstract description 25
- 238000011156 evaluation Methods 0.000 claims abstract description 21
- 238000004891 communication Methods 0.000 claims abstract description 19
- 230000003044 adaptive effect Effects 0.000 claims abstract description 10
- 230000002085 persistent effect Effects 0.000 claims description 32
- 230000008569 process Effects 0.000 claims description 29
- 230000001419 dependent effect Effects 0.000 claims description 8
- 239000011159 matrix material Substances 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000004519 manufacturing process Methods 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 23
- 230000000875 corresponding effect Effects 0.000 description 10
- 238000013178 mathematical model Methods 0.000 description 5
- 230000002068 genetic effect Effects 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Quality & Reliability (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及特定计算模型的计算机系统相关技术领域,提出了面向并行变异算子的顽固变异体测试数据生成方法及系统,方法包括如下步骤:确定变异体顽固性的评价指标,对待测试程序的变异体进行顽固性判定,得到顽固变异体;根据变异通信语句之间的占优关系,将得到的顽固变异体进行初次分组;按照变异语句与待测试程序的输入参量的相关性,将初次分组后的顽固变异体进行再分组;根据再分组后的顽固变异体构建测试数据生成模型,基于集合进化,设置与杀死变异体相关的适应值函数,求解测试数据生成模型,生成能够杀死顽固变异体的测试数据。本发明能够对并行变异算子引发的变异体顽固性进行判定,并生成杀死顽固变异体的测试数据,提高测试效率。
Description
技术领域
本发明涉及特定计算模型的计算机系统相关技术领域,具体的说,是涉及面向并行变异算子的顽固变异体测试数据生成方法及系统。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,并不必然构成在先技术。
软件测试是提高软件质量的重要途径。为了对软件进行测试,通常需要准备一定数量的测试数据,称为测试数据集。测试数据集的充分性是提高软件测试可信度的关键前提。评价某测试数据集的充分性,往往通过对被测软件实施变异测试来实现。针对顽固变异体,生成杀死该变异体的测试数据更加困难。顽固变异体增加了变异测试的代价,是影响变异测试效率的重要因素。顽固变异体的有效判定和杀死顽固变异体测试数据的快速生成是提高变异测试效率的关键途径之一。
并行程序指每个流程拥有各自独立的存储器,程序执行过程中,流程之间的交互主要以消息传递的方式实现。通过多流程并行执行和相互通信,并行程序能够实现较高的求解速度和精度,已经广泛应用于科学研究和生产生活中,如天气预报、邮件过滤以及病毒分析等。针对并发程序的并行变异算子,可以揭示并发、通信以及交互等方面的缺陷。为了改进变异测试效率,研究该类变异算子的顽固变异测试理论和方法是十分有意义的。
发明人发现,已有方法的测试对象为传统变异算子,尚缺乏针对揭示并行与通信缺陷的并行变异算子引导的顽固变异体的研究,且传统变异算子相应的判定指标没有考虑并行变异算子对程序造成的影响,因此无法直接用来衡量并行变异算子的顽固性;由于并行程序不确定性,现有的测试数据生成算法中的变异体分组方法不能实现并行程序变异体的分组。
发明内容
本发明为了解决上述问题,提出了面向并行变异算子的顽固变异体测试数据生成方法及系统,能够对并行变异算子引发的变异体顽固性进行判定,并且有针对性的生成杀死顽固变异体的测试数据,降低测试代价,提高测试效率。
为了实现上述目的,本发明采用如下技术方案:
一个或多个实施例提供了面向并行变异算子的顽固变异体测试数据生成方法,包括如下步骤:
确定变异体顽固性的评价指标,对待测试程序的变异体进行顽固性判定,得到顽固变异体;
根据变异通信语句之间的占优关系,将得到的顽固变异体进行初次分组;
按照变异语句与待测试程序的输入参量的相关性,将初次分组后的顽固变异体进行再分组;
根据再分组后的顽固变异体构建测试数据生成模型,基于集合进化,设置与杀死变异体相关的适应值函数,求解测试数据生成模型,生成能够杀死顽固变异体的测试数据。
一个或多个实施例提供了面向并行变异算子的顽固变异体测试数据生成系统,包括:
顽固变异体判定模块:被配置为用于确定变异体顽固性的评价指标,对待测试程序的变异体进行顽固性判定,得到顽固变异体;
第一分组模块:被配置为用于根据变异通信语句之间的占优关系,将得到的顽固变异体进行初次分组;
第二分组模块:被配置为用于根据变异语句与待测试程序的输入参量的相关性,将初次分组后的顽固变异体进行再分组;
测试数据生成模块:被配置为用于根据再分组后的顽固变异体构建测试数据生成模型,基于集合进化,设置与杀死变异体相关的适应值函数,求解测试数据生成模型,生成能够杀死顽固变异体的测试数据。
与现有技术相比,本发明的有益效果为:
本发明给出了新的顽固变异体分组方法,基于变异语句之间的占优关系与输入参量的相关性将变异体进行两次分组,保证同组变异体覆盖相同的变异分支,并存在相同相关输入参量,筛选掉不相关输入变量,降低测试数据生成模型的求解难度,提高测试数据的生成效率。
本发明的优点以及附加方面的优点将在下面的具体实施例中进行详细说明。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的限定。
图1是本发明实施例1的方法流程图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。需要说明的是,在不冲突的情况下,本发明中的各个实施例及实施例中的特征可以相互组合。下面将结合附图对实施例进行详细描述。
技术术语解释:
并行变异算子:对程序并发语句实施变异所依据的规则叫做并行变异算子。
变异体:对原程序实施变异操作后得到的新的程序为变异体。
顽固变异体:在给定测试数据集中,只能被其中极少数的测试数据杀死的变异体为顽固变异体。
变异语句:被测软件程序的一个语句实施变异后生成变异语句,形成的新的程序就是变异体,即变异体内包含变异语句。
变异通信语句:是指对程序中的通信语句进行变异后得到的变异语句。
实施例1
在一个或多个实施方式公开的技术方案中,如图1所示,面向并行变异算子的顽固变异体测试数据生成方法,包括如下步骤:
步骤1、确定变异体顽固性的评价指标,对待测试程序的变异体进行顽固性判定,得到顽固变异体;
步骤2、根据变异通信语句之间的占优关系,将得到的顽固变异体进行初次分组;
步骤3、按照变异语句与待测试程序的输入参量的相关性,将初次分组后的顽固变异体进行再分组;
步骤4、根据再分组后的顽固变异体构建测试数据生成模型,基于集合进化,设置与杀死变异体相关的适应值函数,求解测试数据生成模型,生成能够杀死顽固变异体的测试数据。
所述测试数据生成模型,将变异体被杀死作为目标函数,并对每一组顽固变异体设置一个约束函数,求解后对应每一组顽固变异体生成测试数据。
进一步的技术方案,所述测试数据生成模型,将与每组顽固变异体A的变异语句相关的程序输入变量作为该组顽固变异体A的决策变量。
本实施例中,对应每一组顽固变异体生成测试数据,具体的是指:每一组顽固变异体都有对应的能够杀死该组顽固变异体的测试数据,即顽固变异体与测试数据是一组对一组的关系,针对每组顽固变异体都有对应的测试数据,针对性强可以提高测试数据的准确度。
本实施例给出了新的顽固变异体分组方法,基于变异语句之间的占优关系与输入参量的相关性将变异体进行两次分组,保证同组变异体覆盖相同的变异分支,变异分支即为变异语句所在的分支。并存在相同相关输入参量,筛选掉不相关输入变量,降低测试数据生成模型的求解难度,提高测试数据的生成效率。
在一些实施例中,步骤1中,确定的变异体顽固性的评价指标可以包括:变异语句的可达概率、变异语句的传播概率、变异语句与流程的相关性、变异语句与输入变量的相关性。
在强变异测试准则下,杀死变异体需要满足三个条件:可达性、必要性和充分性。也就是说,测试数据杀死变异体需要具备三步:(1)测试数据能够到达变异语句s;(2)使程序在s处的状态发生改变;(3)该变化导致程序输出不同。由上述条件可知,测试数据到达变异语句的概率越小,测试数据传播到输出的概率越小,杀死变异体的测试用例更难生成。此外,变异语句相关的流程数量和变异语句相关的输入变量数量也会影响变异体的顽固性。一般地,变异语句相关的流程数量越多,被检测出来的可能性越大,变异语句相关的输入数量越多,输入变量的范围越大,则被检测出来的可能性越小。
本实施例中将变异语句的可达概率,变异语句的传播概率,变异语句与流程的相关性,变异语句与输入变量的相关性作为顽固变异体的评价指标。
本实施例中,变异语句s中的所有变量以及数据依赖的变量,记为集合VMS。在VMS集合中,存在通信依赖的变量所在的流程为变异语句相关流程,记为PMS,集合PMS中的元素的数量为mr;变异语句各个相关流程的程序输入的并集为变异语句相关的输入,记为IVMS。
本实施例中,所述流程是指:分布存储的并行程序包含多个流程,多个流程同时执行,采用消息传递或者共享存储交互信息,多个流程共同为整个程序功能起作用。
评价指标的确定能够直接影响变异体顽固度的评价准确性,本实施例中创新性的提出了将变异语句的传播概率作为评价指标,并且改进了变异语句的可达概率的计算方法,下面对评价指标进行详细说明。
1.变异语句可达概率;
该指标反映变异语句的可达性;由于并行程序通信语句的存在,语句的执行不仅受变异语句所在流程执行轨迹的影响,还受其他流程执行轨迹的影响,因此,基于通信语句的类型,将变异语句的可达概率的计算分成两类。
其中,通信语句的类型主要包含:发送语句、接收语句和等待语句等许多语句类型。
本实施例中,根据不同通信语句类型对变异语句可达性的影响,提出新的变异通信语句可达概率的计算方法。
假设变异语句s的所在流程为,如果s是可达的,那么,从流程开始到s,至少存在一条可执行路径。s的可达性与路径上的条件语句密切相关。表1列出条件语句的执行概率,其中a,b是变量,,是谓词,q是一个常数,本实施例中设定。
表1
2.变异语句的传播概率;
该指标反映变异算子属性;与传统变异算子相比,并行变异算子生成的变异体除了影响所在流程的执行轨迹与输出结果,还会影响其他流程的执行轨迹与输出结果,因此,相较于传统变异体算子,针对并行变异算子,本实施例增加变异语句的传播概率作为变异体顽固性的判定,进一步提高了识别的准确性。
基于变异语句类型的不同,将变异语句的传播概率的计算方法分为两类。
(1)若变异语句为发送语句,构建变异语句所涉及的变量到程序输出语句的数据依赖路径,以及构建变异语句的接收语句涉及的变量到程序输出语句的数据依赖路径,该变异语句的传播概率为构建的两条路径执行的概率的最小值;
具体的,变异语句除了影响变异语句所在流程的输出结果,还会影响其他流程的输出结果。基于此,首先,构建变异语句所涉及的变量到程序输出语句的数据依赖路径,其次,构建变异语句的接收语句涉及的变量到程序输出语句的数据依赖路径。因此,该变异语句的传播概率为两条路径执行的概率的最小值,如公式(5)所示:
变异语句所涉及的变量包括:变异语句s的所有变量以及存在数据依赖的变量。
数据依赖路径即为从变异语句节点开始,与变异语句中变量存在数据依赖的节点连接起来的路径。
(2)变异语句为除了发送语句的其他语句类型,如接收语句、等待语句等。
构建变异语句所涉及的变量到程序输出语句的数据依赖路径。该路径的可执行概率则为该变异语句的传播概率。
变异语句所涉及的变量包括:变异语句s中的所有变量以及存在数据依赖的变量。
3.变异语句与流程的相关性;
该指标反映变异语句相关的流程数。一般地,不同的变异语句,相关流程数量是不同的,相关流程越多,变异体被检测出来的可能性越大,因此将变异语句的相关流程PMS数量mr与待测程序中的流程总数的比值作为判断顽固变异体的指标。假设程序流程数量为m,执行路径,变异语句与流程的相关性pr为:
穿越变异语句s所有路径的变异语句与流程相关性向量,即为每一个路径(路径1到路径L)的流程相关性的概率集合,如下:
4.变异语句与输入变量的相关性;
IVMS越多,输入变量的范围越大,变异体被检测出来的可能性越小。因此,变异语句与输入变量的相关性将影响变异体的顽固性。假设在执行的情况下,IVMS的数目为Ivn,待测程序输入总数为tn,则变异语句与输入变量的相关性如公式(8)所示。
考虑所有路径,变异语句与输入变量的相关性为:穿越变异语句s所有路径的变异语句与输入变量相关性向量,即每一个路径(路径1到路径L)的输入变量相关性的概率集合,如公式(9)所示。
基于确定变异体顽固性的评价指标,对待测试程序的变异体进行顽固性判定,得到顽固变异体的方法,具体的:通过建立顽固性指标实现,在可达概率为1时,所述顽固性指标为不同执行路径下顽固性指标的最小值;可达概率为1即为该变异语句是可达的。
其中,每个执行路径下顽固性指标为:按照该路径执行时的各个评价指标按照设定的权重的加权和,当变异体的顽固性指标大于设定阈值时,则判定该变异体为顽固变异体。
在本实施例中,所述顽固性指标函数的值越大,变异体测试数据生成越难;预先设定一个阈值,所述顽固性指标的值大于设定的阈值,则认为变异体M是顽固的,归为顽固性变异体,具体方法如下:
变异语句s的可达性是变异体顽固性的前提条件,只有s可达,才有可能影响程序输出,若s是可达概率为1,则M顽固性则取决于其他三个指标。执行路径,若s必被执行,sub(path l )计算方式如(11);反之,采用公式(10)计算;M顽固性Sub(M)如公式(12)所示。
其中,,和Q(s)的取值与M的顽固性成反比,M为变异体。在反映M被杀死的难易程度时,通过α、β、γ、κ、 、体现不同评价指标分别有不同的重要程度,这些权值的设置是基于多次实验结果。首先,从变异体集合中随机抽取变异体,记为集合Z,执行Z中变异体,筛选出变异得分低的顽固变异体集合;然后,将权值分别赋予不同值,计算Z中变异体的Sub值,分别选出基于不同权值下的顽固变异体集合;最后,将多个顽固变异体集合分别与Z 1进行对比,从而选择顽固变异体集合差异最小的权值。
步骤3中,为初分组的步骤,根据变异语句之间的占优关系将顽固变异体进行分组,具体如下:
由顽固变异体判定可知,当到达一定深度的分支,其父节点为顽固变异体,则子节点也是顽固变异体,顽固变异体之间存在占优的关系,如果测试数据覆盖父节点,则一定可以覆盖子节点。
对于消息传递并行程序的两个分支和,当分支执行时,分支必然执行的发送节点执行顺序的个数与总发送节点执行顺序的个数的比值,为分支对的占优度,记为。基于所有的发送节点执行顺序,分支执行,一定执行,则;,基于所有的发送节点执行顺序,分支执行,一定不执行,则;
步骤2中,根据变异语句之间的占优关系将顽固变异体进行初次分组,具体的:
步骤21、将筛选出的顽固变异体根据顽固度从大到小进行排列;
步骤22、选择最顽固的变异体作为聚类中心;
步骤23、建立聚类中心与其他变异语句的占优度矩阵,选择占优度等于1的变异体作为簇成员;
循环执行步骤22-23,对未分组的顽固变异体进行分组,直到所有的顽固变异体分组完成。
步骤3中,待测试程序的输入参量包括程序输入变量、发送节点执行顺序。
按照变异语句与待测试程序的输入参数的相关性,将初次分组后的顽固变异体进行再分组为:每个初分组后的组内,在同一发送节点执行顺序下,将具有相同的相关程序输入变量的顽固变异体归为一组,具体如下:
变异语句与输入变量的相关性,即为:如果到达变异分支的每一个节点都与某输入变量无关,则判定该变异分支与该输入变量无关。如果到达变异分支的节点接收了来自其他流程的输入变量,则该变异分支与传递来的输入变量与有关。
首先,分别考察与的第一行,若,则与为一组,直到所有与的第一行比较结束。然后,将剩下没有分组的变异体的第一行再进行互相比较,直到所有变异体比较结束,得到基于发送节点执行顺序的变异语句分组。对于数组的其他行的比较重复上述过程,直到得到所有基于所有发送节点执行顺序的变异分支分组。
步骤4中,所述测试数据生成模型,将变异体被杀死作为目标函数,针对每一组顽固变异体设定一个约束函数,将与每组变异语句相关的程序输入变量作为每一组的决策变量,固定发送节点执行顺序,删除不相关的输入变量,可以缩小搜索空间。
步骤4中,根据分组后的顽固变异体,建立测试数据生成模型,具体如下:
分为一组的顽固变异体作为一个顽固变异体集合,对于顽固变异体集合,为第个变异分组测试输入变量集合,令为反映测试输入集杀死中的变异体,取得最小值的充要条件是杀死中的变异体,即同时取得最小值。因为中所有的变异体具有相同的相关程序输入,且该分组中的变异体存在占优关系,因此覆盖的变异分支是相同的。基于此,集合的变异测试用例生成问题的数学模型可以表示为:
(16)
本实施例中,针对每一组顽固变异体分别设定目标函数、约束函数和约束变量,建立测试数据生成模型,进而可以通过求解每一个模型,生成准确杀死变异体的测试数据。
步骤4中,基于集合进化求解测试数据生成模型,生成杀死顽固变异体组的测试数据,具体如下:
针对顽固变异体的测试数据数学模型,采用多种群遗传算法生成测试数据。为了指导个体的进化,选出最优个体,需要计算个体的适应值。
对于变异分支,因为决策变量是相关输入变量,为已知的。所以,进化个体编码只需要在相关输入变量部分,不需要在程序全部输入变量上实施。对于不相关的输入变量,在其输入域内随机的取一个固定值,在整个集合进化过程中,不相关的输入变量值保持不变。通过这种方式,种群的搜索域缩减了维度。
遗传算法的遗传操作包括选择,交叉和变异。其中,选择是从当前种群中,使用适当的策略(例如,轮盘赌)来选择最优个体;通过对已有个体实施交叉和变异操作,产生新的个体,其中交叉包含集合内部的交叉与集合外部的交叉。直到生成杀死所有顽固变异体的测试数据或者到达最大迭代次数,算法终止。
本实施例中分组过程中将存在占优关系的顽固变异体作为一组,这样的分组好处为每一组中存在相同的覆盖分支,这样测试数据在计算约束函数的时候,仅需要算一次即可,降低了测试数据执行次数,提高了生成效率。
为说明本实施例方法的效果,采用具体的被测程序进行了实验。
选择程序Common_divisor作为被测程序,基于变异分析,评价所提方法的性能。
Common_divisor程序如下所示:
static void Common_divisor(int pro_id, int input[INPUT_NUM],intsequence[SEQUENCE-LENGTH])
{
int k = 0;
int a, b, c, d, buf[2];
if (pro_id == 0)
{
MPI_Send(input, 2, MPI_INT, 1, 1, MPI_COMM_WORLD);
MPI_Send(input + 2, 2, MPI_INT, 2, 1, MPI_COMM_WORLD);
MPI_Send(input + 4, 2, MPI_INT, 3, 1, MPI_COMM_WORLD);
MPI_Recv(&a, 1, MPI_INT, sequence[0], MPI_ANY_TAG, MPI_COMM_WORLD,MPI_STATUS_IGNORE);
MPI_Recv(&b, 1, MPI_INT, sequence[1], MPI_ANY_TAG, MPI_COMM_WORLD,MPI_STATUS_IGNORE);
MPI_Recv(&c, 1, MPI_INT, sequence[2], MPI_ANY_TAG, MPI_COMM_WORLD,MPI_STATUS_IGNORE);
buf[0] = a; buf[1] = b;
MPI_Send(buf, 2, MPI_INT, 4, 1, MPI_COMM_WORLD);
MPI_Recv(&d, 1, MPI_INT, 4, 2, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
if (c == d)
{
printf(c);
}
else if (c == 1 || d == 1)
{
c = 1;
printf(c);
}
else
{
while (c != d)
{
if (c < d)
{
d = d - c;
}
else
{
c = c - d;
}
}
printf(c);
}
}
if (pro_id == 1 || pro_id == 2 || pro_id == 3 || pro_id == 4)
{
MPI_Recv(buf, 2, MPI_INT, 0, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
if (buf[0] == buf[1])
{
MPI_Send(&buf[0], 1, MPI_INT, 0, 2, MPI_COMM_WORLD);
}
else if (buf[0] == 1 || buf[1] == 1)
{
buf[0] = 1;
MPI_Send(&buf[0], 1, MPI_INT, 0, 2, MPI_COMM_WORLD); }
else
{
while (buf[0] != buf[1])
{
if (buf[0] <buf[1])
{
buf[1] = buf[1] - buf[0];
}
else {
buf[0] = buf[0] - buf[1];
}
}
MPI_Send(&buf[0], 1, MPI_INT, 0, 2, MPI_COMM_WORLD);
}
}
}
(1)验证本实施例顽固变异体的判定方法的有效性。
首先,将所有的通信语句实施变异;其次,根据顽固变异体的判定方法,得出顽固变异体的集合,计算顽固变异体的顽固性指标Sub(M)值;然后,采用生成满足语句覆盖的测试数据集,采用该数据集检测变异体实际被杀死的概率,最后,将Sub(M)值和实际被杀死的概率求均值,比较两者之间的关系。
表2描述了上述实验过程的实验结果,根据本实施例方法得出的顽固变异体集合,采用满足语句覆盖的数据集检测变异体实际被杀死的概率,其实际被杀死的概率低于30%,则证明了判定出来的变异体确实是顽固的,代表本实施例的方法有效。可见实验证明,本实施例的顽固变异体的判定方法是有效的。
表2
(2)验证本实施例生成测试数据的有效性。
为了验证本实施例测试数据生成方法的优越性,设计一组对比方法,分别为本实施例的方法和传统方法,其中,实验次数为10,终止迭代次数是600代。通过比较两种方法生成杀死顽固变异体测试数据的迭代次数与时间消耗,验证本发明方法的有效性。表3显示了平均的迭代次数与时间消耗,表4显示了找到杀死顽固变异体的成功率。
表3
表4
与现有的方法相比较,本实施例的方法将变异体分为两组,采用集合进化的方法生成测试数据,减少了迭代次数和时间消耗;且现有方法每次只能生成杀死一个变异体的测试数据。且本实施例的方法生成杀死顽固变异体的测试数据的成功率高于传统的遗传算法。因此,本实施例的测试数据生成方法比传统的方法效率更高。
实施例2
基于实施例1,本实施例提供面向并行变异算子的顽固变异体测试数据生成系统,包括:
顽固变异体判定模块:被配置为用于确定变异体顽固性的评价指标,对待测试程序的变异体进行顽固性判定,得到顽固变异体;
第一分组模块:被配置为用于根据变异通信语句之间的占优关系,将得到的顽固变异体进行初次分组;
第二分组模块:被配置为用于按照变异语句与待测试程序的输入参量的相关性,将初次分组后的顽固变异体进行再分组;
测试数据生成模块:被配置为用于根据再分组后的顽固变异体构建测试数据生成模型,基于集合进化,设置与杀死变异体相关的适应值函数,求解测试数据生成模型,生成能够杀死顽固变异体的测试数据。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (8)
1.面向并行变异算子的顽固变异体测试数据生成方法,其特征在于,包括如下步骤:
确定变异体顽固性的评价指标,对待测试程序的变异体进行顽固性判定,得到顽固变异体;
根据变异通信语句之间的占优关系,将得到的顽固变异体进行初次分组;
按照变异语句与待测试程序的输入参量的相关性,将初次分组后的顽固变异体进行再分组;
根据再分组后的顽固变异体构建测试数据生成模型,基于集合进化,设置与杀死变异体相关的适应值函数,求解测试数据生成模型,生成能够杀死顽固变异体的测试数据;
根据变异语句之间的占优关系将顽固变异体进行初次分组,具体的:
步骤21、将筛选出的顽固变异体根据顽固度从大到小进行排列;
步骤22、选择最顽固的变异体作为聚类中心;
步骤23、建立聚类中心与其他变异语句的占优度矩阵,选择占优度等于1变异体作为簇成员;
循环执行步骤22-步骤23,直到所有的变异体分组完成;
按照变异语句与待测试程序的输入参数的相关性,将初次分组后的顽固变异体进行再分组为:每个初分组后的组内,在同一发送节点执行顺序下,将具有相同的相关程序输入变量的顽固变异体归为一组。
2.如权利要求1所述的面向并行变异算子的顽固变异体测试数据生成方法,其特征在于:所述测试数据生成模型,以顽固变异体被杀死作为目标函数,并针对每一组顽固变异体设置一个约束函数,将与每组顽固变异体的变异语句相关的程序输入变量作为该组顽固变异体的决策变量,求解后对应每一组顽固变异体生成测试数据。
3.如权利要求2所述的面向并行变异算子的顽固变异体测试数据生成方法,其特征在于:测试数据生成模型的约束函数,具体的:根据每组顽固变异体的相关输入变量和变异语句所在变异分支的层接近度,以及顽固变异体的相关输入变量和变异语句所在变异分支的分支距离,建立相关输入变量覆盖变异语句所在变异分支需要满足的约束函数。
4.如权利要求1所述的面向并行变异算子的顽固变异体测试数据生成方法,其特征在于:确定的变异体顽固性的评价指标包括:变异语句的可达概率,变异语句的传播概率,变异语句与流程的相关性,以及变异语句与输入变量的相关性。
5.如权利要求4所述的面向并行变异算子的顽固变异体测试数据生成方法,其特征在于:
变异语句可达概率的计算方法为:
若变异语句为接收语句,变异语句的可达概率为:变异语句所在流程的可达概率与相应的发送语句的可达概率的乘积;
若变异语句为除接收语句的其他语句类型,变异语句s的可达概率为:从开始流程到变异语句s,穿越变异语句s的所有路径的可达概率;
或者,变异语句的传播概率的计算方法为:
若变异语句为发送语句,构建变异语句所涉及的变量到程序输出语句的数据依赖路径,以及构建变异语句的接收语句涉及的变量到程序输出语句的数据依赖路径,该变异语句的传播概率为构建的两条路径执行的概率的最小值;
当变异语句为除了发送语句的其他语句类型,构建变异语句所涉及变异的变量到程序输出的函数依赖路径,该路径的可执行概率则为该变异语句的传播概率。
6.如权利要求1所述的面向并行变异算子的顽固变异体测试数据生成方法,其特征在于:对待测试程序的变异体进行顽固性判定的方法,具体的:通过建立顽固性指标实现,在变异语句是可达时,所述顽固性指标为不同执行路径下顽固性指标的最小值;当变异体的顽固性指标大于设定阈值时,则判定该变异体为顽固变异体;
每个执行路径下顽固性指标为:按照该路径执行时,各个变异体顽固性的评价指标按照设定的权重的加权和。
7.如权利要求1所述的面向并行变异算子的顽固变异体测试数据生成方法,其特征在于,求解测试数据生成模型,具体的:基于集合进化求解测试数据生成模型,生成杀死顽固变异体组的测试数据,求解过程中适应值函数采用罚函数。
8.面向并行变异算子的顽固变异体测试数据生成系统,其特征在于,包括:
顽固变异体判定模块:被配置为用于确定变异体顽固性的评价指标,对待测试程序的变异体进行顽固性判定,得到顽固变异体;
第一分组模块:被配置为用于根据变异通信语句之间的占优关系,将得到的顽固变异体进行初次分组;
第二分组模块:被配置为用于根据变异语句与待测试程序的输入参量的相关性,将初次分组后的顽固变异体进行再分组;
测试数据生成模块:被配置为用于根据再分组后的顽固变异体构建测试数据生成模型,基于集合进化,设置与杀死变异体相关的适应值函数,求解测试数据生成模型,生成能够杀死顽固变异体的测试数据;
根据变异语句之间的占优关系将顽固变异体进行初次分组,具体的:
步骤21、将筛选出的顽固变异体根据顽固度从大到小进行排列;
步骤22、选择最顽固的变异体作为聚类中心;
步骤23、建立聚类中心与其他变异语句的占优度矩阵,选择占优度等于1变异体作为簇成员;
循环执行步骤22-步骤23,直到所有的变异体分组完成;
按照变异语句与待测试程序的输入参数的相关性,将初次分组后的顽固变异体进行再分组为:每个初分组后的组内,在同一发送节点执行顺序下,将具有相同的相关程序输入变量的顽固变异体归为一组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210388183.3A CN114461535B (zh) | 2022-04-14 | 2022-04-14 | 面向并行变异算子的顽固变异体测试数据生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210388183.3A CN114461535B (zh) | 2022-04-14 | 2022-04-14 | 面向并行变异算子的顽固变异体测试数据生成方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114461535A CN114461535A (zh) | 2022-05-10 |
CN114461535B true CN114461535B (zh) | 2022-07-12 |
Family
ID=81418667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210388183.3A Active CN114461535B (zh) | 2022-04-14 | 2022-04-14 | 面向并行变异算子的顽固变异体测试数据生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114461535B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2407903A1 (en) * | 2002-07-29 | 2004-01-29 | Kirk Vandezande | Systems for determining optimal test order for disease diagnosis |
CN105473741A (zh) * | 2013-06-21 | 2016-04-06 | 塞昆纳姆股份有限公司 | 用于遗传变异的非侵入性评估的方法和过程 |
CN108334949A (zh) * | 2018-02-11 | 2018-07-27 | 浙江工业大学 | 一种优化深度卷积神经网络结构的快速进化方法 |
WO2020023671A1 (en) * | 2018-07-24 | 2020-01-30 | Protocol Intelligence, Inc. | Methods and systems for treating cancer and predicting and optimizing treatment outcomes in individual cancer patients |
CN111352830A (zh) * | 2020-01-06 | 2020-06-30 | 中国矿业大学 | 基于语句占优关系的变异测试数据进化生成方法 |
CN113590474A (zh) * | 2021-07-12 | 2021-11-02 | 山东建筑大学 | 一种并行程序顽固变异体的判定方法及系统 |
CN114202609A (zh) * | 2021-12-16 | 2022-03-18 | 重庆大学 | 一种混合启发式图着色方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732583B (zh) * | 2020-08-03 | 2022-02-18 | 徐州工程学院 | 一种基于聚类和多种群遗传算法的软件测试数据生成方法 |
-
2022
- 2022-04-14 CN CN202210388183.3A patent/CN114461535B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2407903A1 (en) * | 2002-07-29 | 2004-01-29 | Kirk Vandezande | Systems for determining optimal test order for disease diagnosis |
CN105473741A (zh) * | 2013-06-21 | 2016-04-06 | 塞昆纳姆股份有限公司 | 用于遗传变异的非侵入性评估的方法和过程 |
CN108334949A (zh) * | 2018-02-11 | 2018-07-27 | 浙江工业大学 | 一种优化深度卷积神经网络结构的快速进化方法 |
WO2020023671A1 (en) * | 2018-07-24 | 2020-01-30 | Protocol Intelligence, Inc. | Methods and systems for treating cancer and predicting and optimizing treatment outcomes in individual cancer patients |
CN111352830A (zh) * | 2020-01-06 | 2020-06-30 | 中国矿业大学 | 基于语句占优关系的变异测试数据进化生成方法 |
CN113590474A (zh) * | 2021-07-12 | 2021-11-02 | 山东建筑大学 | 一种并行程序顽固变异体的判定方法及系统 |
CN114202609A (zh) * | 2021-12-16 | 2022-03-18 | 重庆大学 | 一种混合启发式图着色方法 |
Non-Patent Citations (5)
Title |
---|
Enhancement of Mutation Testing via Fuzzy Clustering and Multi-population Genetic Algorithm;Xiangying Dang;《IEEE Transactions on Software Engineering》;20210119;全文 * |
FinFuzzer: One Step Further in Fuzzing Fintech Systems;Qingshun Wang;《2021 36th IEEE/ACM International Conference on Automated Software Engineering (ASE)》;20220120;全文 * |
基于Markov模型的Web服务软件测试用例生成;申等;《电脑知识与技术》;20181005(第28期);全文 * |
基于统计分析的弱变异测试可执行路径生成;党向盈;《计算机学报》;20161130;全文 * |
基于语句重要度的变异测试对象选择方法;巩敦卫;《电子学报》;20170630;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114461535A (zh) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110008710B (zh) | 基于深度强化学习和程序路径插桩的漏洞检测方法 | |
Cai et al. | NuMVC: An efficient local search algorithm for minimum vertex cover | |
Keerativuttitumrong et al. | Multi-objective co-operative co-evolutionary genetic algorithm | |
CN112926990A (zh) | 欺诈识别的方法和装置 | |
Abu‐Lebdeh et al. | Convergence variability and population sizing in micro‐genetic algorithms | |
CN114840857B (zh) | 基于深度强化学习与多级覆盖策略的智能合约模糊测试方法及系统 | |
CN110533221A (zh) | 基于生成式对抗网络的多目标优化方法 | |
CN111352830B (zh) | 基于语句占优关系的变异测试数据进化生成方法 | |
CN117896263B (zh) | 基于邻域拓扑与投票机制的复杂网络关键节点识别方法 | |
CN114461535B (zh) | 面向并行变异算子的顽固变异体测试数据生成方法及系统 | |
CN112270957B (zh) | 高阶snp致病组合数据检测方法、系统、计算机设备 | |
Hong et al. | Improving performance insensitivity of large-scale multiobjective optimization via monte carlo tree search | |
Hendel | Empirical analysis of solving phases in mixed integer programming | |
CN117892209A (zh) | 一种基于支持向量机和进化计算的过采样方法 | |
CN109840916B (zh) | 高频地波雷达舰船目标跟踪算法的测评方法 | |
CN111813669A (zh) | 基于多目标群体智能的适应性随机测试用例生成方法 | |
Bara’a et al. | A new evolutionary multi-objective community mining algorithm for signed networks | |
CN113472515B (zh) | 一种用于检验用户防御侧信道攻击能力的方法 | |
CN115062759A (zh) | 一种基于改进型长短记忆神经网络的故障诊断方法 | |
Abadi et al. | A comprehensive soft security model for Cognitive Internet of Things | |
CN108764570A (zh) | 一种基于蚁群算法与Lin-Kernighan算法解决旅行商问题的杂交算法 | |
Kuviatkovski et al. | Evaluating machine learning algorithms in representing decision makers in search-based PLA | |
CN113642226A (zh) | 基于多目标进化算法的公平机器学习模型的训练方法 | |
Ji et al. | A multiagent evolutionary method for detecting communities in complex networks | |
Alyasiri et al. | Applying Cartesian Genetic Programming to Evolve Rules for Intrusion Detection System. |
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 |