CN109739746A - 一种基于原语句占优分析的变异测试方法 - Google Patents

一种基于原语句占优分析的变异测试方法 Download PDF

Info

Publication number
CN109739746A
CN109739746A CN201811515682.4A CN201811515682A CN109739746A CN 109739746 A CN109739746 A CN 109739746A CN 201811515682 A CN201811515682 A CN 201811515682A CN 109739746 A CN109739746 A CN 109739746A
Authority
CN
China
Prior art keywords
dominant
variant
sentence
vector
prototype 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.)
Granted
Application number
CN201811515682.4A
Other languages
English (en)
Other versions
CN109739746B (zh
Inventor
张功杰
谢春丽
董永权
于巧
宋媚
吴川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Normal University
Original Assignee
Jiangsu Normal University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jiangsu Normal University filed Critical Jiangsu Normal University
Priority to CN201811515682.4A priority Critical patent/CN109739746B/zh
Publication of CN109739746A publication Critical patent/CN109739746A/zh
Application granted granted Critical
Publication of CN109739746B publication Critical patent/CN109739746B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种基于原语句占优分析的变异测试方法,该方法的过程如下:通过测试输入集对可变异原语句的执行情况,构造每条原语句的执行向量,并利用执行向量分析原语句之间的占优关系;利用占优关系向量反映一条原语句被其它语句的占优情况,所有分量为0的占优关系向量对应的语句是非被占优的;选择非被占优原语句产生的变异体执行变异测试,能够显著降低变异测试的成本,并维持很高的变异测试充分性。本发明仅选择少量可变异语句,利用这些语句产生的变异体,代替所有变异体执行变异测试,大幅度减少变异测试中的变异体数量,从而显著提高变异测试效率,在软件测试方面具有广泛的应用前景。

Description

一种基于原语句占优分析的变异测试方法
技术领域
本发明属于软件测试和变异测试领域,尤其涉及一种基于原语句占优分析的变异测试方法。
背景技术
软件测试是提高软件质量的主要途径。这需要在软件交付使用之前,采用大量的测试用例执行被测软件,以发现软件中存在的缺陷。可见,高质量测试用例集至关重要,这主要体现在:1)高质量的测试用例集,能够尽可能多的发现被测软件中的缺陷,从而提高软件的质量;2)高质量的测试用例集,能够减少甚至避免不必要的程序执行,因为这些执行是不能够发现缺陷的,从而提高测试的效率。
作为一种面向缺陷的测试技术,变异测试能够有效评价测试用例集,进而辅助提高现有测试用例集的质量。变异测试的基本过程是:首先,对原程序实施符合语法的变异,生成变异后的原程序副本,这些副本称为变异体,相应的语法变异规则,称为变异算子;然后,用现有的测试用例集,依次执行所有变异体,如果某变异体不能通过某测试用例的执行,则称该变异体被杀死;最后,统计被杀死的变异体数量占所有可杀死变异体数量的百分比,称为变异得分。那些任何测试用例都不能够杀死的变异体,其功能与原程序完全相同,则称为等价变异体。
变异测试采用人工缺陷注入方式,在向原程序注入缺陷时,不仅可以选择注入缺陷的种类,也可以选择注入缺陷的位置。大量研究表明,变异体很大程度上能够反映实际的软件缺陷,满足变异测试充分性的测试用例集,具有很高的实际缺陷检测能力;而基于传统的覆盖测试准则(如分支覆盖等)准备的测试用例集,与实际缺陷检测能力没有必然关系。
变异测试需要利用给定的测试用例集,反复执行所有变异体。实际软件往往包含各种类型的变量、结构复杂的语句和大量的代码,这些显著增加了可实施的变异算子类型和可变异的位置,从而,生成为数众多的变异体。为了尽可能多的杀死变异体,需要的测试用例的数量会也显著增加。这说明大量的变异体必将显著增加变异测试的成本,严重影响这一有效技术在实际软件测试用的广泛应用。
降低变异测试成本的方法通常分为两类:
(1)减少变异体数量。对于被测程序,在生成的众多变异体中,选择一个变异体子集,代替所有变异体执行变异测试,并保证变异测试的充分性。2014年会议IEEE 7thInternational Conference on Software Testing,Verification and Validation上发表的论文“Establishing theoretical minimal sets of mutants”利用变异体之间的包含关系,找到理论上最小的变异体集;在2015年会议IEEE 8th International Conferenceon Software Testing,Verification,and Validation上发表的论文“Static analysisof mutant subsumption”通过静态分析获得变异体之间的包含关系;2017年发表在会议ACM Sigsoft International Symposium on Software Testing and Analysis上的论文“Inferring mutant utility from program context”通过分析程序的上下文选择变异体执行变异测试;2017年在期刊Information and Software Technology(81卷)发表的论文“Mutant reduction based on dominance relation for weak mutation”将变异体转化为变异分支后,手工分析变异分支之间的占优关系,减少变异体数量。上述研究对变异体测试具有非常重要的指导作用。但是,这些成果需要分析变异体或转化后变异体之间的包含关系(或占优关系)。变异体规模庞大,因此,分析变异体之间相关性的成本十分高昂,不利于在实际中的广泛应用。
(2)降低变异测试的执行成本。弱变异测试通过执行变异语句后,变异体的状态与原程序的不一致,判定变异体被杀死,而不需要执行整个程序。通过优化测试进程提高变异测试的执行效率。在2016年会议IEEE International Conference on Software Testing,Verification and Validation Workshops上发表的论文“Speeding-up mutationtesting via data compression and state infection”利用缺陷状态信息选择变异体子集和少量测试用例执行变异测试,从而缩短变异测试的执行时间;2013年在会议ACMInternational Symposium on Software Testing and Analysis上发表的论文“Fastermutation testing inspired by test prioritization and reduction”通过约简测试用例和对测试用例进行优先级排序,减少变异体的执行次数;2018年发表在期刊IEEETransactions on Software Engineering(early access)上的论文“Predictivemutation testing”根据变异体和测试用例的一系列执行特征建立分类模型,用于预测变异得分,而不必执行变异体。上述研究成果对于推进变异测试的工业应用具有非常重要的意义,但是,他们的有效性仍需要进一步改善。
因此,有必要研究新的方法,一方面显著减少变异体数量,同时维持较高的变异测试充分性。迄今为止,根据原语句选择变异体,这方面的研究极少;而分析原语句之间的占优关系后,选择变异体执行变异测试,这方面的研究还未发现。与分析变异体或变异分支之间的包含关系或占优关系不同,本发明直接分析原语句之间的相关性。
发明内容
发明目的:针对以上问题,本发明提出一种基于原语句占优分析的变异体约简方法。该方法克服现有变异体约简技术的不足,诸如约简成本高,约简后变异体有效性下降明显,通过分析被测程序中可变异的语句之间的相关性,选择那些非被占优语句产生的变异体执行变异测试。为此,本发明还建立语句占优关系的分析方法,本发明不仅显著减少变异测试中需要执行的变异体数量,提高变异测试的效率;约简后的变异体也能够维持很高的变异测试充分性。
技术方案:为实现本发明的目的,本发明所采用的技术方案是:分析被测原程序中,可变异原语句之间的占优关系,然后,选择非被占优语句生成的变异体执行变异测试,而所有被占优语句生成的变异体将被约简。
其特征包括如下两个阶段:
阶段1:确定非被占优原语句
被测程序包含很多可变异的语句,并非所有语句产生的变异体都有必要被执行。利用测试输入集执行被测原程序,获得测试输入集对可变异原语句的执行信息,进而分析可变异原语句之间的占优关系,得到非被占优原语句。具体步骤如下:
步骤1:获取被测程序原语句的执行信息
对于被测原程序,记录所有可变异的语句并对这些语句进行插装。对于现有测试输入集,利用测试输入集中的每个测试输入,依次执行被测原程序,并记录每条语句的覆盖情况,得到被测原程序每条语句的执行向量。
步骤2:分析原语句之间的占优关系
占优关系是描述两条语句在被测原程序的上下文环境中的相关性,即一条语句被执行另一条语句也被执行的必然关系。尽管这种相关性在语义上是不可计算的,但可以根据原语句的执行信息,近似的表达任意两个语句之间是否具有占优关系。
步骤3:确定非被占优原语句
利用占优关系向量表示每个语句的被占优情况,即一条语句被其它语句占优的情况。如果一条语句对应的占优关系向量,其所有分量都为0,那么,该向量对应的语句是非被占优的。
阶段2:选择变异体执行变异测试
本阶段根据原程序中的非被占优语句,选择这些语句产生的变异体,执行变异测试并分析测试结果。具体步骤如下:
步骤1:选择变异体
记录所有分量都为0的占优关系向量,通过这些向量,选择对应原语句产生的变异体,即非被占优语句产生的变异体,就是约简后的变异体。而其它语句产生的变异体将被约简。
步骤2:执行变异测试
利用约简后的变异体代替所有变异体执行变异测试。对于待评价的测试用例集,依次执行约简后的变异体,直至所有变异体都被杀死或所有测试用例都执行完。计算变异得分并评价测试用例集的充分性。
有益效果:与现有技术相比,本发明的技术方案具有以下有益技术效果:
(1)分析占优关系成本低。分析变异体或变异分支之间的相关性时,需要对变异体进行两两比较;类似的,分析原语句之间的占优关时也需要对原语句进行两两比较。需要强调的是,由于原语句的数量显著少于变异体数量,因此,分析原语句之间的占优关系成本更低。
(2)约简变异体幅度大。以被测程序原语句为单位约简变异体,一般一条语句可以实施多个变异算子,而一个变异算子一般又可以产生多个变异体。仅选择部分语句产生的变异,将大幅度约简变异体。
(3)约简后变异体有的效性高。原程序中非被占优语句被执行的条件,一般强于对应的占优语句。直觉上,杀死非被占优语句产生的变异体的难度不低于对应占优语句产生的变异体。能够杀死比较难杀死变异体的测试用例集,很大程度上也能杀死比较容易杀死的变异体。
(4)方法的实用性强。本发明中的方法操作简单,约简变异体的比例较高,约简后变异体的有效性高,因此,具有比较强的实际应用价值。
附图说明
图1是变异测试的一般过程;
图2是确定非被占优原语句的过程。
具体实施方式
接下来,采用具体实例、结合附图详细阐述本发明的具体实施方案。
本发明基于被测程序可变异语句之间的相关性分析,提出基于原语句选择变异体的变异测试方法。通过仅选择非被占优语句产生的变异体,从而显著减少变异体数量。
变异测试的一般执行过程如图1所示,利用变异算子对被测原程序P进行变异后,产生的变异体集记为M,M中包含|M|个变异体;对测试用例集T,T中包含|T|个测试用例,分别执行M中的变异体,直至所有变异体都被杀死或所有测试用例都被执行完;最后,根据被杀死的变异体数量,以及非等价变异体数量计算变异得分,如式(1)所示。
需要说明的是,式(1)是广泛采用的变异得分计算方法,其中,#Killed是指被杀死的变异体数量;#Non_equivalent是指所有非等价变异体数量,即变异体总数减去等价变异体数量。为了大幅度约简变异体,首先确定被测程序中非被占优语句集,然后仅选择非被占优语句对应的变异体执行变异测试。那些任何测试用例都不能够杀死的变异体,其功能与原程序完全相同,则称为等价变异体。
1.确定非被占优原语句
对于被测原程序P,记可变异原语句集为S={s1,s2,...,s|S|},其中,|S|表示S中的语句数量。由于产生的变异体数量与可变异语句密切相关,如果仅考虑S中的少量语句构成的语句集S',那么,S'产生的变异体必然会减少。确定非被占优原语句的过程,如图2所示。
对于S中的两条不同语句,si和sj,其产生的变异体集分别记为Mi和Mj。对于任意测试输入,如果能够执行到sj也必然能够执行到si,那么,称sj占优si
由于si和Mi中任一变异体的变异语句的可达性相同,而sj与Mj中的任一变异体的变异语句可达性相同。对于一个变异体而言,如果测试用例执行其变异语句的次数越多,该变异体被杀死的可能性越高。因此,通过分析原程序语句之间的占优关系,有助于找到具有代表性的语句集。
需要说明的是,对于原语句之间的占优关系,可以利用手工的方法,通过分析原语句在被测程序中的上下文关系确定。手工分析方法准确,但是效率低下。此外,可以通过测试输入对原语句的执行信息自动分析,这种方式效率较高,也非常近似准确的结果。本发明采用自动分析的方法,为此还设计了原语句之间占优关系的判定方法。
具体步骤如下:
步骤1:对被测原程序P中的每一个可变异原语句si,si∈S,i=1,2,...,|S|,进行插装,从而标识S中的每一条语句。插装后得到被测新程序P'。
对于给定的测试数据集Ω={ω12,...,ω|Ω|},其中|Ω|为测试用数据集的大小,依次利用ωj,j=1,2,...,|Ω|,执行插装后被测程序P',得到Ω对每个si∈S的执行信息,记为
对于原语句si∈S,当测试输入ωj∈Ω能够执行si,那么eij=1,否则eij=0。因此,式(2)中的第j个分量表示ωj对原语句si的执行情况。
如此一来,利用测试输入集Ω中的测试输入,依次执行插装后被测程序P',就得到每条语句的执行向量。所有执行向量构成集合其中|E|为集合E包含向量的个数,即E的大小,每条原语句对应一个执行向量,因此,|E|=|S|。
步骤2:占优关系是表示两条语句之间一条被执行,另一条也被执行的必然关系。需要强调的是占优关系是一种语义关系,因此,不可能通过精确计算获得。但是,可以通过步骤1得到的执行向量集,近似计算得到原语句之间的占优关系。
为此,我们设计计算方法如下:
需要说明的是,在式(3)中,当向量其所有分量都为0,则dij为0,即sj和si之间没有占优关系;dij表明sj对si的占优情况,因此,当i=j时,sj和si是两个完全相同的向量,这时dij的取值没有实际意义,这里取0。
表示向量的内积,语义上表示Ω中能够同时执行语句si和sj的测试输入数量;则表示Ω中能够执行sj的测试输入数量;如果即dij=1,表明能够执行sj的测试用例也能同时执行si,即sj占优si
运算符表示取整,该运算使得dij的取值要么为0,要么为1。当dij=0时,sj不占优si;当dij=1时,sj占优si
步骤3:通过步骤1和步骤2,可以计算出每个原语句sj对si的占优情况。以dij,j=1,2,...,|S|,为分量,构造占优关系向量
那么,式(4)中能够反映其它语句对si的占优情况,dij=1,则表明sj占优si,dij=0则表明sj不占优si。需要强调的是,dij仅表示sj对si的占优情况。如此一来,向量中的每个分量表示其它语句对si的占优情况。令所有占优向量构成的集合为D,D中包含|S|个向量,且D中的每一个向量与被测程序P中的一条原语句一一对应。
如果一个占优关系向量其分量都为0,即dij=0,j=1,2,...,|S|,那么,从语义上可知,任何语句sj,j≠i,都不占优si,则称si是非被占优的。
2.选择变异体执行变异测试
被测原程序P,通过对原语句集S={s1,s2,...,s|S|}进行占优分析,得到非被占优语句。根据这些非被占优语句选择变异体,即选择由非被占优语句产生的变异体,代替所有变异体评价给定的测试用例集。
具体步骤如下:
步骤1:对被测程序实施变异算子后,记每个语句si产生的变异体集为Mi为所有变异体构成的集合。对于si的占优向量如果的所有分量都为0,那么si是非被占优的,其生成的变异体将被保留。
所有非被占优语句产生的变异体集记为M',其它语句产生的变异体将被约简。本发明的目的是利用M'代替M,有效评价测试用例集的质量,以减少变异测试的成本。M'的产生过程如算法1所示。
算法1中,函数用于判定向量中的每个分量是否都为0,如果都为0,则返回一个布尔值true,否则返回false。
步骤2:执行变异测试
通过算法1输出约简后的变异体集M',用M'代替M,执行变异测试。对于给定的测试用例集T,用T中的测试用例分别执行约简后的变异体集M',统计被杀死的变异体数量,以及未被杀死的变异体中等价变异体的数量,并计算变异得分。
由此可知,约简前需要执行的变异体数量为|M|,约简后需要执行的变异体数量为|M'|。因此,变异体的约简率为:
式(5)表明,变异体的约简率在数值上等于被约简的变异体数量占所有变异体数量的百分比。
应用实例
实例的运行环境为Intel(R)Core(TM)i5-4590CPU@3.30GHz 3.30Hz,16GB RAM,Windows 7系统。实验过程在Eclipse SDK4.2.2集成开发环境中进行,并安装MuClipse1.0.3插件。
代码1 mid程序的源代码:
以Java程序mid为例,该程序的源码如代码1所示。mid程序通过输入3个int类型的变量,计算并输出三个整型值的中间值。例如,输入(3,4,5),输出值4。如代码1所示,mid程序中共有可被变异的原语句12条,这12条语句如表1所列。
表1.Mid中的原语句
对被测程序mid进行插装,以标识每条可被变异语句的执行情况,插装后的程序如代码2所示。随机生成20个测试输入,如表2所列。
代码2插装后的mid程序
表2.随机生成的测试输入
序号i ω<sub>i</sub>的值
1 (6,3,3)
2 (7,7,1)
3 (9,8,1)
4 (6,2,4)
5 (4,7,0)
6 (5,1,1)
7 (7,1,4)
8 (8,2,9)
9 (2,7,4)
10 (7,6,6)
11 (1,5,3)
12 (4,6,1)
13 (9,3,2)
14 (3,4,2)
15 (7,5,4)
16 (8,8,2)
17 (0,4,3)
18 (3,5,1)
19 (2,9,2)
20 (7,3,3)
利用表2中的测试输入依次执行插装后的被测程序,统计每条语句的执行情况如表3所列。需要说明的是,由于测试输入集Ω中包含测试输入个数为20,见表2,因此,表3中每个执行向量包含的元素个数为20。
表3.每条语句的执行向量
针对表3中的执行向量,利用式(3)和(4)得到每条语句的占优关系向量,如表4所列。占优关系向量表示其它语句对语句si的占优情况,因此,包含的元素个数为原语句条数|S|,即12。由于不考虑每条语句对自己的占优关系,因此,表4中每个向量元素dij,当i=j时,dij=0。
表4.每条语句的占优关系向量
接下来根据表4中分量全部为0的占优关系向量,确定非被占优语句,这些语句为:s4,s5,s6,s9,s10和s11。并根据这些非被占优原语句,选择变异体。
利用MuClipse变异测试工具,对mid原程序实施所有方法级(Method-Level)变异算子后,共产生115个变异体,如表5所列。表5中列出每条语句生成的变异体,对应的变异体集Mi,i=1,2,...,12,以及每个变异体集包含变异体的数量,即每个语句生成的变异体数量。表5中括号部分对应的是等价变异体,共计18个。
表5.生成的变异体
表5中的115个变异体中,s4,s5,s6,s9,s10和s11对应的变异体集合分别为:M4,M5,M6,M9,M10和M11,每个集合包含6个变异体,共计36个变异体;而且,这些变异体中包含12个等价变异体。
对于给定的测试用例集T,包含11个测试用例,每个测试用例都以JUnit断言assertXXX(expected,real)形式给出,其中,参数“expected”为期望值,而“real”则是程序的实际执行结果。如果期望值与实际值相同,则返回true,表明通过测试;否则返回false。这些测试用例如表6所列。例如,“assertEquals(9,Mid.getMid(9,9,2))”(表6中t1),对测试输入(9,9,2),期望值为9,而Mid.getMid(9,9,2)则通过函数调用返回程序的实际执行结果。
需要说明的是,测试用例集T能够杀死115个变异体中的97个非等价变异,此时,变异体得分为:
可知,T的变异测试充分性为100%。
表6.测试用例集T中的测试用例
t<sub>i</sub> 测试用例
t<sub>1</sub> assertEquals(9,Mid.getMid(9,9,2));
t<sub>2</sub> assertEquals(5,Mid.getMid(5,4,7));
t<sub>3</sub> assertEquals(3,Mid.getMid(2,3,8));
t<sub>4</sub> assertEquals(-8,Mid.getMid(-4,-8,-8));
t<sub>5</sub> assertEquals(-7,Mid.getMid(1,-8,-7));
t<sub>6</sub> assertEquals(7,Mid.getMid(8,7,6));
t<sub>7</sub> assertEquals(6,Mid.getMid(7,-6,6));
t<sub>8</sub> assertEquals(7,Mid.getMid(7,1,7));
t<sub>9</sub> assertEquals(-1,Mid.getMid(-5,-1,-1));
t<sub>10</sub> assertEquals(6,Mid.getMid(3,7,6));
t<sub>11</sub> assertEquals(5,Mid.getMid(5,7,5));
利用测试用例集T执行约简后的变异体后,执行结果如表7所列。对于约简后的36个变异体,包含12个等价变异体,测试用例集T共杀死了24个非等价变异体,此时对于约简后的变异体,T的变异体得分为100%。相应的,有效测试用例集为T'={t1,t2,t3,t4,t5,t10}。
表7.用约简后变异体评价T的充分性
利用对约简后有效的测试用例集T',执行所有的115个变异体后,得到每个测试用例杀死变异体情况如表8所列。表8中分别列出了T'杀死的变异体和数量。
表8.用约简前的所有变异体评价T'的充分性
由表8可知,T'杀死115个变异体中的94个。因此,变异得分为:
由以上应用实例的执行过程可知:
(1)为了约简变异体分析占优关系,本发明仅需分析12个语句之间的占优关系,而不必分析115个变异体之间的占优关系。分析过程中需要将语句(变异体)进行两两比较。本发明的比较次数为11(11+1)/2=66;而分析变异体之间的占优关系则需要比较115(115+1)/2=6555次。可见,本发明分析占优关系的成本低。
(2)115个变异体被约简掉79个,115-36=79,约简率为(115-36)/115=68.70%。可见,约简变异体的幅度很大。
(3)利用约简后的变异,代替所有变异体执行变异测试,结果表明有效性仅下降3.09%,100%-96.91%=3.09%。可见,本发明能够维持很高的变异测试充分性。
(4)实例过程进一步表明本发明不仅过程简单、容易实施,而且有效性很高、便于算法实现,因此,非常具有实际应用价值。

Claims (5)

1.一种基于原语句占优分析的变异测试方法,其特征在于,该方法包括如下步骤:
(1)利用测试输入集中的每个测试输入依次执行被测原程序,得到被测原程序每条语句的执行向量;
(2)基于执行向量分析原语句之间的占优关系,构造原语句占优关系向量;
(3)基于原语句占优关系向量确定非被占优原语句;
(4)对原语句产生的变异体,选择所有非被占优语句产生的变异体集作为约简后的变异体;
(5)使用约简后的变异体代替所有变异体执行变异测试。
2.根据权利要求1所述的一种基于原语句占优分析的变异测试方法,其特征在于,步骤(1)中,得到被测原程序每条语句的执行向量,具体方法如下:
(1.1)对被测原程序P中的每一个可变异原语句si,si∈S,i=1,2,...,|S|,进行插装,从而标识S中的每一条语句,插装后得到被测新程序P',|S|表示可变异语句数量;
(1.2)对于给定的测试数据集Ω={ω12,...,ω|Ω|},其中,|Ω|为测试用数据集的大小,依次利用ωj,j=1,2,...,|Ω|,执行插装后被测程序P',得到Ω对每个si∈S的执行信息,记为
(1.3)对于原语句si∈S,当测试输入ωj∈Ω能够执行si,那么eij=1,否则eij=0;因此,式(2)中的第j个分量表示ωj对原语句si的执行情况;
(1.4)利用测试输入集Ω中的测试输入,依次执行插装后被测程序P',得到每条语句的执行向量,所有执行向量构成集合其中|E|为集合E包含向量的个数。
3.根据权利要求2所述的一种基于原语句占优分析的变异测试方法,其特征在于,步骤(2)中,使用如下公式(3)计算基于执行向量分析原语句之间的占优关系:
在式(3)中,当向量其所有分量都为0,则dij为0,即sj和si之间没有占优关系;dij表明sj对si的占优情况;当i=j时,sj和si是两个完全相同的向量,这时dij的取值没有实际意义,dij取0;表示向量的内积,语义上表示Ω中能够同时执行语句si和sj的测试输入数量;则表示Ω中能够执行sj的测试输入数量;如果即dij=1,表明能够执行sj的测试用例也能同时执行si,即sj占优si;运算符表示取整,该运算使得dij的取值要么为0,要么为1,当dij=0时,sj不占优si;当dij=1时,sj占优si
4.根据权利要求3所述的一种基于原语句占优分析的变异测试方法,其特征在于,步骤(3)中,确定非被占优原语句方法如下:
(3.1)通过步骤(1)和步骤(2),计算出每个原语句sj对si的占优情况,以dij为分量,构造占优关系向量
式(4)中,能够反映其它语句对si的占优情况,dij=1,则表明sj占优si;dij=0,则表明sj不占优si;向量中的每个分量表示其它语句对si的占优情况;令所有占优向量构成的集合为D中包含|S|个向量,且D中的每一个向量与被测程序P中的一条原语句一一对应;
(3.2)如果一个占优关系向量其分量都为0,即dij=0,j=1,2,...,|S|,那么,任何语句sj,j≠i,都不占优si,则称si是非被占优的。
5.根据权利要求4所述的一种基于原语句占优分析的变异测试方法,其特征在于,步骤(4)中,对原语句产生变异体,选择非被占优语句产生的变异体作为约简后的变异体,方法如下:对被测程序实施变异算子后,记每个语句si产生的变异体集为Mi为所有变异体构成的集合,对于si的占优关系向量如果的所有分量都为0,那么si是非被占优的,其生成的变异体将被保留,所有非被占优语句产生的变异体集记为M'。
CN201811515682.4A 2018-12-12 2018-12-12 一种基于原语句占优分析的变异测试方法 Active CN109739746B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811515682.4A CN109739746B (zh) 2018-12-12 2018-12-12 一种基于原语句占优分析的变异测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811515682.4A CN109739746B (zh) 2018-12-12 2018-12-12 一种基于原语句占优分析的变异测试方法

Publications (2)

Publication Number Publication Date
CN109739746A true CN109739746A (zh) 2019-05-10
CN109739746B CN109739746B (zh) 2022-03-01

Family

ID=66358843

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811515682.4A Active CN109739746B (zh) 2018-12-12 2018-12-12 一种基于原语句占优分析的变异测试方法

Country Status (1)

Country Link
CN (1) CN109739746B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111352830A (zh) * 2020-01-06 2020-06-30 中国矿业大学 基于语句占优关系的变异测试数据进化生成方法
CN111539099A (zh) * 2020-04-17 2020-08-14 北京航空航天大学 一种基于程序变异的Simulink模型验证方法

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006024723A2 (fr) * 2004-07-30 2006-03-09 Certess Procede et systeme d'evaluation de tests d'un programme d'ordinateur par analyse de mutations
US20130042145A1 (en) * 2011-08-12 2013-02-14 Tata Consultancy Services Limited System and method for automatic test data generation for relational testing
CN103605605A (zh) * 2013-11-21 2014-02-26 中国矿业大学 基于语句占优关系和两阶段遗传算法的高阶变异测试方法
CN103617119A (zh) * 2013-12-03 2014-03-05 南通大学 基于语句交互覆盖的回归测试用例选择方法
CN104750610A (zh) * 2015-03-24 2015-07-01 中国矿业大学 基于占优度的消息传递并行程序变异体约简方法
CN105808426A (zh) * 2016-02-28 2016-07-27 徐州工程学院 一种用于弱变异测试的路径覆盖测试数据生成方法
CN105930272A (zh) * 2016-04-22 2016-09-07 中国矿业大学 基于重要语句的分支覆盖测试数据生成方法
JP2017054453A (ja) * 2015-09-11 2017-03-16 富士通株式会社 解析プログラム、解析方法および解析装置
CN106991051A (zh) * 2017-04-05 2017-07-28 西安邮电大学 一种基于变异测试和关联规则的测试用例约简方法
CN107729241A (zh) * 2017-10-12 2018-02-23 中国矿业大学 一种基于变异体分组的软件变异测试数据进化生成方法
CN108446235A (zh) * 2018-03-21 2018-08-24 北京理工大学 结合路径标签数据变异的模糊测试关键数据定位方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006024723A2 (fr) * 2004-07-30 2006-03-09 Certess Procede et systeme d'evaluation de tests d'un programme d'ordinateur par analyse de mutations
US20130042145A1 (en) * 2011-08-12 2013-02-14 Tata Consultancy Services Limited System and method for automatic test data generation for relational testing
CN103605605A (zh) * 2013-11-21 2014-02-26 中国矿业大学 基于语句占优关系和两阶段遗传算法的高阶变异测试方法
CN103617119A (zh) * 2013-12-03 2014-03-05 南通大学 基于语句交互覆盖的回归测试用例选择方法
CN104750610A (zh) * 2015-03-24 2015-07-01 中国矿业大学 基于占优度的消息传递并行程序变异体约简方法
JP2017054453A (ja) * 2015-09-11 2017-03-16 富士通株式会社 解析プログラム、解析方法および解析装置
CN105808426A (zh) * 2016-02-28 2016-07-27 徐州工程学院 一种用于弱变异测试的路径覆盖测试数据生成方法
CN105930272A (zh) * 2016-04-22 2016-09-07 中国矿业大学 基于重要语句的分支覆盖测试数据生成方法
CN106991051A (zh) * 2017-04-05 2017-07-28 西安邮电大学 一种基于变异测试和关联规则的测试用例约简方法
CN107729241A (zh) * 2017-10-12 2018-02-23 中国矿业大学 一种基于变异体分组的软件变异测试数据进化生成方法
CN108446235A (zh) * 2018-03-21 2018-08-24 北京理工大学 结合路径标签数据变异的模糊测试关键数据定位方法

Non-Patent Citations (9)

* Cited by examiner, † Cited by third party
Title
CARWALO, TEJAL: "Exploring Hybrid Approach for Mutant Reduction in Software Testing", 《INTERNATIONAL CONFERENCE ON COMMUNICATION, INFORMATION & COMPUTING TECHNOLOGY》 *
CHIHIRO IIDA: "Reducing Mutants with Mutant Killable Precondition", 《IEEE INTERNATIONAL CONFERENCE ON SOFTWARE TESTING, VERIFICATION AND VALIDATION WORKSHOPS》 *
COLTON J. MCCURDY: "mrstudyr: Retrospectively Studying the Effectiveness of Mutant Reduction Techniques", 《 IEEE INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE AND EVOLUTION》 *
DUNWEI GONG: "Mutant reduction based on dominance relation for weak mutation testing", 《INFORMATION AND SOFTWARE TECHNOLOGY》 *
党向盈: "基于统计分析的弱变异测试可执行路径生成", 《计算机学报》 *
巩敦卫: "基于语句重要度的变异测试对象选择方法", 《电子学报》 *
张功杰: "基于统计占优分析的变异测试", 《软件学报》 *
张功杰: "基于集合进化与占优关系的变异测试用例生成", 《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》 *
胡雷: "基于语义相关性的变异体约简理论及其应用", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111352830A (zh) * 2020-01-06 2020-06-30 中国矿业大学 基于语句占优关系的变异测试数据进化生成方法
CN111352830B (zh) * 2020-01-06 2023-10-24 中国矿业大学 基于语句占优关系的变异测试数据进化生成方法
CN111539099A (zh) * 2020-04-17 2020-08-14 北京航空航天大学 一种基于程序变异的Simulink模型验证方法

Also Published As

Publication number Publication date
CN109739746B (zh) 2022-03-01

Similar Documents

Publication Publication Date Title
CN103257921B (zh) 一种基于改进随机森林算法的软件故障预测系统及其方法
Lu et al. Optimal nonbipartite matching and its statistical applications
Sharpe et al. Dealing with missing values in neural network-based diagnostic systems
Pan et al. Refactoring software packages via community detection in complex software networks
Gong et al. Faster mutation-based fault localization with a novel mutation execution strategy
Subbotin The training set quality measures for neural network learning
CN104461906B (zh) 一种基于代码转换的mc/dc覆盖准则的软件测试数据生成方法
CN113686804B (zh) 一种基于深度回归网络的纺织纤维成分无损清洁分析方法
CN109739746A (zh) 一种基于原语句占优分析的变异测试方法
CN105912712A (zh) 基于大数据的机器人对话控制方法和系统
Calero et al. Method for Obtaining Correct Metrics.
Pan et al. Refactoring packages of object–oriented software using genetic algorithm based community detection technique
Elva et al. Jsctracker: A semantic clone detection tool for java code
Mendling et al. Metrics for business process models
CN109783361A (zh) 确定代码质量的方法和装置
Reiter et al. A novel framework for monitoring and analyzing quality of data in simulation workflows
Williams et al. Sensitivity analysis in model-driven engineering
Baras et al. Automatic boosting of cross-product coverage using Bayesian networks
Ahmed et al. Mutation operators for object-oriented systems: A survey
Huber et al. Where to look when repairing code? comparing the attention of neural models and developers
CN111880957A (zh) 一种基于随机森林模型的程序错误定位方法
CN103217374A (zh) 急性b淋巴细胞白血病启动细胞特性测定系统及方法
Pan et al. Recode: software package refactoring via community detection in bipartite software networks
Dwivedi et al. Applying software metrics for the mining of design pattern
CN109919101A (zh) 一种基于手机客户端的用户体验评价方法及系统

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