[发明专利]一种基于测试用例构建决策树的程序条件语句自动化修复系统及方法有效
申请号: | 201710769700.0 | 申请日: | 2017-08-31 |
公开(公告)号: | CN107577603B | 公开(公告)日: | 2019-11-12 |
发明(设计)人: | 刘誉臻;张震宇 | 申请(专利权)人: | 中国科学院软件研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 安丽 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种基于测试用例构建决策树的程序条件语句自动化修复系统及方法,针对程序的条件语句,从测试用例集的执行信息产生用于训练的数据集,引入决策树进行监督学习的方法产生补丁代码进行修复,并且利用一定的搜索策略克服了错误的条件语句多次执行的困难。通过本发明进行自动化修复,可达到较高的修复成功率和较快的执行效率,同时学习训练和生成补丁的核心模块具有很高的通用性和鲁棒性,能够适用于多种程序语言和环境。 | ||
搜索关键词: | 一种 基于 测试 构建 决策树 程序 条件 语句 自动化 修复 系统 方法 | ||
【主权项】:
1.一种基于测试用例构建决策树的程序条件语句自动化修复系统,其特征在于:所述系统包括:可疑条件语句定位模块,程序预处理模块,训练数据收集模块,模型学习和补丁生成模块,补丁验证和回归测试模块;可疑条件语句定位模块:根据测试用例集,利用程序插桩工具,运用基于程序覆盖的错误自动定位技术针对程序源代码中的条件语句按照可疑度由高到低进行排序,顺次作为可疑条件语句输入后续模块;程序预处理模块:对给定的可疑条件语句所在行,对条件表达式布尔值进行翻转获得程序原版本和变异版本程序,并收集在两个版本程序,即程序原版本和变异版本程序的当前位置中可访问到的程序变量列表,程序变量列表包括静态变量,全局变量,局部变量,常数定义和函数参数;利用插桩工具插入获取这些变量运行时状态和条件表达式结果值的语句,得到插桩后的两个版本程序源代码供训练数据收集模块产生训练数据集;训练数据收集模块:对程序预处理模块中所述两个版本程序分别执行测试用例集,收集每个变量在两个版本程序中执行每个测试用例的运行时值计入日志,过滤选取每个测试用例在两个版本中仅有一个为成功另一为失败的用例,并收集这些用例下两版本程序中成功的一方所打印出的变量值作为训练数据集;模型学习和补丁生成模块:将训练数据集中每个用例下的每个变量值作为不同的输入维组成一个输入向量,将每个用例下条件表达式的值作为输出值,对训练集进行基于决策树的二分类监督学习,可生成一棵 二叉树结构的分类器,并解析这棵树生成补丁语句;补丁验证和回归测试模块:将生成的补丁语句应用到原程序中并运行整个测试用例集,如果全部通过则结束并成功进行修复,否则筛选训练数据集中的训练数据项以及限制决策树深度进行再次尝试直到成功修复或最终失败。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710769700.0/,转载请声明来源钻瓜专利网。
- 上一篇:一种可贴标取件的模内贴标系统
- 下一篇:一种平稳的高精度自动贴合标签装置