The invention provides a unit test method based on automatic generation of path coverage test cases. Firstly, lexical analysis and syntax analysis are performed on the code of the tested program, and then the control flow chart of the program is obtained. After obtaining the control flow graph, the node table is generated according to the known number of nodes. Then, according to the test cases generated automatically, the executable code in the generated control flow diagram is driven to execute. At the same time, the fitness fitness fitness is calculated according to the execution results of the executable code, and the child nodes are selected to repeat the above process until the terminating node is found in the graph. Finally, the path marker and the path marker are generated. The corresponding fitness fitness value of the path is obtained. Then the test case auto-generation algorithm is run, which automatically generates test cases according to the fitness fitness value returned until the path is completely covered or exits when the set running time exceeds. The invention is suitable for software testing and can be applied to actual software testing working environment after experimental verification.
【技术实现步骤摘要】
基于路径覆盖测试用例自动生成的单元测试方法
本专利技术涉及计算机软件工程的软件测试领域,具体涉及基于路径覆盖测试用例自动生成的单元测试一体化方法。
技术介绍
随着软件产业的不断发展,软件测试在软件开发中的地位越来越重要,因为传统的软件测试基本是由人工生成测试用例,再对软件进行测试,这是一个极其复杂和繁琐的体力劳动,不仅成本高而且易出错,再者在软件测试的过程中存在大量技术含量低且重复性极高的工作,所以设计一个软件自动测试智能软件能够有效降低企业的测试人力成本,同时对测试报告进行分析,能够有效地保证测试效率和效果并控制测试成本。一个优秀的自动化测试软件可以极大地节省大量的人力物力,减少资源消耗,提高企业效益与企业的市场竞争力。现有的软件自动化测试方法中使用的动态的方法大都是具体基于语句覆盖或者是分支覆盖,而在软件测试所有的覆盖类型中,路径覆盖是最强的覆盖,有更强的纠错能力,能更有效地检查出软件的瑕疵和错误。且现如今虽有测试用例自动生成的方法,却没有一个完整的,可以对源代码自动进行解析,并将测试用例代入进行测试,同时生成测试报告的软件自动化测试智能方法。本专利技术中采用的基于路径覆盖测试用例自动生成的单元测试方法,构建源代码分析生成控制流图模块、测试用例自动生成模块、测试用例执行模块、测试报告生成模块,并将这些模块组合生成软件自动化测试系统。基于路径覆盖测试用例自动生成,无须人工干预,仅需输入需要测试的源代码,系统便可解析源代码生成控制流图,再自动生成测试用例,不断地进行测试,直至覆盖源代码中所有路径或已超过最大迭代次数,最后生成一份测试报告。本专利技术采用合理 ...
【技术保护点】
1.基于路径覆盖测试用例自动生成的单元测试方法,其特征在于,包括以下步骤:对输入源程序即源代码进行文件预处理,使其符合词法分析与语法分析要求的语法结构;对步骤(a)预处理后的输入源代码进行词法分析,建立符号表;对步骤(a)预处理后的输入源代码进行语法分析,建立源代码对应的控制流图(CFG),其中包含控制节点、普通节点与终止节点,将源代码转化可执行的中间代码,并在控制节点中插入可执行代码;由测试用例自动生成算法生成测试用例;由测试用例执行模块获取测试用例,并驱动控制流图中节点的可执行代码的执行,根据可执行代码执行结果计算适应度函数fitness适应值;若当前节点不是终止节点,由可执行代码的执行结果选择下一个子节点重复(c),(d),(e)步骤;否则进入下一步;当前节点是终止节点,获取fitness适应值的最终结果,并生成该测试用例对应的路径编码;判断路径覆盖是否已经达到100%或者运行是否已经超时,若已经达到100%则进入下一步,若已经超则退出,否则,重复(d),(e),(f),(g)步骤;生成包含测试用例对应覆盖的路径,以及路径覆盖率的测试报告。
【技术特征摘要】
1.基于路径覆盖测试用例自动生成的单元测试方法,其特征在于,包括以下步骤:对输入源程序即源代码进行文件预处理,使其符合词法分析与语法分析要求的语法结构;对步骤(a)预处理后的输入源代码进行词法分析,建立符号表;对步骤(a)预处理后的输入源代码进行语法分析,建立源代码对应的控制流图(CFG),其中包含控制节点、普通节点与终止节点,将源代码转化可执行的中间代码,并在控制节点中插入可执行代码;由测试用例自动生成算法生成测试用例;由测试用例执行模块获取测试用例,并驱动控制流图中节点的可执行代码的执行,根据可执行代码执行结果计算适应度函数fitness适应值;若当前节点不是终止节点,由可执行代码的执行结果选择下一个子节点重复(c),(d),(e)步骤;否则进入下一步;当前节点是终止节点,获取fitness适应值的最终结果,并生成该测试用例对应的路径编码;判断路径覆盖是否已经达到100%或者运行是否已经超时,若已经达到100%则进入下一步,若已经超则退出,否则,重复(d),(e),(f),(g)步骤;生成包含测试用例对应覆盖的路径,以及路径覆盖率的测试报告。2.根据权利要求1所述的基于路径覆盖测试用例自动生成的单元测试方法,其特征在于:步骤(a)中,文件预处理中,若有多文件,在C/C++中将通过include语句进行识别,将需要include的文件放到同一个源文件中;将if-elseif-else结构中在elseif和else中插入块结束标识符,将if-elseif-else结构转换成if-else嵌套结构,将switch语句结构中case多分支结构进行转换成if-else多嵌套结构,降低代码抽象程度与控制流图实现难度。3.根据权利要求1所述的基于路径覆盖测试用例自动生成的单元测试方法,其特征在于:步骤(b)(c)中,对源代码进行词法分析与语法分析,生成源代码的对应的控制流图(CFG),通过循环、分支、顺序结构能表示任何可执行代码的结构,所以将顺序执行代码转化为控制流图中的顺序节点,其中包含着源代码中顺序结构代码的中间表示代码,用栈存储相关代码信息,将分支结构与循环结构通过构建图的分支节点与局部回路形式将分支与循环结构,在图中实例化。4.根据权利要求1所述的基于路径覆盖测试用例自动生成的单元测试方法,其特征在于:步骤(c)中,源代码中存在函数调用与递归函数,将函数视为一个模块,对函数进行分析,构建该函数代码对应的控制流图,在函数调用时,将函数对应的控制流图的第一个节点的指针传给调用函数,组合构建控制流图;对于简单的递归函数则将其构建为带有局部回路的控制流图子图,递归调用时将子图传给外部调用者构建总的控制流图。5.根据权利要求1所述的基于...
【专利技术属性】
技术研发人员:黄翰,连木明,刘方青,杨忠明,郝志峰,
申请(专利权)人:华南理工大学,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。