[发明专利]基于测试用例自动生成算法的单元测试自动执行方法有效
| 申请号: | 201910819271.2 | 申请日: | 2019-08-31 |
| 公开(公告)号: | CN110543421B | 公开(公告)日: | 2022-03-29 |
| 发明(设计)人: | 黄翰;连木明;朱浩锋;植浩聪;谌小虎;刘方青;杨忠明;汪疆平 | 申请(专利权)人: | 华南理工大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 广州粤高专利商标代理有限公司 44102 | 代理人: | 何淑珍;江裕强 |
| 地址: | 510640 广*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 测试 自动 生成 算法 单元测试 执行 方法 | ||
本发明提供了基于测试用例自动生成算法的单元测试自动执行方法。所述方法包括以下步骤:首先对被测试程序的代码进行预处理后进行词法分析,先建立生成测试代码的路径图,并将控制流图输出到文件,然后在经过预处理后的代码中进行定点代码插入,编译插入代码后的文件。然后根据测试用例自动生成算法生成测试用例,调用用户代码,遍历用户代码的每个代码块,计算fitness的算法适应值,获取fitness适应值并生成测试用例对应的路径,当判断路径是否全覆盖或者运行超时退出。本发明适用于软件开发过程中的单元测试,可以通过计算机程序自动生成测试用例进行代码测试以及自动生成测试报告,大大降低了人力资源成本和时间成本。
技术领域
本发明涉及计算机软件工程的软件测试领域,具体涉及基于路径覆盖测试用例自动生成算法与单元测试自动执行的一体化方法。
背景技术
随着软件应用数量的爆炸式增长和软件行业的不断发展,高质量的软件成为业界和用户的普遍需求,而高质量的软件总是离不开大量的测试。IEEE计算机协会在IEEEStd829-1983中对软件测试给出了明确的定义:通过人工测试或自动测试的手段对软件的质量进行度量,用于检验被测试软件实际运行结果是否于设计软件时的初中相一致。由于传统的通过人工生成测试用例对被测试软件进行测试的方式需要耗费大量的人力成本和时间成本,工业界对于自动生成测试用例的需求日益增加。
现有的软件自动化测试方法可分为静态和动态两类。静态测试方法是指无需动态执行被测试程序代码,仅对代码进行静态检测和审阅来评测。静态测试方法有着难以发现由于软件运行环境导致的错误和故障,和因测试目标的复杂性而导致符号执行状态空间爆炸致使静态分析无法继续进行的缺陷。因此需要使用动态测试来对软件代码进行进一步的测试。对于动态测试方法大都是基于语句覆盖或者是分支覆盖,远没有路径覆盖方法更有效地检测出代码的bug。
本发明中采用的基于测试用例自动生成算法的单元测试自动执行方法,通过对被测试程序的代码进行语法分析生成路径图,并对被测试代码进行定点代码插入,并编译插入代码后的文件。然后根据测试用例自动生成算法不断生成测试用例并传入修改后的被测试代码进行代码路径覆盖。当判断路径全覆盖或者运行超时测试完成。本发明适用于软件开发过程中的单元测试,经过大量的代码验证,可以作为实际的软件自动测试工具。
发明内容
本发明针对如今软件行业上缺乏一体化的软件自动化测试方法的不足,提出了基于测试用例自动生成算法的单元测试自动执行方法。本发明的目的在于帮助软件测试人员去除大量的技术含量低且重复性的工作,能够快速的获得覆盖被测试程序所有路径的测试用例的报告,从而利用这些测试用例更好地检测出测试程序可能存在的BUG,用于修复程序漏洞,提高软件质量。
本发明的目的至少通过如下技术方案之一实现。
基于测试用例自动生成算法的单元测试自动执行方法,包括以下步骤:
S1、对输入的源程序即用户代码进行文件预处理,使其符合词法分析要求的语法结构;
S2、递归遍历用户代码,对预处理后的源程序进行词法分析,生成控制流图即测试代码的路径图,记录程序所有可能执行路径的路径编码,记为路径表;
S3、递归遍历用户代码,对预处理后的源程序进行词法分析,并在预处理后的源程序中的条件语句块和循环语句块中分别插入代码,得到新组织好的代码;
插入的代码即测试代码分为两部分,第一部分用于当用户代码执行到条件语句块或者循环语句块时,能实时记录该插入的代码块编号并将该代码块加入到当前测试用例的编码路径中,这一部分插入的代码也用于记录用户代码的输入变量执行到该代码块时的实际值;第二部分插入的代码包括对输入变量进行处理的测试用例自动生成算法的代码和调用用户代码函数的代码;
S4、将新组织好的代码写入到一个新的源程序文件中并调用C++编译器对新的源程序文件中的代码进行编译,得到可执行文件;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华南理工大学,未经华南理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910819271.2/2.html,转载请声明来源钻瓜专利网。





