[发明专利]一种软件系统配置错误诊断方法和系统有效
申请号: | 202211474627.1 | 申请日: | 2022-11-23 |
公开(公告)号: | CN116126680B | 公开(公告)日: | 2023-07-21 |
发明(设计)人: | 王伟;周英楠;王俊勇;刘煜昊;李超;段莉;金一;李浥东;刘吉强 | 申请(专利权)人: | 北京交通大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京市商泰律师事务所 11255 | 代理人: | 刘源 |
地址: | 100044 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 软件 系统配置 错误 诊断 方法 系统 | ||
1.一种软件系统配置错误诊断方法,其特征在于,包括:
基于被检测的软件源代码,随机生成配置数据作为错误注入;
执行配置数据,记录执行的结果以及执行过程中所述软件源代码的每条语句的覆盖情况,构建程序谱;
基于程序谱,通过计算所述软件源代码的每条语句与导致程序错误的卡方检验数,获得每条语句的出错可疑度;
通过将所有语句的出错可疑度进行降序排列,再进行向后程序切片操作,获得配置选项列表;
基于配置选项列表,将某条配置选项是否流经某条语句构建为一个向量结构,重复该过程获得多个向量结构;
迭代计算所有配置选项对应的向量结构之间的距离,基于所有配置选项对应的向量结构之间的距离的绝对值大小,获得配置选项之间的关联列表;
将配置选项列表与配置选项之间的关联列表进行合并处理,获得软件系统配置错误诊断结果。
2.根据权利要求1所述的方法,其特征在于,所述的执行配置数据,记录执行的结果以及执行过程中所述软件源代码的每条语句的覆盖情况,构建程序谱包括:
将配置数据中的配置选项的读取点作为分析起点,基于WALA框架对每个配置选项进行前向的程序切片,获得配置选项影响的程序语句集合S={s1,s2,s3,…,sy},基于ASM框架对程序语句集合S的前后加入插桩代码,用于记录执行过程中每条语句的覆盖情况;
基于配置选项信息,随机生成m个输入集合TCi={C1,C2,C3,…,Cn},Cj表示第j个配置选项的值;
将TCi注入被检测的软件源代码中,获得TCi在程序语句集合S上的覆盖率以及程序执行结果R;R取0或1,当R为0时表示程序没有出现错误,为1时表示程序的执行发生错误;
将输入集合TCi和程序执行结果R表示为程序谱P,其中Pxy取0或1,为0表示TCx的执行路径没有覆盖语句sy。
3.根据权利要求2所述的方法,其特征在于,所述的基于程序谱,通过计算所述软件源代码的每条语句与导致程序错误的卡方检验数,获得每条语句的出错可疑度包括:
对程序谱P中的信息进行统计,获得如下变量:
N表示输入集合的数量,Nf表示R为1的输入集合的数量,Ns表示R为0的输入集合的数量,Nc(si)表示覆盖语句si的输入集合的数量,Ncf(si)表示覆盖语句si且R为1的输入集合的数量,Ncs(si)表示覆盖语句si且R为0的输入集合的数量,Nu(si)表示没有覆盖语句si的输入集合的数量,Nuf(si)表示没有覆盖语句si且R为1的输入集合的数量,Nus(si)表示没有覆盖语句si且R为0的输入集合的数量,H0表示假设为程序的执行结果和语句si的覆盖率无关;
根据卡方检验公式
计算x2(si)临界值的差值判断是否可以拒绝H0的假设,如果不能拒绝则x2(si)临界值的差值为该条语句si的可疑度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京交通大学,未经北京交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211474627.1/1.html,转载请声明来源钻瓜专利网。