一种用于变异测试的程序语句选择方法及系统技术方案

技术编号:38200866 阅读:11 留言:0更新日期:2023-07-21 16:43
本发明专利技术提出了一种用于变异测试的程序语句选择方法及系统,包括如下步骤:根据程序依赖关系中的数据依赖关系和控制依赖关系,构造对应待测试程序的程序依赖图;根据程序依赖图分析被依赖语句,将被数据依赖语句和被控制依赖语句分别放置于被数据依赖语句集合和被控制依赖语句集合;基于程序变量值的变化信息确定两种依赖关系对变异体检测执行的影响,设计基于数据流和控制流的变异实施对象选择策略,即用于变异测试中变异体生成的程序语句选择方法;根据变异实施对象选择策略从两类被依赖语句集合中选择程序语句作为变异实施对象,实现变异实施对象定位并用于后续变异体生成。该方法能在变异体生成层面降低变异测试代价,提高测试效率。高测试效率。高测试效率。

【技术实现步骤摘要】
一种用于变异测试的程序语句选择方法及系统


[0001]本专利技术涉及特定计算模型的计算机系统相关
,具体地说,是一种用于变异测试的程序语句选择方法及系统,可用于软件测试领域,通过选择程序语句作为变异实施对象,进而减少生成变异体的数量,提高变异测试效率。

技术介绍

[0002]本部分的陈述仅仅是提供了与本专利技术相关的
技术介绍
信息,并不必然构成在先技术。
[0003]软件测试技术用于检测软件中可能存在的缺陷,从而保证软件质量。变异测试是一种面向缺陷的测试技术,通过杀死一定数量的变异体评价现有测试用例集的质量。进行变异测试的关键,是采用有针对性的理论和方法,生成合理有效的变异体集合,从而基于该变异体集合,生成满足预期的测试用例集合或者进行其它的测试工作。
[0004]专利技术人发现,现有的变异体约减方法存在着各种问题:

通过随机选择法选择的变异体子集的变异得分在一定程度上均有所下降;

变异体聚类选择法使得每个聚类内的变异体可以被相似测试用例检测到,但初始聚类中心的选择具有一定难度且聚类结果往往收敛于局部最优而得不到全局最优解;

高阶变异法能进一步反映程序潜在的缺陷,但其产生的测试代价却十分高昂;

基于变异分支的转化和占优关系的变异体识别问题在一定程度上增加了问题复杂度,引入了较大的时间开销等问题。

技术实现思路

[0005]本专利技术为了解决上述问题,提出了一种用于变异测试的程序语句选择方法及系统,能够通过选择的程序语句,直接生成约减后的变异体集合,降低变异体生成时间开销,提高变异测试效率。
[0006]为了实现上述目的,本专利技术采用如下技术方案:
[0007]一个或多个实施例提供了一种用于变异测试的程序语句选择方法,包括如下过程:
[0008]根据流分析技术中的两种依赖关系,即数据依赖关系和控制依赖关系,构造对应待测试程序的程序依赖图;
[0009]根据程序依赖图进一步分析被依赖语句,将被数据依赖语句和被控制依赖语句分别放置于被数据依赖语句集合和被控制依赖语句集合中;
[0010]基于程序语句变量值的变化信息确定依赖关系对变异体检测执行的影响,设计基于数据流和控制流的变异实施对象选择策略;
[0011]根据变异实施对象选择策略从被数据依赖语句集合和被控制依赖语句集合中选择程序语句作为目标变异实施对象;
[0012]一个或多个实施例提供了一种用于变异测试的程序语句选择系统,包括采集装置、通信网络和测试终端,采集装置和测试终端通过通信网络建立连接;
[0013]采集装置:被配置为用于获取待测试程序对应的程序依赖图,获取分析程序的被依赖语句信息;
[0014]测试终端:被配置为用于执行上述的一种用于变异测试的程序语句选择方法的步骤。
[0015]与现有技术相比,本专利技术的有益效果为:
[0016]本专利技术通过程序语句间的数据依赖关系和控制依赖关系选择程序语句以指导变异体生成,不仅可以生成符合变异测试要求的变异体集合,而且在生成层面降低了变异测试的代价,无需生成全部的变异体集合,大大地提高了变异测试的效率。
[0017]本专利技术的优点以及附加方面的优点将在下面的具体实施例中进行详细说明。
附图说明
[0018]构成本专利技术的一部分说明书附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的限定。
[0019]图1是本专利技术实施例1的用于变异测试中变异体生成的程序语句选择方法图;
[0020]图2是本专利技术实施例1的变异实施对象选择策略示意图;
具体实施方式
[0021]下面结合附图与实施例对本专利技术作进一步说明。
[0022]应该指出,以下详细说明都是示例性的,旨在对本专利技术提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本专利技术所属
的普通技术人员通常理解的相同含义。
[0023]需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本专利技术的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。需要说明的是,在不冲突的情况下,本专利技术中的各个实施例及实施例中的特征可以相互组合。下面将结合附图对实施例进行详细描述。
[0024]技术术语解释:
[0025]流分析技术:流分析技术分为控制流分析和数据流分析。控制流分析是一种用于分析程序控制流结构的技术,是数据流分析和代码优化的基础,主要生成程序的控制流图。数据流分析是一项编译时使用的技术,在控制流分析的基础上,沿着控制流图的路径对程序中的变量进行赋值和传递,直至程序完成执行。
[0026]程序依赖图:被测程序P的程序依赖图被定义为有向图PDG=<N,E>。其中,N表示程序语句集,E为关系集。
[0027]变异算子:在变异实施过程中所依据的代码转换规则称为变异算子。
[0028]变异体:对源程序注入变异算子后得到的新程序称为变异体。
[0029]变异语句:被测软件程序的一个语句实施变异后生成变异语句,形成的新的程序就是变异体,即变异体内包含变异语句。
[0030]实施例1
[0031]在一个或多个实施方式公开的技术方案中,如图1所示,一种用于变异测试的程序语句选择方法,包括如下步骤:
[0032]步骤1、根据数据依赖关系和控制依赖关系实现待测试程序的程序依赖图的构造,并获取程序中的被依赖语句信息,将被数据依赖语句和被控制依赖语句分别放置于被数据依赖语句集合和被控制依赖语句集合中;
[0033]步骤2、根据两类被依赖语句集合中被依赖语句变量值的变化信息确定依赖关系对变异体检测执行的影响,设计基于数据流和控制流的变异实施对象选择策略;
[0034]步骤3、根据变异实施对象选择策略从两类被依赖语句集合中选择符合策略要求的程序语句作为变异实施对象,完成变异实施对象定位;
[0035]本实施例基于程序的数据流和控制流信息,利用数据依赖关系和控制依赖关系指导程序语句的选择,完成变异实施对象定位,能够生成符合预期的变异体集合,提高变异测试效率。
[0036]步骤1中,构造待测试程序的程序依赖图,并获取程序的被依赖语句信息,设置两类被依赖语句集合并存放相应被依赖语句,包括如下步骤:
[0037]步骤1.1构造待测试程序的程序依赖图:
[0038]程序依赖图是一种带有标记的有向多重图,包含程序的数据依赖特征和控制依赖特征,一般以表达式语句为节点,节点之间的边代表节点计算表达所依赖的数据关系或节点执行所依赖的控制关系。
[0039]构造待测试程序的程序依赖图,具体的,针对程序源码进行分析,确定程序中包含本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于变异测试的程序语句选择方法,其特征是,包括如下过程:根据数据依赖关系和控制依赖关系实现待测试程序的程序依赖图的构造,并获取程序的被依赖语句信息;根据被依赖语句信息将被数据依赖语句和被控制依赖语句分别放置于被数据依赖语句集合和被控制依赖语句集合中;根据两类集合中被依赖语句变量值的变化信息确定两种依赖关系对变异体检测执行的影响,设计基于数据流和控制流的变异实施对象选择策略;根据变异实施对象选择策略从上述两类被依赖语句集合中选择程序语句作为变异实施对象,以完成变异实施对象的定位,实现用于变异测试中变异体生成的程序语句选择。2.如权利要求1所述的一种用于变异测试的程序语句选择方法,其特征是,根据数据依赖关系和控制依赖关系实现待测试程序的程序依赖图的构造,具体是指:通过流分析技术中的数据流和控制流分析待测试程序语句间的依赖关系和被依赖关系,完成待测试程序对应的程序依赖图的构造,同时获得待测试程序的被依赖语句信息,用于下一步分析。3.如权利要求1所述的一种用于变异测试的程序语句选择方法,其特征是,根据被依赖语句信息将被数据依赖语句和被控制依赖语句分别放置于被数据依赖语句集合和被控制依赖语句集合,具体是指:设置两个空集合,即被数据依赖语句集合和被控制依赖语句集合,用于放置对应的被数据依赖语句和被控制依赖语句,用于变异测试中程序语句的选择。4.如权利要求1所述的一种用于变异测试的程序语句选择方法,其特征是,根据被数据依赖语句集合和被控制依赖语句集合中的语句的变量值的变化信息,确定数据依赖关系和控制依赖关系对变异体检测执行的影响,具体是指:对待测试程序而言,程序语句中所涉及的所有变量,均需要声明后再使用;基于相同的变异算子,对程序变量声明处和程序变量使用处对应的程序语句注入变异算子产生变异体,然后再利用同一测试数据执行程序变量声...

【专利技术属性】
技术研发人员:田甜邵阳阳王苗苗杨欢郭庆孙倩徐俊丽李成龙李跃军
申请(专利权)人:山东建筑大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1