[发明专利]基于切片模型的程序回归错误定位方法有效
申请号: | 201610368555.0 | 申请日: | 2016-05-26 |
公开(公告)号: | CN106095663B | 公开(公告)日: | 2017-06-27 |
发明(设计)人: | 刘烃;陈泽华;王海军;郑庆华;管晓宏;朱海萍 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 西安通大专利代理有限责任公司61200 | 代理人: | 陆万寿 |
地址: | 710049 陕*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提出一种基于切片模型的程序回归错误定位方法,在程序预处理阶段,通过对比两个版本程序源码,识别不同部分,根据识别结果对源码进行重排;在轨迹对应阶段,根据获取到的两个版本程序的执行轨迹、语句间的依赖关系和变量值信息,对两条执行轨迹上的语句进行对应、分类;在切片分析阶段,从新版本程序执行失败点为起点开始进行切片分析;根据语句实体分类及其依赖关系,回溯导致程序执行失败的语句实体,直至待分析的依赖语句为空,且被分析的当前语句不需要继续分析其依赖关系;最后,将切片分析的阶段所有被分析的语句实体作为导致回归错误的程序行为切片输出。本方法阐明了回归错误的产生机理,对回归错误的修复具有指导作用。 | ||
搜索关键词: | 基于 切片 模型 程序 回归 错误 定位 方法 | ||
【主权项】:
基于切片模型的程序回归错误定位方法,其特征在于,包括以下步骤:S1)、根据输入的两个版本待测程序,计算出两个版本程序源代码的不同之处,根据源代码的不同对两个版本程序的源代码重排,使得相同的源代码有相同的行号,不同的源代码与空行对应;S2)、用两个经过源代码重排后的程序执行会导致修改版本程序执行失败的测试案例,并提取两个版本程序的执行轨迹、语句包含的变量值以及语句的依赖关系;S3)、将执行轨迹组织成树形结构,树的每个节点是一个函数执行序列;调用轨迹函数体语句对应方法,对步骤S2)中提取到的两版本程序的执行轨迹进行对应;S4)、根据源代码的不同、轨迹对应结果以及语句包含的变量值,将轨迹中的语句分为四类:修改导致不同的语句、流不同的语句、值不同的语句以及一致的语句;S5)、以新版本程序执行失败点为起点开始对回归错误的产生进行切片分析,将失败点语句加入切片分析队列;S6)、判断切片分析队列是否为空,若为空则跳转至步骤S9),否则跳转至步骤S7);S7)、取出切片分析队列首端语句,并判断首端语句是否需要进行切片分析,若不需进行分析则跳转至步骤S6),否则跳转至步骤S8);S8)、将当前分析语句加入回归错误切片,并根据步骤S4)中语句分类将其需要进行切片分析的依赖语句及对应语句加入切片分析队列,结束后跳转至步骤S6);S9)、输出回归错误切片;步骤S4)中分类流程包括以下步骤:S401)、判断轨迹中的语句是否已全部分类,若已全部分类则跳转至步骤S407),否则跳转至步骤S402);S402)、迭代取出轨迹中未分类的语句,对其进行分类;S403)、根据源代码的分类,判断该语句是否为修改的语句,若为修改的语句则标记为修改导致不同的语句并跳转至步骤S401),否则跳转至步骤S404);S404)、根据轨迹对应结果,判断该语句是否有对应语句,若没有对应语句则将该语句标记为流不同的语句并跳转至步骤S401),否则跳转至步骤S405);S405)、根据语句包含的变量值信息,判断该语句与对应语句中包含的变量值是否相同,如果至少包含一个变量值不相同则将该语句标记为值不同的语句并跳转至步骤S401),否则跳转至步骤S406);S406)、将该语句标记为一致的语句并跳转至步骤S401);S407)、轨迹中的语句分类结束,返回。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610368555.0/,转载请声明来源钻瓜专利网。