【技术实现步骤摘要】
一种基于变量分离的软件bug定位方法及装置
[0001]本专利技术属于计算机信息处理领域软件工程测试自动化领域,具体涉及一种基于变量分离的软件bug定位方法及装置。
技术介绍
[0002]业内通常将计算机程序中存在的比较隐晦,不是显而易见的一些缺陷或问题统称为bug。在日常编写程序的过程中,随着代码量的增多,尤其是修改老代码时由于对老代码理解不够,考虑不周等,很可能在不经意间引入bug。bug的存在普遍且难以完全避免的。因此如何定位程序中的bug是长期的重要课题。
[0003]软件工程各阶段中软件调试工作往往是费时,费力的,bug位置的定位已被确定为成本最为昂贵的活动之一。能够快速的定位软件bug的位置根源,可以减少测试阶段所花费的时间精力。传统的bug定位的基本思想:首先确定最有可能的软件bug的语句,并对他们进行排序;然后,根据排列的顺序逐个检查,直到找到bug根源位置(语句)为止。好的定位技术应当是把有bug的语句位置排名更靠前,这样,软件bug就能被更快更精确的检查出来。
[0004]但这类方法借助手 ...
【技术保护点】
【技术特征摘要】
1.一种基于变量分离的软件bug定位方法,其特征在于,包括:对待测程序进行AST分析得到待测程序的控制流程图,控制流程图包括多个节点,每个节点包括使用变量和赋值变量,利用当前节点中的使用变量将当前节点和前驱节点进行连接,以及利用当前节点中的赋值变量将当前节点与后继节点进行连接,从而得到数据流节点关联图;利用测试用例测试插装第一程序覆盖信息的待测程序,从测试结果中筛选失败测试结果的测试变量,从第一程序覆盖信息中筛选失败测试结果的测试变量对应的第二程序覆盖信息,从数据流节点关联图和控制流程图提取与失败测试结果的测试变量关联的静态程序切片,基于失败测试结果的测试变量、第二程序覆盖信息和静态程序切片构建每个测试变量的动态程序切片;将动态程序切片代入VSDstar公式中得到待测程序的每个测试变量bug怀疑度。2.根据权利要求1所述的基于变量分离的软件bug定位方法,其特征在于,对待测程序进行AST分析处理得到待测程序的控制流程图,包括:将待测程序进行AST分析处理得到抽象语法树结构,遍历抽象语法树结构的节点构建待测程序的控制流程图。3.根据权利要求1所述的基于变量分离的软件bug定位方法,其特征在于,构建数据流节点关联图,包括:将前驱节点的赋值变量输入至当前节点作为当前节点的使用变量,以完成前驱节点和当前节点的连接,当前节点的使用变量通过计算得到当前节点的赋值变量,将当前节点的赋值变量输入至后继节点以完成当前节点与后继节点的连接,通过当前节点分别与前驱节点和后续节点的连接关系构建数据流节点关联图。4.根据权利要求1所述的基于变量分离的软件bug定位方法,其特征在于,利用测试用例测试插装第一程序覆盖信息的待测程序,包括:对待测程序插装第一程序覆盖信息,编译待测程序中的测试对象的测试执行程序,通过测试用例执行测试执行程序得到测试对象的测试结果。5.根据权利要求1所述的基于变量分离的软件bug定位方法,其特征在于,从数据流节点关联图和控制流程图提取与失败测试结果的测试变量关联的静态程序切片,包括:从数据流节点关联图中找到将失败测试结果的测试变量作为赋值变量的节点,以及该节点与前驱节点和后继节点的连接关系得到与失败测试结果的测试变量存在数据依赖关系的语句;从控制流程图中找到失败测试结果的测试变量所在的节点,以及该节点与前驱节点和后继节点的连接关系得到与失败测试结果的测试变量存在结构依赖关系的语句;数据依赖关系的语句和结构依赖关系的语句的集合构建了静态程序切片。6.根据权利要求1所述的基于变量分离的软件bug定位方法,其特征在于,基于测试结果筛选得到失败测试结果的测试变量,包括:设定每个测试变量的测试期待值,当测试完成后输出的测试值与测试期待值一致则对应测试变量为成功测试结果的测试变量,存在差异则对应测试变量...
【专利技术属性】
技术研发人员:陈祥献,吴建林,于金玲,
申请(专利权)人:杭州金衡和信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。