[发明专利]一种基于贝叶斯网络推理的软件错误分层诊断方法有效
申请号: | 201710048225.8 | 申请日: | 2017-01-20 |
公开(公告)号: | CN107025169B | 公开(公告)日: | 2020-08-21 |
发明(设计)人: | 余啸;刘进;殷晓飞;崔晓辉;施泽洋;井溢洋 | 申请(专利权)人: | 武汉大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 鲁力 |
地址: | 430072 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 贝叶斯 网络 推理 软件 错误 分层 诊断 方法 | ||
1.一种基于贝叶斯网络推理的软件错误分层诊断方法,其特征在于,包括以下步骤:
步骤1,以函数为代码元素,构建函数层贝叶斯网络程序依赖图,BNPDG是表示代码元素依赖关系的贝叶斯网络模型;函数层BNPDG表示为一个三元组(V,E,P);V代表节点集合,每个节点代表一个代码元素,即一个自定义函数;函数节点,有其对应的状态空间,不同状态值代表该代码元素不同的执行过程;E代表有向边的集合,每条有向边都代表代码元素之间的依赖关系,所述依赖关系是语义依赖,或者是通过测试数据得到的统计依赖;其中语义依赖包括控制依赖和数据依赖;P代表网络参数,即每个节点的条件概率分布;构建函数层BNPDG包括以下子步骤,
步骤1.1,将要测试的程序代码生成程序依赖图,确定函数层BNPDG语义依赖关系;
步骤1.2,利用程序执行数据生成统计依赖关系图,确定函数层BNPDG统计依赖关系;
步骤1.3,融合控制依赖边、数据依赖边和统计依赖边,形成基于贝叶斯网络的程序依赖图初始结构;
步骤1.4,去掉基于贝叶斯网络的程序依赖图初始结构中的环路;
步骤1.5,学习基于贝叶斯网络的程序依赖图中的参数信息;
步骤2,在函数层贝叶斯网络程序依赖图上进行测试预言的概率推理,判断某个测试用例对整个程序来说是否为失败的测试用例;当确定某测试用例为失败测试用例以后,在函数层贝叶斯网络程序依赖图上进行错误定位的概率推理,计算代码元素的可疑度并排序,得到按照可疑度排序的函数序列;
步骤3,按照函数的可疑度排序,以每一个函数内的语句为代码元素,构建对应函数的语句层贝叶斯网络程序依赖图;语句层BNPDG表示为一个三元组(V′,E′,P′);V′代表节点集合,每个节点代表一个代码元素,即一条程序语句;语句节点,有其对应的状态空间,不同状态值代表该代码元素不同的执行过程;E′代表有向边的集合,每条有向边都代表代码元素之间的依赖关系,所述依赖关系是语义依赖,或者是通过测试数据得到的统计依赖;其中语义依赖包括控制依赖和数据依赖;P′代表网络参数,即每个节点的条件概率分布;构建语句层BNPDG包括以下子步骤,
步骤3.1,将要测试的程序代码生成程序依赖图,确定语句层BNPDG语义依赖关系;
步骤3.2,利用程序执行数据生成统计依赖关系图,确定语句层BNPDG统计依赖关系;
步骤3.3,融合控制依赖边、数据依赖边和统计依赖边,形成基于贝叶斯网络的程序依赖图初始结构;
步骤3.4,去掉基于贝叶斯网络的程序依赖图初始结构中的环路;
步骤3.5,学习基于贝叶斯网络的程序依赖图中的参数信息;
步骤4,按照函数的可疑度排序对函数进行逐一检查;检查某函数时,在该函数的语句层BNPDG上进行测试预言的概率推理,找到bug函数;在该bug函数的语句层贝叶斯网络程序依赖图上进行错误定位的概率推理,得到函数中所有语句的可疑度排序;按照语句的可疑度排序对语句进行逐一检查,直到找到真正的bug语句。
2.根据权利要求1所述的一种基于贝叶斯网络推理的软件错误分层诊断方法,其特征在于,所述步骤1.2具体包括:每个节点对都计算一个统计因子,该统计因子用于衡量该节点对中两个节点之间是否存在依赖关系或者存在依赖关系的可能性大小,然后对得到的依赖关系进行剪枝,目的是去掉依赖关系中的间接依赖关系,最后,根据条件独立性测试确定依赖关系的方向,选择最大信息系数作为统计因子,所有的统计因子都通过调用MINE工具箱计算得到。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710048225.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:草坪灯(蘑菇形)
- 下一篇:梳子手柄(231型)