一种基于网络异常节点分析的软件故障定位方法及系统技术方案

技术编号:25947956 阅读:24 留言:0更新日期:2020-10-17 03:39
本发明专利技术涉及一种基于网络异常节点分析的软件故障定位方法及系统。所述方法包括获取待测软件的测试用例集;对测试用例集进行测试,确定测试用例集的代码行覆盖信息和测试结果;根据测试结果对测试用例集进行分组,得到正测试用例集和负测试用例集;根据代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率;提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集和负测试用例集的执行网络;在执行网络上计算网络节点在k阶近邻下的平均相对覆盖率;根据平均相对覆盖率采用z分数进行网络异常点识别;根据识别的网络异常点进行待测软件的故障定位。本发明专利技术实现软件故障定位,满足大规模软件系统的测试需求。

【技术实现步骤摘要】
一种基于网络异常节点分析的软件故障定位方法及系统
本专利技术涉及软件工程领域和复杂性科学领域,特别是涉及一种基于网络异常节点分析的软件故障定位方法及系统。
技术介绍
近年来,软件系统规模越来越大、复杂程度逐步提升,由软件缺陷造成的损失也越来越多,这对软件质量提出了挑战。大型系统软件的设计过程中,由于设计缺陷或者程序员的编码失误而引入的软件故障无法避免。据统计,软件测试和软件调试的花费已经占到软件生命周期的50%以上。程序调试技术作为一种定位并修复软件故障的技术,在软件开发生命周期的地位重要性越来越高。程序调试通常包括故障定位和故障修复两方面,其中如何准确并且快速地定位故障源已经成为软件设计中的主要难点。高效的程序调试技术特别是软件故障定位技术,对于节约软件开发成本,提高软件产品质量有着十分重要的意义。传统的软件故障定位方法主要分为基于静态分析的故障定位技术和基于测试的故障定位技术。基于静态分析的故障定位技术不用运行软件,而是依据程序语言的语法和语义,静态地分析软件结构和程序实体之间的依赖关系,以发现不符合系统约束的程序实体,从而进行故障定位;基于测试的故障定位技术需要依靠设计测试用例,通过运行软件程序,最后根据软件程序的动态执行信息和输出结果进行故障定位,这类基于测试的故障定位方法又可分为基于程序频谱、基于统计方法、基于模型和基于数据挖掘等故障定位方法,然而,这些方法没有充分考虑程序内部的依赖关系,其定位方法无法覆盖结构复杂的软件系统中存在的“故障传播”现象;同时,传统方法在使用时所需的设计和实验成本高,不适用于大规模复杂软件系统的开发过程,无法满足软件故障定位对高效率、低成本的要求。
技术实现思路
本专利技术的目的是提供一种基于网络异常节点分析的软件故障定位方法及系统,能更高效、更准确的挖掘软件异常代码行或程序块,进而实现软件故障定位,满足大规模软件系统的测试需求。为实现上述目的,本专利技术提供了如下方案:一种基于网络异常节点分析的软件故障定位方法,包括:获取待测软件的测试用例集;所述测试用例集包括多个测试用例;所述测试用例为所述待测软件进行测试任务的描述;所述测试用例包括测试目标、测试环境、输入数据、测试步骤、预期结果以及测试脚本;对所述测试用例集进行测试,确定所述测试用例集的代码行覆盖信息和测试结果;代码行为所述待测软件的源代码里的可执行代码行;所述测试结果包括测试成功和测试失败;根据所述测试结果对所述测试用例集进行分组,得到正测试用例集和负测试用例集;所述正测试用例集为测试成功的测试用例集;所述负测试用例集为测试失败的测试用例集;根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率;根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络;所述执行网络的网络节点为所述待测软件的代码行;所述执行网络的网络连边为所述执行时序关系;在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率;根据所述平均相对覆盖率采用z分数进行网络异常点识别;根据识别的网络异常点进行所述待测软件的故障定位。可选的,所述获取待测软件的测试用例集,之前还包括:根据所述待测软件的影响因素对测试用例集进行筛选和调整;所述影响因素包括开发阶段、产品特性、用户需求以及测试成本。可选的,所述根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率,具体包括:根据所述代码行覆盖信息分别计算正测试用例集的代码行覆盖矩阵和负测试用例集的代码行覆盖矩阵;根据所述正测试用例集的代码行覆盖矩阵确定所述正测试用例集的覆盖率;根据所述负测试用例集的代码行覆盖矩阵确定所述负测试用例集的覆盖率。可选的,所述根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络,具体包括:所述正测试用例集的覆盖率确定所述正测试用例集覆盖的代码行;根据所述正测试用例集覆盖的代码行确定所述正测试用例集覆盖的代码行间的执行关系;以所述正测试用例集覆盖的代码行为网络节点,以所述正测试用例集覆盖的代码行间的执行关系为网络连边构建正测试用例集的执行网络;所述负测试用例集的覆盖率确定所述负测试用例集覆盖的代码行;根据所述负测试用例集覆盖的代码行确定所述负测试用例集覆盖的代码行间的执行关系;以所述负测试用例集覆盖的代码行为网络节点,以所述负测试用例集覆盖的代码行间的执行关系为网络连边构建负测试用例集的执行网络。可选的,所述在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率,具体包括:在所述正测试用例集的执行网络中计算网络节点的平均近邻正覆盖率;在所述负测试用例集的执行网络中计算网络节点的平均近邻负覆盖率;根据所述平均近邻正覆盖率和所述平均近邻负覆盖率确定网络节点在k阶近邻下的平均相对覆盖率。一种基于网络异常节点分析的软件故障定位系统,包括:测试用例集获取模块,用于获取待测软件的测试用例集;所述测试用例集包括多个测试用例;所述测试用例为所述待测软件进行测试任务的描述;所述测试用例包括测试目标、测试环境、输入数据、测试步骤、预期结果以及测试脚本;代码行覆盖信息和测试结果确定模块,用于对所述测试用例集进行测试,确定所述测试用例集的代码行覆盖信息和测试结果;代码行为所述待测软件的源代码里的可执行代码行;所述测试结果包括测试成功和测试失败;正测试用例集和负测试用例集确定模块,用于根据所述测试结果对所述测试用例集进行分组,得到正测试用例集和负测试用例集;所述正测试用例集为测试成功的测试用例集;所述负测试用例集为测试失败的测试用例集;覆盖率确定模块,用于根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率;执行网络构建模块,用于根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络;所述执行网络的网络节点为所述待测软件的代码行;所述执行网络的网络连边为所述执行时序关系;平均相对覆盖率确定模块,用于在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率;网络异常点识别模块,用于根据所述平均相对覆盖率采用z分数进行网络异常点识别;故障定位模块,用于根据识别的网络异常点进行所述待测软件的故障定位。可选的,还包括:测试用例集预处理模块,用于根据所述待测软件的影响因素对测试用例集进行筛选和调整;所述影响因素包括开发阶段、产品特性、用户需求以本文档来自技高网
...

【技术保护点】
1.一种基于网络异常节点分析的软件故障定位方法,其特征在于,包括:/n获取待测软件的测试用例集;所述测试用例集包括多个测试用例;所述测试用例为所述待测软件进行测试任务的描述;所述测试用例包括测试目标、测试环境、输入数据、测试步骤、预期结果以及测试脚本;/n对所述测试用例集进行测试,确定所述测试用例集的代码行覆盖信息和测试结果;代码行为所述待测软件的源代码里的可执行代码行;所述测试结果包括测试成功和测试失败;/n根据所述测试结果对所述测试用例集进行分组,得到正测试用例集和负测试用例集;所述正测试用例集为测试成功的测试用例集;所述负测试用例集为测试失败的测试用例集;/n根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率;/n根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络;所述执行网络的网络节点为所述待测软件的代码行;所述执行网络的网络连边为所述执行时序关系;/n在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率;/n根据所述平均相对覆盖率采用z分数进行网络异常点识别;/n根据识别的网络异常点进行所述待测软件的故障定位。/n...

【技术特征摘要】
1.一种基于网络异常节点分析的软件故障定位方法,其特征在于,包括:
获取待测软件的测试用例集;所述测试用例集包括多个测试用例;所述测试用例为所述待测软件进行测试任务的描述;所述测试用例包括测试目标、测试环境、输入数据、测试步骤、预期结果以及测试脚本;
对所述测试用例集进行测试,确定所述测试用例集的代码行覆盖信息和测试结果;代码行为所述待测软件的源代码里的可执行代码行;所述测试结果包括测试成功和测试失败;
根据所述测试结果对所述测试用例集进行分组,得到正测试用例集和负测试用例集;所述正测试用例集为测试成功的测试用例集;所述负测试用例集为测试失败的测试用例集;
根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率;
根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络;所述执行网络的网络节点为所述待测软件的代码行;所述执行网络的网络连边为所述执行时序关系;
在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率;
根据所述平均相对覆盖率采用z分数进行网络异常点识别;
根据识别的网络异常点进行所述待测软件的故障定位。


2.根据权利要求1所述的一种基于网络异常节点分析的软件故障定位方法,其特征在于,所述获取待测软件的测试用例集,之前还包括:
根据所述待测软件的影响因素对测试用例集进行筛选和调整;所述影响因素包括开发阶段、产品特性、用户需求以及测试成本。


3.根据权利要求1所述的一种基于网络异常节点分析的软件故障定位方法,其特征在于,所述根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率,具体包括:
根据所述代码行覆盖信息分别计算正测试用例集的代码行覆盖矩阵和负测试用例集的代码行覆盖矩阵;
根据所述正测试用例集的代码行覆盖矩阵确定所述正测试用例集的覆盖率;
根据所述负测试用例集的代码行覆盖矩阵确定所述负测试用例集的覆盖率。


4.根据权利要求1所述的一种基于网络异常节点分析的软件故障定位方法,其特征在于,所述根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络,具体包括:
所述正测试用例集的覆盖率确定所述正测试用例集覆盖的代码行;
根据所述正测试用例集覆盖的代码行确定所述正测试用例集覆盖的代码行间的执行关系;
以所述正测试用例集覆盖的代码行为网络节点,以所述正测试用例集覆盖的代码行间的执行关系为网络连边构建正测试用例集的执行网络;
所述负测试用例集的覆盖率确定所述负测试用例集覆盖的代码行;
根据所述负测试用例集覆盖的代码行确定所述负测试用例集覆盖的代码行间的执行关系;
以所述负测试用例集覆盖的代码行为网络节点,以所述负测试用例集覆盖的代码行间的执行关系为网络连边构建负测试用例集的执行网络。


5.根据权利要求1所述的一种基于网络异常节点分析的软件故障定位方法,其特征在于,所述在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率,具体包括:
在所述正测试用例集的执行网络中计算网络节点的平均近邻正覆盖率;
在所述负测试用例集的执行网络中计算网络节点的平均近邻负覆盖率;
根据所述平均近邻正覆盖率和所述平均近邻负覆盖率确定网络节点在k阶近邻下的平均相对覆盖率。


6.一种基于网络异常节点分析的软件故障定位系统,其特征在于,包括:
测试用例集获取模块,用于获取待测软件的测试用例集;所述测试用例集包括多个测试用例;所述测试...

【专利技术属性】
技术研发人员:李大庆姚安卓杨顺昆
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1