基于修正条件判定组合覆盖的测试用例生成方法技术

技术编号:19139756 阅读:30 留言:0更新日期:2018-10-13 08:37
本发明专利技术公开了一种基于修正条件判定组合覆盖的测试用例生成方法,包括源代码预处理分析、控制树的生成方法分析、基于修正条件判定组合覆盖对控制树的优化、测试用例的生成的步骤。本发明专利技术使用修正条件判定组合覆盖准则生成测试用例,对比当前使用的自动化测试工具,该方法能够明显提高软件修正条件判定组合覆盖率,同时在语句覆盖、判定覆盖和简单条件覆盖准则方面也有相对的提高,测试用例少,覆盖率高,在提高软件测试用例的覆盖率方面有明显的优势。

Test case generation method based on modified condition to determine combination coverage

The invention discloses a test case generation method based on modified condition judgment composite coverage, including source code pre-processing analysis, control tree generation method analysis, control tree optimization based on modified condition judgment composite coverage, and test case generation steps. Compared with the current automatic testing tools, the method can obviously improve the coverage rate of the combination of software conditional judgment. At the same time, it can also improve the statement coverage, judgment coverage and simple conditional coverage criteria, and has fewer test cases. The coverage rate is high, and it has obvious advantages in improving the coverage of software test cases.

【技术实现步骤摘要】
基于修正条件判定组合覆盖的测试用例生成方法
本专利技术涉及软件测试领域,特别涉及一种基于修正条件判定组合覆盖的测试用例生成方法。
技术介绍
软件测试是执行程序查找错误的过程,是软件生命周期的重要阶段,也是保证软件质量的关键一步。软件测试的成本占总开发成本的50%以上,并且有效的测试数据生成方法可以生成高质量的测试用例,从而减少测试用例的生成规模和软件开发成本。按照所采用的方法和研究对象的不同,测试用例自动生成方式也会有所不同。现有技术中,基于遗传算法生成测试用例,使用自然选择原理和自然遗传机制的搜索算法,在解决大空间、非线性、多峰等高度复杂度问题是可以显示独特的优势和高效性,但是在面临一些实现问题时,其实际的应用效果并不乐观;还有一些学者使用传统搜索算法——爬山法来生成测试用例,该方法的有点是善于找到局部最优解,使得其在解决一维谓词时能够产生很好的效果,但是在解决谓词多样性时,要达到较高的搜索成功率则很难实现;KangoyeSekou提出了基于修正条件判定组合(ModifiedConditionDetermineCombination,以下简称MCDC)覆盖的三种自动生成测试用例的方法,但是没有考虑到两个或多个规范的判定之间可能存在的依赖关系,测试用例数量多,覆盖率不高。
技术实现思路
本专利技术目的是提供一种基于修正条件判定组合覆盖的测试用例生成方法,以减少测试用例的数量,提高软件测试覆盖率。本专利技术解决技术问题采用如下技术方案:一种基于修正条件判定组合覆盖的测试用例生成方法,包括以下步骤:步骤1,源代码预处理分析:通过分析源程序,将程序中的所有变量提取出来、并且将控制条件中的涉及到的所有变量都转化为输入变量和常量之间的关系;步骤2,控制树的生成方法分析:首先利用预处理分析后的源代码,通过GCC编译器生成源程序的中间文件,所述的中间文件存储的是源程序中的语句块信息、控制条件信息以及他们之间的关系;然后将上述中间文件中的信息均用行号信息进行替换,然后将替换后的行号信息用字符串进行表示,并存储到一个列表中,将控制树的所有边信息都存储在一个列表中,最后通过处理列表中的边信息,生成一个源程序的控制树;所述的控制树是一个三元组T=(N,E,n0),N表示控制树中所有的结点集,每个结点集由基本块和判定组成,若判定中包含多个条件,则需要将多条件拆成单个条件,并以‘2_1’表示第二行的第一个条件,用程序中的行号表示结点的编号,如果结点是一个基本块,则用行号最小的编号表示;E表示控制树中所有有向边集合;n0表示程序唯一的入口结点;步骤3,基于修正条件判定组合覆盖对控制树的优化:首先找出多个条件的不同组合,在排除短路情况后,判断每个组合是否符合可执行情况,即是否符合实际情况,如果某个组合不符合实际情况,则去除该组合,然后从剩下的组合中找出符合修正条件判定组合覆盖准则的组合,满足覆盖准则的所有条件,至此,找到基于修正条件判定组合覆盖准则的控制树;所述的修正条件判定组合覆盖准则是同时满足以下几个条件:程序中的每个入口至少进入一次,每个出口至少退出一次;程序中任意判定的所有可能结果都至少出现一次;程序中任意判定的每一个条件的所有可能结果至少出现一次;程序中每一个单条件都能够独立地影响对应判定的结果,即保证在该判定中只改变其中一个条件的结果,而保证其他条件取值结果不变时,能够改变该判定的取值;步骤4,测试用例的生成:结合控制树的优化过程,当给定一条路径之后,将该路径上的所有的控制条件信息都提取出来,通过求解器求解约束得到测试用例;所述的路径是控制树中入口结点到某个叶子结点上的一些不等式和等式的集合,由PC={Pi,Cij,Bij}表示,Pi代表待测函数中的第i条路径;Cij代表第i条路径上的第j个条件,且该条件均表示单个条件;Bij代表第i条路径上的第j个条件的返回值,取值为T、F和NG,NG表示该条件不影响待测函数中此判定的真假,如果执行的某一条路径中的Bij=F,则将该条件取反,再进行求解;如果Bij=NG,则表示不考虑该条件的取值。作为本专利技术的进一步优选,所述的步骤1包括以下操作:对一个模块而言,首先找该模块对应的输入变量并进行提取,找到所有的赋值语句并进行提取,对于自增和自减操作符,当作特殊的赋值语句进行处理,根据关键字的提取找到所有的控制条件,根据赋值语句找到各变量与输入变量之间的关系,进而根据语句的执行顺序,对控制条件中的变量进行替换和修改。作为本专利技术的更进一步优选,所述的步骤2还包括以下操作:若一个程序的控制节点含有多个条件,对于每一个单条件都存在真假两种可能,当条件相同时,也就是在列表中表示的箭头符号左侧值相同时,则该箭头符号右侧的索引值小的字符串是该条件值取值为真的情况,箭头符号右侧索引值大的字符串为该条件取值为假的情况。作为本专利技术的更进一步优选,所述的步骤2还包括以下步骤:在生成控制树的过程中,面对循环条件时,采用了z路径覆盖的思想,所述的Z路径覆盖思想是三种循环结构while、for以及do-while均采用二分支结构,while、for的两个分支分别为执行循环体和不执行循环体,而do-while的两个分支分别为执行两次循环体和执行一次循环体。本专利技术具有如下有益效果:本专利技术使用MCDC覆盖准则生成测试用例,对比当前使用的自动化测试工具,该方法能够明显提高软件MCDC覆盖率,同时在语句覆盖、判定覆盖和简单条件覆盖准则方面也有相对的提高,测试用例少,覆盖率高,在提高软件测试用例的覆盖率方面有明显的优势。附图说明图1为本专利技术测试用例生成方法流程图;图2为本专利技术实施例一的示例程序段;图3为本专利技术实施例一的示例伪代码段;图4为本专利技术实施例一的示例伪代码段的控制树;图5为本专利技术实施例一的示例伪代码段的优化后的控制树;图6为本专利技术实施例二的示例程序;图7为本专利技术实施例三的示例程序;图8为本专利技术实施例三的用自动化测试工具产生的测试用例的覆盖率对比;图9为本专利技术实施例三的测试用例的覆盖率;具体实施方式下面结合附图及实施方式对本专利技术的技术方案作进一步阐述。具体实施方式一:本实施方式是一种基于修正条件判定组合覆盖的测试用例生成方法,包括以下步骤:步骤1,源代码预处理分析:通过分析源程序,将程序中的所有变量提取出来、并且将控制条件中的涉及到的所有变量都转化为输入变量和常量之间的关系;步骤2,控制树的生成方法分析:首先利用预处理分析后的源代码,通过GCC编译器生成源程序的中间文件,所述的中间文件存储的是源程序中的语句块信息、控制条件信息以及他们之间的关系;然后将上述中间文件中的信息均用行号信息进行替换,然后将替换后的行号信息用字符串进行表示,并存储到一个列表中,将控制树的所有边信息都存储在一个列表中,最后通过处理列表中的边信息,生成一个源程序的控制树;所述的控制树是一个三元组T=(N,E,n0),N表示控制树中所有的结点集,每个结点集由基本块和判定组成,若判定中包含多个条件,则需要将多条件拆成单个条件,并以‘2_1’表示第二行的第一个条件,用程序中的行号表示结点的编号,如果结点是一个基本块,则用行号最小的编号表示;E表示控制树中所有有向边集合;n0表示程序唯一的入口结点;步骤3,基于修正条件判定组合覆盖对控制树的优化:首先找出多个本文档来自技高网...

【技术保护点】
1.一种基于修正条件判定组合覆盖的测试用例生成方法,所述的其特征在于,包括以下步骤:步骤1,源代码预处理分析:通过分析源程序,将程序中的所有变量提取出来、并且将控制条件中的涉及到的所有变量都转化为输入变量和常量之间的关系;步骤2,控制树的生成方法分析:首先利用预处理分析后的源代码,通过GCC编译器生成源程序的中间文件,所述的中间文件存储的是源程序中的语句块信息、控制条件信息以及他们之间的关系;然后将上述中间文件中的信息均用行号信息进行替换,然后将替换后的行号信息用字符串进行表示,并存储到一个列表中,也就是将控制树的所有边信息都存储在了一个列表中,将控制树的所有边信息都存储在一个列表中,最后通过处理列表中的边信息,生成一个源程序的控制树;所述的控制树是一个三元组T=(N,E,n0),N表示控制树中所有的结点集,每个结点集由基本块和判定组成,若判定中包含多个条件,则将多条件拆成单个条件,并以‘2_1’表示第二行的第一个条件,用程序中的行号表示结点的编号,如果结点是一个基本块,则用行号最小的编号表示;E表示控制树中所有有向边集合;n0表示程序唯一的入口结点;步骤3,基于修正条件判定组合覆盖对控制树的优化:首先找出多个条件的不同组合,在排除短路情况后,判断每个组合是否符合可执行情况,即是否符合实际情况,如果某个组合不符合实际情况,则去除该组合,然后从剩下的组合中找出符合修正条件判定组合覆盖准则的组合,满足覆盖准则的所有条件,至此,找到基于修正条件判定组合覆盖准则的控制树;所述的修正条件判定组合覆盖准则是同时满足以下几个条件:程序中的每个入口至少进入一次,每个出口至少退出一次;程序中任意判定的所有可能结果都至少出现一次;程序中任意判定的每一个条件的所有可能结果至少出现一次;程序中每一个单条件都能够独立地影响对应判定的结果,即保证在该判定中只改变其中一个条件的结果,而保证其他条件取值结果不变时,能够改变该判定的取值;步骤4,测试用例的生成:结合控制树的优化过程,当给定一条路径之后,将该路径上的所有的控制条件信息都提取出来,通过求解器求解约束得到测试用例;所述的路径是控制树中入口结点到某个叶子结点上的一些不等式和等式的集合,由PC={Pi,Cij,Bij}表示,Pi代表待测函数中的第i条路径;Cij代表第i条路径上的第j个条件,且该条件均表示单个条件;Bij代表第i条路径上的第j个条件的返回值,取值为T、F和NG,NG表示该条件不影响待测函数中此判定的真假,如果执行的某一条路径中的Bij=F,则将该条件取反,再进行求解;如果Bij=NG,则表示不考虑该条件的取值。...

【技术特征摘要】
1.一种基于修正条件判定组合覆盖的测试用例生成方法,所述的其特征在于,包括以下步骤:步骤1,源代码预处理分析:通过分析源程序,将程序中的所有变量提取出来、并且将控制条件中的涉及到的所有变量都转化为输入变量和常量之间的关系;步骤2,控制树的生成方法分析:首先利用预处理分析后的源代码,通过GCC编译器生成源程序的中间文件,所述的中间文件存储的是源程序中的语句块信息、控制条件信息以及他们之间的关系;然后将上述中间文件中的信息均用行号信息进行替换,然后将替换后的行号信息用字符串进行表示,并存储到一个列表中,也就是将控制树的所有边信息都存储在了一个列表中,将控制树的所有边信息都存储在一个列表中,最后通过处理列表中的边信息,生成一个源程序的控制树;所述的控制树是一个三元组T=(N,E,n0),N表示控制树中所有的结点集,每个结点集由基本块和判定组成,若判定中包含多个条件,则将多条件拆成单个条件,并以‘2_1’表示第二行的第一个条件,用程序中的行号表示结点的编号,如果结点是一个基本块,则用行号最小的编号表示;E表示控制树中所有有向边集合;n0表示程序唯一的入口结点;步骤3,基于修正条件判定组合覆盖对控制树的优化:首先找出多个条件的不同组合,在排除短路情况后,判断每个组合是否符合可执行情况,即是否符合实际情况,如果某个组合不符合实际情况,则去除该组合,然后从剩下的组合中找出符合修正条件判定组合覆盖准则的组合,满足覆盖准则的所有条件,至此,找到基于修正条件判定组合覆盖准则的控制树;所述的修正条件判定组合覆盖准则是同时满足以下几个条件:程序中的每个入口至少进入一次,每个出口至少退出一次;程序中任意判定的所有可能结果都至少出现一次;程序中任意判定的每一个条件的所有可能结果至少出现一次;程序中每一个单条件都能够独立地影响对应判定的结果,即保证在该判定中只改变其中一个条件的结果,而保证其他条件取值结果不变时,能够改变该判定的取值;步骤4,测试用例的生成...

【专利技术属性】
技术研发人员:牟永敏
申请(专利权)人:北京信息科技大学
类型:发明
国别省市:北京,11

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

1