一种用于弱变异测试的路径覆盖测试数据生成方法技术

技术编号:13423056 阅读:88 留言:0更新日期:2016-07-28 18:18
本发明专利技术公布了一种用于弱变异测试的路径覆盖测试数据生成方法,目的是将弱变异测试问题转化为路径覆盖问题,从而有效提高变异测试的效率,和生成具有较强检测缺陷能力的测试数据。首先,基于弱变异测试准则构建变异分支,基于变异分支之间的相关度和变异分支的覆盖难度,采取一定的方法生成变异分支相关图;接着,基于该图,按照一定的策略,生成比较容易覆盖的可执行路径集合;然后,构建多路径覆盖测试数据生成问题的多目标优化数学模型;最后采用多种群并行遗传算法生成覆盖这些路径的测试数据。

【技术实现步骤摘要】

本专利技术涉及计算机软件测试领域,设计了一种用于弱变异测试的路径覆盖测试数据生成方法。该方法区别于原有方法的特色在于,将弱变异测试问题转化为路径覆盖问题,生成的目标路径容易覆盖而且路径集合比较小,覆盖这些路径测试数据有较强的检错能力。
技术介绍
软件测试是保证软件质量的重要手段,通过测试,不但能够检测软件可能存在的缺陷,而且能够提高软件的可靠度。变异测试是一种面向缺陷的软件测试方法,通过人工分析的方法,对程序插入缺陷,以模拟真实的缺陷,这些缺陷很大程度上反映软件的真实缺陷。变异测试是指对原程序的某一语句做微小的合乎语法的变动,如将关系运算符“=”替换为“!=”,产生一个新的程序,该程序称为一个变异体。若以某一测试用例,分别执行变异体和原程序,如果两者的输出不同,那么,称测试数据杀死了该变异体,这种变异测试准则称为强变异测试;如果两者在变异点的状态不同,这种变异测试准则称为弱变异测试。那么,已有研究表明,弱变异测试是强变异测试的有效替代。一般的,一个程序往往存在很多变异体,为了杀死这些变异体,也需要大量的测试数据;而且,这些测试数据需要同时执行原程序和变异体,因此,变异测试的效率通常很低。为了克服上述缺陷,Papadakis等人在2011年《SoftwareQualityJournal》第19期发表的文章“Automaticallyperformingweakmutationwiththeaidofsymbolicexecution,concolictestingandsearch-basedtesting”一文提到,基于弱变异测试准则杀死变异体的问题,转化为变异条件语句真分支的覆盖问题。为此,对于变异前后的语句s和s',基于弱变异测试的必要条件,构建变异条件语句“ifs!=s'”,其真分支为一个标志语句,简称变异分支;然后,把这些变异分支插入到原程序的变异前的语句s前面,这样便形成了新的被测程序。那么,能够覆盖新程序变异分支的测试数据,一定能够杀死该变异分支对应的变异体。这样做的好处是,能够利用已有的分支覆盖测试数据生成方法,生成变异测试数据。但是,采用上述方法进行弱变异测试转化,将导致新程序包含大量的变异分支,使得分支覆盖测试数据生成问题非常复杂。如果采用合适的方法,约简新程序中的变异分支,并对约简之后的变异分支,依所属的路径进行分组,那么,能够将分支覆盖问题,转化为路径覆盖问题,这样一来,能够减少需要生成的测试数据,从而提高变异测试的效率。与变异测试相比,结构覆盖测试近年来取得丰硕的研究成果,尤其路径覆盖的测试结合基于搜索的方法生成测试数据,近年成为来软件测试研究的热点。该方法首先将路径覆盖问题,转化为一个数值函数优化问题,然后,采用进化优化方法,生成期望的测试数据。Xanthakis、Bueno以及Watkins等,分别利用遗传算法,针对串行程序生成覆盖路径的测试数据;田甜等人在2013年《计算机学报》第11期发表的文章“消息传递并行程序路径覆盖测试数据生成问题的模型及其进化求解方法”一文提到用于并行程序的测试数据生成方法。但是,上述这些方法存在的共同缺陷是,一次运行遗传算法,仅能生成覆盖一条路径的测试数据。为了克服上述缺陷,Ahmed等将多路径覆盖测试数据生成问题,转化为多目标优化问题,使得一次运行遗传算法,能够生成覆盖多条路径的测试数据。但是,该方法所有子中群都解决相同的优化问题。考虑到变异测试不仅可以选择注入缺陷的位置和类型,而且可以根据不同层次的测试,选择变异算子,因此,本专利技术将弱变异分支问题转化为路径覆盖测试数据生成问题,在被测程序中插装的众多的变异分支,那么,基于弱变异测试准则,生成覆盖目标路径的测试数据,同时,路径中包含的变异分支作为检测缺陷,使生成测试数据的质量大大提高。
技术实现思路
本专利技术提出一种用于弱变异测试的路径覆盖测试数据生成方法。该方法,首先根据变异分支的覆盖难度和变异分支之间的相关性,按照一定的策略,生成比较容易覆盖的可执行路径集合;然后基于这些路径的覆盖,建立多目标优化数学模型;最后采用多种群并行遗传算法生成覆盖这些路径的测试数据。本专利技术所要解决的技术问题:克服现有弱变异测试效率低的问题,将面向缺陷的弱变异测试问题转化为成熟的路径覆盖问题;并采用遗传算法生成测试数据,这些测试数据不仅能穿越目标路径,而且能发现目标路径中的缺陷,提高了软件测试的效率。本专利技术的技术解决方案:一种用于弱变异测试的路径覆盖测试数据生成方法,其特征在于包含以下步骤:步骤1.将弱变异测试转化为路径覆盖测试在并行程序中,对原语句s实施某一变异算子,生成变异语句s',由原语句和变异语句构建的变异条件语句为“ifs!=s'”,其真分支简称变异分支。将这些变异分支插装到原程序相应位置,形成新的并行程序,记为S,若S由m(m>1)个进程组成,第i(i=0,1,2,...,m-1)个进程,记为Si。在进程Si中,一个变异分支记为一个节点,所有变异分支节点组成集合 H = { e 1 0 , e 2 0 , ... e | S 0 | 0 , ... , e 1 i , e 2 i , ... , e | S i | i , ... , e 1 m - 1 , e 2 m - 1 , ... , e | S m - 1 | m - 1本文档来自技高网
...
一种用于弱变异测试的路径覆盖测试数据生成方法

【技术保护点】
一种用于弱变异测试的路径覆盖测试数据生成方法,其特征在于,该方法包括:步骤1.1:给出变异分支相关度的计算方法,保障相关度比较高的一些变异分支进行结合,生成的可执行路径,比较容易覆盖;步骤1.2:给出变异分支覆盖难度的计算方法,保障在路径生成时,优先选择覆盖难度高的变异分支,且只选择1次,从而降低覆盖难度高的变异分支在路径集合中出现的频率;步骤1.3:给出基于变异分支相关图的可执行路径集合生成方法;依次选择覆盖难度最大的变异分支,并结合与其相关度大的一些变异分支,生成变异分支相关图,再基于该图生成比较容易覆盖的可执行路径集合;基于变异分支的覆盖难度,从高到底的顺序,对将变异分支进行排序,形成一个有序的集合,记为H;为了生成可执行路径,先基于H和Λ构建变异分支相关图;首先,从集合H中,选取最难覆盖的变异分支为基准变异分支,将放入顶点集合中,并设置合适的阈值Tα;然后,基于矩阵Λ中所属的行,考察与其他变异分支ejk1ik1(ik1=0,1,...,m-1;jk1=1,2,...;jk1≠j)]]>的相关度如果大于Tα,将放入Veji={eji,ejk1ik1}]]>中;以此类推,继续考察和其他变异分支相关度与阈值Tα的关系;直到与(或)相关的所有变异分支都考察完毕,那么结束生成最后,考察集合Veji={eji,ejk1ik1,...}]]>中,任意两个顶点之间相关度是否大于0,如果大于0,添加到边集合直到所有顶点之间都考察完毕;生成变异分支相关图,记为下面由变异分支相关图生成可执行路径集合,首先,考察中任意两个顶点之间是否存在边(入度边或出度边),如果两或多个顶点之间,不存在边,则将这些顶点分为n(n=1,2,...)个组;然后,分别考察每个组内顶点与中其他顶点是否存在边,如果存在边,将中这些顶点放入对应的组内;直到中所有的顶点都被考察完毕;并根据每个组内变异分支所属并行程序的进程,及进程内这些变异分支从前往后的顺序,输出一系列并行程序的路径;删除这些路径中的不可执行的路径,从剩下的一或多条可执行路径中,选择一条包含节点最少的可执行路径,作为对应的路径最后,将路径放入可执行路径集合Q中,并从变异分支集合H中,约简路径包含的变异分支;若继续从约简后的H中,选取最难覆盖的变异分支为基准节点,生成对应的可执行路径;若输出可执行路径集合Q={g1,g2,...,gk,...,g|Q|},|Q|为集合Q中可执行路径个数。...

【技术特征摘要】
1.一种用于弱变异测试的路径覆盖测试数据生成方法,其特征在于,该方法包括:
步骤1.1:给出变异分支相关度的计算方法,保障相关度比较高的一些变异分支进行结
合,生成的可执行路径,比较容易覆盖;
步骤1.2:给出变异分支覆盖难度的计算方法,保障在路径生成时,优先选择覆盖难度
高的变异分支,且只选择1次,从而降低覆盖难度高的变异分支在路径集合中出现的频率;
步骤1.3:给出基于变异分支相关图的可执行路径集合生成方法;依次选择覆盖难度最
大的变异分支,并结合与其相关度大的一些变异分支,生成变异分支相关图,再基于该图生
成比较容易覆盖的可执行路径集合;
基于变异分支的覆盖难度,从高到底的顺序,对将变异分支进行排序,形成一个有序的
集合,记为H;
为了生成可执行路径,先基于H和Λ构建变异分支相关图;首先,从集合H中,选取最难
覆盖的变异分支为基准变异分支,将放入顶点集合中,并设置合适的阈值Tα;
然后,基于矩阵Λ中所属的行,考察与其他变异分支 e j k 1 i k 1 ...

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:徐州工程学院
类型:发明
国别省市:江苏;32

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

1