[发明专利]一种基于测试用例构建决策树的程序条件语句自动化修复系统及方法有效
申请号: | 201710769700.0 | 申请日: | 2017-08-31 |
公开(公告)号: | CN107577603B | 公开(公告)日: | 2019-11-12 |
发明(设计)人: | 刘誉臻;张震宇 | 申请(专利权)人: | 中国科学院软件研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 安丽 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 测试 构建 决策树 程序 条件 语句 自动化 修复 系统 方法 | ||
本发明涉及一种基于测试用例构建决策树的程序条件语句自动化修复系统及方法,针对程序的条件语句,从测试用例集的执行信息产生用于训练的数据集,引入决策树进行监督学习的方法产生补丁代码进行修复,并且利用一定的搜索策略克服了错误的条件语句多次执行的困难。通过本发明进行自动化修复,可达到较高的修复成功率和较快的执行效率,同时学习训练和生成补丁的核心模块具有很高的通用性和鲁棒性,能够适用于多种程序语言和环境。
技术领域
本发明涉及一种基于测试用例构建决策树的程序条件语句自动化修复系统及方法,属于软件测试与调试技术领域。
背景技术
软件测试和调试是保证软件质量的重要环节,也是最耗时和最困难的工作之一。对程序进行自动化的测试能够有效提高软件开发效率和质量,而对程序做自动化修复能够在非常节约人力成本的情况下让程序错误得到最大限度及时有效的修正。因此研究人员开始关注并提出了很多自动化生成补丁修复程序的思路与方法。
程序的自动化修复可以从很多角度展开,例如可以在源代码级别或者中间代码甚至可执行代码级别,相应的也有静态的修复和动态运行时进行修复,有针对特定类型错误的也有面向通用程序和通用错误的。目前较常用的分类是基于约束的程序修复与基于测试用例集的程序修复,本发明提出的方法属于后者。基于测试用例的修复首要目标是在发现有失败测试用例即发现了程序错误之后,对源代码进行修改以使测试用例全部通过。其基本假设是测试用例相对足够充分,且测试用例的产生遵循了一定的规则例如等价类划分、边界值、分支覆盖等,这样一套完善的测试用例集足够将程序的预期行为都覆盖到并且做出隐含的描述,因此通过了全部测试用例可以认为等价于在各种输入下都可正常执行。
目前基于测试用例的自动化修复主要有基于搜索的方法、基于语义分析和约束求解的方法以及基于先验知识和特征的方法等。这些方法仍往往面临一些困难,例如搜索空间巨大和条件组合爆炸问题、约束求解器的性能和功能的限制以及修复方法的鲁棒性和通用性问题等。
发明内容
本发明技术解决问题:克服现有技术的不足,提供一种基于测试用例构建决策树的程序条件语句自动化修复系统及方法,通过本发明进行自动化修复,可达到较高的修复成功率和较快的执行效率,同时学习训练和生成补丁的核心模块具有很高的通用性和鲁棒性,能够适用于多种程序语言和环境。
本发明技术解决方案:一种基于测试用例构建决策树的程序条件语句自动化修复系统,全自动的进行错误定位修复和验证无需人工干预,无需任何先验知识和人的经验完全基于测试用例集的数据进行学习,对条件语句进行翻转来获得执行并获得训练数据集,利用决策树进行训练并产生修复代码,利用决策树的剪枝和训练集搜索过滤算法。
所述系统包括:可疑条件语句定位模块,程序预处理模块,训练数据收集模块,模型学习和补丁生成模块,补丁验证和回归测试模块;其中:
可疑条件语句定位模块:根据测试用例集,利用程序插桩工具,运用基于程序覆盖的错误自动定位技术针对程序源代码中的条件语句按照可疑度由高到低进行排序,顺次作为可疑条件语句输入后续模块;
程序预处理模块:对给定的可疑条件语句所在行,对条件表达式布尔值进行翻转获得程序原版本和变异版本程序,并收集在两个版本程序,即程序原版本和变异版本程序的当前位置中可访问到的程序变量列表,程序变量列表包括静态变量,全局变量,局部变量,常数定义和函数参数;利用插桩工具插入获取这些变量运行时状态和条件表达式结果值的语句,得到插桩后的两个版本程序源代码供训练数据收集模块产生训练数据集;
训练数据收集模块:对程序预处理模块中所述两个版本程序分别执行测试用例集,收集每个变量在两个版本程序中执行每个测试用例的运行时值计入日志,过滤选取每个测试用例在两个版本中仅有一个为成功另一为失败的用例,并收集这些用例下两版本程序中成功的一方所打印出的变量值作为训练数据集;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710769700.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种可贴标取件的模内贴标系统
- 下一篇:一种平稳的高精度自动贴合标签装置