CN111352830A - 基于语句占优关系的变异测试数据进化生成方法 - Google Patents
基于语句占优关系的变异测试数据进化生成方法 Download PDFInfo
- Publication number
- CN111352830A CN111352830A CN202010008504.3A CN202010008504A CN111352830A CN 111352830 A CN111352830 A CN 111352830A CN 202010008504 A CN202010008504 A CN 202010008504A CN 111352830 A CN111352830 A CN 111352830A
- Authority
- CN
- China
- Prior art keywords
- statement
- individual
- test data
- variant
- program
- 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
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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3692—Test management for test results analysis
-
- 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)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Genetics & Genomics (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Physiology (AREA)
- Data Mining & Analysis (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) 给出语句占优关系的概念及判定方法;(2)提出基于语句语句占优关系的变异测试准则。
首先,我们给出语句占优关系的概念及判定方法。
研究结果表明,复杂软件有9-40%的条件语句之间具有某种相关性。而条件语句的相关性,导致他们包含的语句之间存在一定语句占优关系。下面给出语句语句占优关系的定义。
定义1:设s1和s2为程序中的两个语句,如果s1被执行,s2一定会被执行,则称s1占优s2,记为s1>s2。
经过研究发现,语句之间的语句占优关系主要分为两类:
(1)结构占优
有些语句之间的语句占优关系是因为他们在程序中的位置关系造成的。我们把这种语句占优关系称为结构占优。结构语句占优关系通过程序的控制流图很容易得到。
设s1和s2为程序中的两个语句。如果在程序的控制流图中,任意从s1到出口的路径都必然经过s2,则s1占优s2。
(2)逻辑占优
除了结构占优,还有一种语句占优关系,是因为不同条件语句之间存在一定的相关性,从而导致它们所包含的语句之间产生占优。我们把这种语句占优关系称为逻辑占优。首先给出条件语句相关性的概念,再给出利用条件语句相关性鉴别目标语句间语句占优关系的方法。
定义2:记τ1和τ2为两个条件语句,如果当τ1为真时,τ2也一定为真,则称τ1和τ2具有真→真相关性;反之,如果当τ1为真时,τ2一定为假,则称τ1和τ2具有真→假相关性。同理,可以定义τ1和τ2之间的假→真和假→假相关性。
定义3:设τ是一个条件语句。如果在程序的控制流图中,任意从τ的真分支到出口的路径都必然经过的语句,称为τ的真分支包含的主干语句;同样,可以定义τ的假分支包含的主干语句。
如果检测到两个条件语句之间存在相关性,那么,它们所包含的主干语句之间必然存在一定的语句占优关系,具体判定方法如下:
定理1:如果条件语句τ1和τ2具有真(假)→真(假)相关性,则τ1的真(假)分支的主干语句占优τ2的真(假)分支的主干语句。
证明:如果条件语句τ1和τ2具有真→真相关性,那么当τ1取真时,也就是τ1的真分支的主干语句得到执行时,τ2也应该取真,那么τ2的真分支的主干语句必然会得到执行,因此τ1的真分支的主干语句占优τ2的真分支的主干语句。其它情况可类似得以证明。
语句之间的语句占优关系是程序的一种固有特性。如果这种固有特性被破坏,则程序中一定存在缺陷。一般而言,程序缺陷很难改变程序的结构,也就很难改变语句之间的结构语句占优关系。而逻辑语句占优关系则较为敏感,能对程序的微小变化产生反应。所以,本章主要通过考察逻辑语句占优关系是否发生改变来判定变异体是否被杀死。
然后,我们基于上面的定义及定理,提出基于语句语句占优关系的变异测试准则。
本发明给出通过考察语句语句占优关系判定是否杀死变异体的准则,其思想是:首先,通过上一步给出的方法得到被测程序的语句语句占优关系,这里,我们主要考察逻辑语句占优关系;然后,以测试数据为输入运行变异体,考察语句之间的语句占优关系是否被破坏,只要有一对语句之间的语句占优关系被破坏,则称该测试数据杀死了该变异体。
准则1:对被测程序G,假设我们得到的存在逻辑语句占优关系的语句对构成的集合为Γ,即Γ={(si,sj)|si>sj}。M为通过对语句s实施变异得到的变异体。X为某个测试数据。如果以X为输入运行变异体M后,存在(si,sj)∈Γ,使得当si执行后,sj没有被执行,则M破坏了被测程序G中语句对(si,sj)之间的语句占优关系。通过这种方法,测试数据X检测到变异体M包含的缺陷,从而可以认为X杀死了变异体M。
需要说明的是,可能存在某个变异体M,任何测试数据都不能将其杀死。这是因为,该变异体没有破坏程序中任何语句对之间的语句占优关系。这样的变异体称为等价变异体。
由此可见,依照该准则判定测试数据是否杀死变异体时,不需要再运行被测程序,只需要运行变异体即可。传统变异测试方法通过比较被测程序和变异体的输出是否相同决定变异体是否被杀死。因此,需要使用测试数据分别运行被测程序和变异体。而我们不需要得到被测程序的输出结果,只需要检测语句之间的语句占优关系是否被破坏。被测程序语句之间的语句占优关系一旦给出,就可以看做程序的一种内在特性。对所有测试数据,这种特性都是存在的。所以,我们不需要再利用测试数据运行被测程序。这样,就可以大大减少运行程序需要的时间。
步骤2:基于语句占优关系的变异测试数据生成问题的数学模型。
在准则1的基础上,本部分给出基于语句占优关系的变异测试数据生成问题的数学模型。鉴于基于语句占优关系的变异测试数据生成问题的复杂性,采用进化优化的算法对其进行求解,为此,需要把基于语句占优关系的变异测试数据生成问题建模为函数优化问题。
假设我们共得到了n个变异体,分别设为M1,M2,…,Mn。那么,基于步骤1给出的基于语句占优关系的变异测试准则,相应的变异测试数据生成问题可以描述为:给出程序的一个测试数据集使得对任何一个变异体Mi,都存在一个测试数据满足X能够杀死变异体Mi。
由准则1可知,测试数据X能够杀死变异体Mi,必然存在语句对(si,sj)∈Γ,使得当si执行后,sj没有被执行。所以我们的目标就是让X执行语句si,但不执行语句sj。由于(si,sj)之间存在逻辑语句占优关系,si和sj必然分别为某个条件语句真分支或者假分支的主干语句。不失一般性,假设si是条件语句τi真分支的主干语句,sj是条件语句τj真分支的主干语句。那么,si执行和sj不执行,就等价于执行τi的真分支和τj的假分支。设对应条件语句τi真分支的分支距离为disti(X),对应条件语句τj假分支的分支距离为distj(X)。令
则当si执行,sj不执行时,disti(X)=0,distj(X)=0,故fij(X)=0;当si执行,sj也执行时,disti(X)=0,故0<fij(X)<1;当si不执行,sj也不执行时,distj(X)=0,故0<fij(X)<1;当si执行,sj执行时,0<fij(X)<2。所以,fij(X)的值越接近于0,则X越有可能杀死变异体Mi。
因为程序可能包含很多占优语句对,只要X能够检测到其中一对语句的语句占优关系被破坏,则认为X可以杀死变异体Mi。所以,我们定义X对变异体Mi的目标函数为:
则f(X)的值越小,X就越接近我们的需要。特别地,当f(X)=0时,说明存在某个 fij(X)=0,也就说,当语句γi执行后,γj没有被执行。那么,按照我们的变异准则,X杀死了变异体Mi。
综上所述,杀死变异体Mi的测试数据生成问题,可以建模为如下优化问题:
s.t.X∈Ω
需要说明的是,上述目标函数是通过运行插装后的变异体得到的。所以,对不同变异体,个体X的目标函数值也会有所不同。但是,对所有变异体,程序的插装方法是完全一样的,不同的是变异语句。所以,我们可以先对被测程序进行插装,然后,针对每个变异体,只需要修改一条变异语句即可。
步骤3:基于语句占优关系的变异测试数据自动生成的进化求解方法。
基于步骤2建立的数学模型,本部分给出该数学模型的进化求解方法,以高效生成满足准则1的测试数据,其特征在于以下步骤:。
步骤3.1:个体编码方式
步骤3.2:个体适应度函数
步骤3.3:遗传算法的进化操作
步骤3.4:算法结束条件
步骤3.5:算法步骤
附图说明
图1是一个简单实现求解三个整数中位数的被测程序G的Java语言代码图。
图2是由被测程序G中第3行的语句变异之后所获得的一个变异体M的Java语言代码图。
具体实施方式
下面对本发明的实施方式进行详细说明。
步骤1.基于语句占优关系的变异测试理论研究。
本发明主要研究的是基于语句占优关系的变异测试数据生成问题。在传统的变异测试准则下,需要同时运行被测程序和变异体,以检测变异体是否被杀死。这样反而增加了变异测试的代价。
例如,给定被测程序G(如图(1)),使用变异算子作用于被测程序G的第3行后产生一个变异体M(如图(2))。
假设使用随机法产生1个测试数据(1,2,1),则按照传统变异测试准则,首先要让该测试数据执行被测程序G和变异体M;然后,观察被测程序G和M并比较两者运行结果、比较两者变异前后语句、比较两者执行路径等是否相同,如果不同则说明杀死变异体M,否则不能杀死。显然,该测试数据下,所得结果分别为杀死、杀死、杀死等。尽管,这些变异测试准则都能够检测出缺陷,但是随着程序规模不断扩大,变异测试过程中将会产生大量变异体,这会导致传统的变异测试准则下,执行大量变异体,从而降低了变异测试效率,同时也影响变异测试数据的生成。
为了提高变异测试效率,减少变异测试代价,本发明给出基于语句占优关系的变异测试准则的合理描述方式,并建立基于语句占优关系的变异测试数据生成问题的数学模型。
根据被测程序G,我们发现在第4行语句执行的情况下,第3行语句一定执行,我们就把这种情况称为语句占优关系,即第4行语句占优第3行语句。在这里为方便描述直接用数字来表示相应的语句,即4占优3(4>3)。显然,对于其他具有这种特征的语句进行同样的步骤处理。另一方面,我们观察变异体M,发现仍然存在4占优3这种情况,说明被测程序 G和M中存在这种固有属性。
特别的,当我们考察继续分析发现4和3均为逻辑语句,虽然都存在结构语句占优关系,但是在逻辑关系上,我们会发现在被测程序G中4和3是真真相关,即4的真分支主干语句占优3的真分支主干语句。而在M中这种关系被打破,也就是说4的真分支主干语句不占优3的真分支主干语句,这样我们就可以通过考察逻辑语句语句占优关系判定是否杀死变异体;另一方面,我们还可以发现,测试数据只要运行变异体M,就可以判断结果,这比传统的变异测试准则更优越。当然,这里只是举了简单地例子,其他情况类似处理。
综上所述,我们可以给出基于语句占优关系的变异测试准则如下:
准则1:对被测程序G,假设我们得到的存在逻辑语句占优关系的语句对构成的集合为Γ,即Γ={(si,sj)|si>sj}。M为通过对语句s实施变异得到的变异体。X为某个测试数据。如果以X为输入运行变异体M后,存在(si,sj)∈Γ,使得当si执行后,sj没有被执行,则M破坏了被测程序G中语句对(si,sj)之间的语句占优关系。通过这种方法,测试数据X检测到变异体M包含的缺陷,从而可以认为X杀死了变异体M。
步骤2.基于语句占优关系的变异测试数据生成问题的数学模型。
本部分将依据准则1建立基于语句占优关系的变异测试数据生成问题的数学优化模型。首先给出决策变量的形式,再建立目标函数,最后给出数学模型。
2.1决策变量
设被测程序为G,程序G的的输入变量分别为x1,x2,…,xl,则程序G的输入向量 X=(x1,x2,…,xl)。X的一个具体值称为P的一个输入。设xi的取值域为Di(i=1,2,…,l),那么,G的取值域就是D(G)=D1×D2×…×Dl,这里“×”表示笛卡尔积。
假设我们共得到了n个变异体,分别设为M1,M2,…,Mn。那么,基于步骤1给出的基于语句占优关系的变异测试准则,相应的变异测试数据生成问题可以描述为:给出程序的一个测试数据集使得对任何一个变异体Mi,都存在一个测试数据满足X能够杀死变异体Mi。我们称为X该问题的决策变量。
2.2目标函数
由准则1可知,测试数据X能够杀死变异体Mi,必然存在语句对(si,sj)∈Γ,使得当si执行后,sj没有被执行。所以我们的目标就是让X执行语句si,但不执行语句sj。由于(si,sj)之间存在逻辑语句占优关系,si和sj必然分别为某个条件语句真分支或者假分支的主干语句。不失一般性,假设si是条件语句τi真分支的主干语句,sj是条件语句τj真分支的主干语句。那么,si执行和sj不执行,就等价于执行τi的真分支和τj的假分支。设对应条件语句τi真分支的分支距离为disti(X),对应条件语句τj假分支的分支距离为distj(X)。令
则当si执行,sj不执行时,disti(X)=0,distj(X)=0,故fij(X)=0;当si执行,sj也执行时,disti(X)=0,故0<fij(X)<1;当si不执行,sj也不执行时,distj(X)=0,故0<fij(X)<1;当si执行,sj执行时,0<fij(X)<2。所以,fij(X)的值越接近于0,则X越有可能杀死变异体Mi。
因为程序可能包含很多占优语句对,只要X能够检测到其中一对语句的语句占优关系被破坏,则认为X可以杀死变异体Mi。所以,我们定义X对变异体Mi的目标函数为:
则f(X)的值越小,X就越接近我们的需要。特别地,当f(X)=0时,说明存在某个 fij(X)=0,也就说,当语句γi执行后,γj没有被执行。那么,按照我们的变异准则,X杀死了变异体Mi。
2.3数学模型
综上所述,杀死变异体Mi的变异测试数据生成问题,可以建模为如下数学优化问题:
需要说明的是,上述目标函数是通过运行插装后的变异体得到的。所以,对不同变异体,个体X的目标函数值也会有所不同。但是,对所有变异体,程序的插装方法是完全一样的,不同的是变异语句。所以,我们可以先对被测程序进行插装,然后,针对每个变异体,只需要修改一条变异语句即可。
步骤3.基于语句占优关系的变异测试数据自动生成的进化求解方法。
本部分给出用于基于语句占优关系的变异测试数据自动生成的进化求解方法,包括:个体编码方式、个体适应度度函数、遗传算法的进化操作及算法终止条件。
3.1个体编码方式
公式(3)中优化问题的决策变量的个体是程序的输入,因此,个体的编码方式和程序的输入有密切关系。个体编码方式不仅直接决定了个体染色体的排列形式和个体从搜索空间的基因型到解空间的表现型的解码方法,同时也影响到交叉算子和变异算子等的运算方法,在很大程度上影响到遗传的进化效率。如果程序输入是整数型、字符型,采用二进制编码;如果程序输入是实数型,直接采用实数编码。
3.2个体适应度函数
由于公式(3)将变异测试数据生成问题建模为一个单目标优化问题,我们直接利用式公式(3)中的目标函数作为个体的适应度函数。
3.3遗传算法的进化操作
这里采用的遗传算法的进化操作包括选择算子、交叉算子和变异算子。
(1)选择算子
本部分采用轮盘赌选择方式。它是一种回放式随机采样方法。每个个体进入下一代的概率等于它的适应度值与整个种群中个体适应度值和的比例。其具体操作过程是:
然后,计算出每个个体的相对适应度的大小fi/F,它即为每个个体被遗传到下一代群体中的概率;
其次,将每个概率值组成一个区域,全部概率值之和为1;
最后,再产生一个0到1之间的随机数,依据该随机数出现在上述哪一个概率区域内来确定各个个体被选中的次数。
(2)交叉算子
这里采用单点交叉的方式。它是指在个体染色体中随机设置一个交叉点,然后在该点相互交换,两个父母染色体的部分染色体。
这里我们使用二进制编码来解释这个过程,设X1和X2是两个个体长度为6的二进制串,即X1=(101011)和X2=(100010)。首先,随机生成一个整数k∈[1,5],选择第k个基因位为交叉点;然后,在X1和X2间交换k+1到6之间的个各变量。假设这里k=3,则交叉之后的个体为X'1=(101010)和X'2=(100011)。当然,其他编码方式类似处理。
(3)变异算子
这里采用单点变异方式。它是指对个体的每个基因位,依照变异概率pm指定变异点,然后对每一个指定变异点所对应的基因位取反或者用其他基因位代替,产生新个体。
假设X1=(101011)的变异点为第三位(从左向右数),并对其按位取反,最后可以得到新个体X'1'=(101011)。当然,其他个体在变异过程中,进行同样的处理。
3.4算法结束条件
3.5算法步骤
基于上述讨论,本文给出的基于语句占优关系的变异测试数据生成问题的进化求解方法步骤如下:
步骤1参数设置及个体编码
首先在准则1的基础上,给出占优语句对;然后根据公式(1)和(2)构建适应度函数。
步骤3根据需求规约,随机生成测试数据集合,即初始化种群
根据程序输入特点,随机生成包含Γ个个体的种群Popi={X1,X2,…,XΓ}。
步骤4计算其适应值
步骤5判断算法终止条件是否满足
步骤6根据个体适应值,使用遗传算法的进化操作,生成新的测试数据并返回步骤4
遗传操作由轮盘赌选择算子、单点交叉算子和单点变异算子组成。选择、交叉和变异的具体方式可根据编码形式和具体问题而定。同时,在这个过程中,我们还采用了精英个体保留策略。所谓精英个体保留,是指每完成一次遗传操作,种群中会保留若干代的最优个体,这样,就使得种群个体的适应值整体不会降低,并最终取得最优解。
步骤7:终止算法并退出循环,输出最优结果。
Claims (1)
1.基于语句占优关系的变异测试数据生成问题建模及进化求解方法,其特征在于如下步骤:
步骤1:提出基于语句占优关系的变异测试准则,依照该准则判定测试数据是否杀死变异体时,不需要再运行被测程序,只需要运行变异体即可;
传统变异测试方法通过比较被测程序和变异体的输出是否相同决定变异体是否被杀死。因此,需要使用测试数据分别运行被测程序和变异体。而我们不需要得到被测程序的输出结果,只需要检测语句之间的占优关系是否被破坏。被测程序语句之间的占优关系一旦给出,就可以看做程序的一种内在特性。对所有测试数据,这种特性都是存在的。所以,我们不需要再利用测试数据运行被测程序。这样,就可以大大减少运行程序需要的时间。
步骤2:给出基于语句占优关系的变异测试数据生成问题的数学优化模型,保障测试数据满足步骤1给出的基于语句占优关系的变异测试准则;
由步骤1给出的基于语句占优关系的变异测试准则可知,测试数据X能够杀死变异体Mi,必然存在语句对(si,sj)∈Γ,使得当si执行后,sj没有被执行。所以我们的目标就是让X执行语句si,但不执行语句sj。由于(si,sj)之间存在逻辑占优关系,si和sj必然分别为某个条件语句真分支或者假分支的主干语句。不失一般性,假设si是条件语句τi真分支的主干语句,sj是条件语句τj真分支的主干语句。那么,si执行和sj不执行,就等价于执行τi的真分支和τj的假分支。设对应条件语句τi真分支的分支距离为disti(X),对应条件语句τj假分支的分支距离为distj(X)。令
则当si执行,sj不执行时,disti(X)=0,distj(X)=0,故fij(X)=0;当si执行,sj也执行时,disti(X)=0,故0<fij(X)<1;当si不执行,sj也不执行时,distj(X)=0,故0<fij(X)<1;当si执行,sj执行时,0<fij(X)<2。所以,fij(X)的值越接近于0,则X越有可能杀死变异体Mi。
因为程序可能包含很多占优语句对,只要X能够检测到其中一对语句的占优关系被破坏,则认为X可以杀死变异体Mi。所以,我们定义X对变异体Mi的目标函数为:
则f(X)的值越小,X就越接近我们的需要。特别地,当f(X)=0时,说明存在某个fij(X)=0,也就说,当语句γi执行后,γj没有被执行。那么,按照我们的变异准则,X杀死了变异体Mi。
综上所述,杀死变异体Mi的变异测试数据生成问题,可以建模为如下数学优化问题:
步骤3:设计了一种基于语句占优关系的变异测试数据生成问题的进化求解方法,用进化算法来对步骤2所建立的数学模型进行求解;
所述基于语句占优关系的变异测试数据生成问题的进化求解方法,其特征在于以下步骤:
步骤3.1:个体编码方式
公式(3)中优化问题的决策变量的个体是程序的输入,因此,个体的编码方式和程序的输入有密切关系。个体编码方式不仅直接决定了个体染色体的排列形式和个体从搜索空间的基因型到解空间的表现型的解码方法,同时也影响到交叉算子和变异算子等的运算方法,在很大程度上影响到遗传的进化效率。如果程序输入是整数型、字符型,采用二进制编码;如果程序输入是实数型,直接采用实数编码。
步骤3.2:个体适应度函数
由于公式(3)将变异测试数据生成问题建模为一个单目标优化问题,我们直接利用式公式(3)中的目标函数作为个体的适应度函数。
步骤3.3:遗传算法的进化操作
这里采用的遗传算法的进化操作包括选择算子、交叉算子和变异算子。
(1)选择算子
本部分采用轮盘赌选择方式。它是一种回放式随机采样方法。每个个体进入下一代的概率等于它的适应度值与整个种群中个体适应度值和的比例。其具体操作过程是:
然后,计算出每个个体的相对适应度的大小fi/F,它即为每个个体被遗传到下一代群体中的概率;
其次,将每个概率值组成一个区域,全部概率值之和为1;
最后,再产生一个0到1之间的随机数,依据该随机数出现在上述哪一个概率区域内来确定各个个体被选中的次数。
(2)交叉算子
这里采用单点交叉的方式。它是指在个体染色体中随机设置一个交叉点,然后在该点相互交换,两个父母染色体的部分染色体。
这里我们使用二进制编码来解释这个过程,设X1和X2是两个个体长度为6的二进制串,即X1=(101011)和X2=(100010)。首先,随机生成一个整数k∈[1,5],选择第k个基因位为交叉点;然后,在X1和X2间交换k+1到6之间的个各变量。假设这里k=3,则交叉之后的个体为X'1=(101010)和X'2=(100011)。当然,其他编码方式类似处理。
(3)变异算子
这里采用单点变异方式。它是指对个体的每个基因位,依照变异概率pm指定变异点,然后对每一个指定变异点所对应的基因位取反或者用其他基因位代替,产生新个体。
假设X1=(101011)的变异点为第三位(从左向右数),并对其按位取反,最后可以得到新个体X”1=(101011)。当然,其他个体在变异过程中,进行同样的处理。
另外,在遗传进化操作过程中,我们还采用了精英个体保留策略。所谓精英个体保留,是指每完成一次遗传操作,种群中会保留若干代的最优个体,这样,就使得种群个体的适应值整体不会降低,并最终取得最优解。
步骤3.4:算法结束条件
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010008504.3A CN111352830B (zh) | 2020-01-06 | 2020-01-06 | 基于语句占优关系的变异测试数据进化生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010008504.3A CN111352830B (zh) | 2020-01-06 | 2020-01-06 | 基于语句占优关系的变异测试数据进化生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352830A true CN111352830A (zh) | 2020-06-30 |
CN111352830B CN111352830B (zh) | 2023-10-24 |
Family
ID=71197970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010008504.3A Active CN111352830B (zh) | 2020-01-06 | 2020-01-06 | 基于语句占优关系的变异测试数据进化生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111352830B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699054A (zh) * | 2020-08-03 | 2021-04-23 | 徐州工程学院 | 一种软件测试用例有序生成方法 |
CN114465938A (zh) * | 2022-01-05 | 2022-05-10 | 国网湖北省电力有限公司电力科学研究院 | 一种基于模糊测试的充电桩can协议的渗透测试方法、系统及存储介质 |
CN114461535A (zh) * | 2022-04-14 | 2022-05-10 | 山东建筑大学 | 面向并行变异算子的顽固变异体测试数据生成方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605605A (zh) * | 2013-11-21 | 2014-02-26 | 中国矿业大学 | 基于语句占优关系和两阶段遗传算法的高阶变异测试方法 |
CN107729241A (zh) * | 2017-10-12 | 2018-02-23 | 中国矿业大学 | 一种基于变异体分组的软件变异测试数据进化生成方法 |
CN109739746A (zh) * | 2018-12-12 | 2019-05-10 | 江苏师范大学 | 一种基于原语句占优分析的变异测试方法 |
-
2020
- 2020-01-06 CN CN202010008504.3A patent/CN111352830B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605605A (zh) * | 2013-11-21 | 2014-02-26 | 中国矿业大学 | 基于语句占优关系和两阶段遗传算法的高阶变异测试方法 |
CN107729241A (zh) * | 2017-10-12 | 2018-02-23 | 中国矿业大学 | 一种基于变异体分组的软件变异测试数据进化生成方法 |
CN109739746A (zh) * | 2018-12-12 | 2019-05-10 | 江苏师范大学 | 一种基于原语句占优分析的变异测试方法 |
Non-Patent Citations (5)
Title |
---|
ANNIBALE PANICHELLA: "Automated Test Case Generation as a Many-Objective Optimisation Problem with Dynamic Selection of the Targets", 《IEEE TRANSACTIONS ON SOFTWARE ENGINEERING》, vol. 44, no. 2, pages 122 - 158 * |
姚香娟等: "基于目标语句占优关系的软件可测试性转化", 《电子学报》, vol. 41, no. 12, pages 2523 - 2528 * |
巩敦卫等: "基于语句重要度的变异测试对象选择方法", 《电子学报》, vol. 45, no. 6, pages 1518 - 1522 * |
张功杰等: "基于统计占优分析的变异测试", 《软件学报》, vol. 26, no. 10, pages 2504 - 2520 * |
陈莹莹: "变异技术在软件测试中的研究及应用", 《科协论坛》, no. 12, pages 67 - 68 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699054A (zh) * | 2020-08-03 | 2021-04-23 | 徐州工程学院 | 一种软件测试用例有序生成方法 |
CN112699052A (zh) * | 2020-08-03 | 2021-04-23 | 徐州工程学院 | 一种基于相关输入变量的软件测试用例进化生成方法 |
CN112699054B (zh) * | 2020-08-03 | 2022-02-18 | 徐州工程学院 | 一种软件测试用例有序生成方法 |
CN112699052B (zh) * | 2020-08-03 | 2022-04-15 | 徐州工程学院 | 一种基于相关输入变量的软件测试用例进化生成方法 |
CN114465938A (zh) * | 2022-01-05 | 2022-05-10 | 国网湖北省电力有限公司电力科学研究院 | 一种基于模糊测试的充电桩can协议的渗透测试方法、系统及存储介质 |
CN114461535A (zh) * | 2022-04-14 | 2022-05-10 | 山东建筑大学 | 面向并行变异算子的顽固变异体测试数据生成方法及系统 |
CN114461535B (zh) * | 2022-04-14 | 2022-07-12 | 山东建筑大学 | 面向并行变异算子的顽固变异体测试数据生成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111352830B (zh) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gobeyn et al. | Evolutionary algorithms for species distribution modelling: A review in the context of machine learning | |
Jones et al. | A strategy for using genetic algorithms to automate branch and fault-based testing | |
CN111352830A (zh) | 基于语句占优关系的变异测试数据进化生成方法 | |
Uppu et al. | A review on methods for detecting SNP interactions in high-dimensional genomic data | |
CN110096439B (zh) | 一种面向solidity语言的测试用例生成方法 | |
CN107729241B (zh) | 一种基于变异体分组的软件变异测试数据进化生成方法 | |
Wahono et al. | Neural network parameter optimization based on genetic algorithm for software defect prediction | |
CN110377511B (zh) | 一种面向数据流的测试用例生成方法 | |
Lee et al. | Constructing gene regulatory networks from microarray data using GA/PSO with DTW | |
CN112699050A (zh) | 一种基于变异体分组的软件测试用例多种群进化生成方法 | |
Dang et al. | Enhancement of mutation testing via fuzzy clustering and multi-population genetic algorithm | |
CN115049019B (zh) | 金属有机框架对砷的吸附性能评估方法、装置及相关设备 | |
Sahin et al. | Archive-based multi-criteria Artificial Bee Colony algorithm for whole test suite generation | |
Ghiduk et al. | Using genetic algorithms and dominance concepts for generating reduced test data | |
Huang et al. | Harnessing deep learning for population genetic inference | |
Cano et al. | An EP algorithm for learning highly interpretable classifiers | |
Damia et al. | Automated test data generation using a combination of firefly algorithm and asexual reproduction optimization algorithm | |
CN109977030B (zh) | 一种深度随机森林程序的测试方法及设备 | |
CN116663018A (zh) | 一种基于代码可执行路径的漏洞检测方法及装置 | |
Loscos et al. | Generalization and completeness of stochastic local search algorithms | |
Chen et al. | Improving transparency in approximate fuzzy modeling using multi-objective immune-inspired optimisation | |
Brunello et al. | Monitors that learn from failures: Pairing STL and genetic programming | |
Guo et al. | A scatter search approach for multiobjective selective disassembly sequence problem | |
Hardison et al. | The power of quantitative grammatical evolution neural networks to detect gene-gene interactions | |
Rojas-Guzmán et al. | An evolutionary computing approach to probabilistic reasoning on Bayesian networks |
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 |