CN111782532B - 一种基于网络异常节点分析的软件故障定位方法及系统 - Google Patents

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

Info

Publication number
CN111782532B
CN111782532B CN202010625314.6A CN202010625314A CN111782532B CN 111782532 B CN111782532 B CN 111782532B CN 202010625314 A CN202010625314 A CN 202010625314A CN 111782532 B CN111782532 B CN 111782532B
Authority
CN
China
Prior art keywords
test case
case set
code
network
positive
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010625314.6A
Other languages
English (en)
Other versions
CN111782532A (zh
Inventor
李大庆
姚安卓
杨顺昆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN202010625314.6A priority Critical patent/CN111782532B/zh
Publication of CN111782532A publication Critical patent/CN111782532A/zh
Application granted granted Critical
Publication of CN111782532B publication Critical patent/CN111782532B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

一种基于网络异常节点分析的软件故障定位方法及系统
技术领域
本发明涉及软件工程领域和复杂性科学领域,特别是涉及一种基于网络异常节点分析的软件故障定位方法及系统。
背景技术
近年来,软件系统规模越来越大、复杂程度逐步提升,由软件缺陷造成的损失也越来越多,这对软件质量提出了挑战。大型系统软件的设计过程中,由于设计缺陷或者程序员的编码失误而引入的软件故障无法避免。据统计,软件测试和软件调试的花费已经占到软件生命周期的50%以上。程序调试技术作为一种定位并修复软件故障的技术,在软件开发生命周期的地位重要性越来越高。程序调试通常包括故障定位和故障修复两方面,其中如何准确并且快速地定位故障源已经成为软件设计中的主要难点。高效的程序调试技术特别是软件故障定位技术,对于节约软件开发成本,提高软件产品质量有着十分重要的意义。
传统的软件故障定位方法主要分为基于静态分析的故障定位技术和基于测试的故障定位技术。基于静态分析的故障定位技术不用运行软件,而是依据程序语言的语法和语义,静态地分析软件结构和程序实体之间的依赖关系,以发现不符合系统约束的程序实体,从而进行故障定位;基于测试的故障定位技术需要依靠设计测试用例,通过运行软件程序,最后根据软件程序的动态执行信息和输出结果进行故障定位,这类基于测试的故障定位方法又可分为基于程序频谱、基于统计方法、基于模型和基于数据挖掘等故障定位方法,然而,这些方法没有充分考虑程序内部的依赖关系,其定位方法无法覆盖结构复杂的软件系统中存在的“故障传播”现象;同时,传统方法在使用时所需的设计和实验成本高,不适用于大规模复杂软件系统的开发过程,无法满足软件故障定位对高效率、低成本的要求。
发明内容
本发明的目的是提供一种基于网络异常节点分析的软件故障定位方法及系统,能更高效、更准确的挖掘软件异常代码行或程序块,进而实现软件故障定位,满足大规模软件系统的测试需求。
为实现上述目的,本发明提供了如下方案:
一种基于网络异常节点分析的软件故障定位方法,包括:
获取待测软件的测试用例集;所述测试用例集包括多个测试用例;所述测试用例为所述待测软件进行测试任务的描述;所述测试用例包括测试目标、测试环境、输入数据、测试步骤、预期结果以及测试脚本;
对所述测试用例集进行测试,确定所述测试用例集的代码行覆盖信息和测试结果;代码行为所述待测软件的源代码里的可执行代码行;所述测试结果包括测试成功和测试失败;
根据所述测试结果对所述测试用例集进行分组,得到正测试用例集和负测试用例集;所述正测试用例集为测试成功的测试用例集;所述负测试用例集为测试失败的测试用例集;
根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率;
根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络;所述执行网络的网络节点为所述待测软件的代码行;所述执行网络的网络连边为所述执行时序关系;
在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率;
根据所述平均相对覆盖率采用z分数进行网络异常点识别;
根据识别的网络异常点进行所述待测软件的故障定位。
可选的,所述获取待测软件的测试用例集,之前还包括:
根据所述待测软件的影响因素对测试用例集进行筛选和调整;所述影响因素包括开发阶段、产品特性、用户需求以及测试成本。
可选的,所述根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率,具体包括:
根据所述代码行覆盖信息分别计算正测试用例集的代码行覆盖矩阵和负测试用例集的代码行覆盖矩阵;
根据所述正测试用例集的代码行覆盖矩阵确定所述正测试用例集的覆盖率;
根据所述负测试用例集的代码行覆盖矩阵确定所述负测试用例集的覆盖率。
可选的,所述根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络,具体包括:
所述正测试用例集的覆盖率确定所述正测试用例集覆盖的代码行;
根据所述正测试用例集覆盖的代码行确定所述正测试用例集覆盖的代码行间的执行关系;
以所述正测试用例集覆盖的代码行为网络节点,以所述正测试用例集覆盖的代码行间的执行关系为网络连边构建正测试用例集的执行网络;
所述负测试用例集的覆盖率确定所述负测试用例集覆盖的代码行;
根据所述负测试用例集覆盖的代码行确定所述负测试用例集覆盖的代码行间的执行关系;
以所述负测试用例集覆盖的代码行为网络节点,以所述负测试用例集覆盖的代码行间的执行关系为网络连边构建负测试用例集的执行网络。
可选的,所述在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率,具体包括:
在所述正测试用例集的执行网络中计算网络节点的平均近邻正覆盖率;
在所述负测试用例集的执行网络中计算网络节点的平均近邻负覆盖率;
根据所述平均近邻正覆盖率和所述平均近邻负覆盖率确定网络节点在k阶近邻下的平均相对覆盖率。
一种基于网络异常节点分析的软件故障定位系统,包括:
测试用例集获取模块,用于获取待测软件的测试用例集;所述测试用例集包括多个测试用例;所述测试用例为所述待测软件进行测试任务的描述;所述测试用例包括测试目标、测试环境、输入数据、测试步骤、预期结果以及测试脚本;
代码行覆盖信息和测试结果确定模块,用于对所述测试用例集进行测试,确定所述测试用例集的代码行覆盖信息和测试结果;代码行为所述待测软件的源代码里的可执行代码行;所述测试结果包括测试成功和测试失败;
正测试用例集和负测试用例集确定模块,用于根据所述测试结果对所述测试用例集进行分组,得到正测试用例集和负测试用例集;所述正测试用例集为测试成功的测试用例集;所述负测试用例集为测试失败的测试用例集;
覆盖率确定模块,用于根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率;
执行网络构建模块,用于根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络;所述执行网络的网络节点为所述待测软件的代码行;所述执行网络的网络连边为所述执行时序关系;
平均相对覆盖率确定模块,用于在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率;
网络异常点识别模块,用于根据所述平均相对覆盖率采用z分数进行网络异常点识别;
故障定位模块,用于根据识别的网络异常点进行所述待测软件的故障定位。
可选的,还包括:
测试用例集预处理模块,用于根据所述待测软件的影响因素对测试用例集进行筛选和调整;所述影响因素包括开发阶段、产品特性、用户需求以及测试成本。
可选的,所述覆盖率确定模块具体包括:
代码行覆盖矩阵确定单元,用于根据所述代码行覆盖信息分别计算正测试用例集的代码行覆盖矩阵和负测试用例集的代码行覆盖矩阵;
正测试用例集的覆盖率确定单元,用于根据所述正测试用例集的代码行覆盖矩阵确定所述正测试用例集的覆盖率;
负测试用例集的覆盖率确定单元,用于根据所述负测试用例集的代码行覆盖矩阵确定所述负测试用例集的覆盖率。
可选的,所述执行网络构建模块具体包括:
正测试用例集覆盖的代码行确定单元,用于所述正测试用例集的覆盖率确定所述正测试用例集覆盖的代码行;
正测试用例集覆盖的代码行间的执行关系确定单元,用于根据所述正测试用例集覆盖的代码行确定所述正测试用例集覆盖的代码行间的执行关系;
正测试用例集的执行网络构建单元,用于以所述正测试用例集覆盖的代码行为网络节点,以所述正测试用例集覆盖的代码行间的执行关系为网络连边构建正测试用例集的执行网络;
负测试用例集覆盖的代码行确定单元,用于所述负测试用例集的覆盖率确定所述负测试用例集覆盖的代码行;
负测试用例集覆盖的代码行间的执行关系确定单元,用于根据所述负测试用例集覆盖的代码行确定所述负测试用例集覆盖的代码行间的执行关系;
负测试用例集的执行网络构建单元,用于以所述负测试用例集覆盖的代码行为网络节点,以所述负测试用例集覆盖的代码行间的执行关系为网络连边构建负测试用例集的执行网络。
可选的,所述平均相对覆盖率确定模块具体包括:
平均近邻正覆盖率确定单元,用于在所述正测试用例集的执行网络中计算网络节点的平均近邻正覆盖率;
平均近邻负覆盖率确定单元,用于在所述负测试用例集的执行网络中计算网络节点的平均近邻负覆盖率;
平均相对覆盖率确定单元,用于根据所述平均近邻正覆盖率和所述平均近邻负覆盖率确定网络节点在k阶近邻下的平均相对覆盖率。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明所提供的一种基于网络异常节点分析的软件故障定位方法及系统,根据所述测试用例集的代码行覆盖信息和测试结果对待测软件的测试用例集进行分组,并确定正测试用例集的覆盖率和负测试用例集的覆盖率,根据覆盖率确定可执行的代码行以及可执行的代码行之间的的执行时序关系,并以可执行的代码行为执行网络的网络节点,以执行时序关系为执行网络的网络连边构建正测试用例集的执行网络和负测试用例集的执行网络,考虑待测软件内部结构,通过分析代码行之间交互关系的基础上,考虑实际故障传播现象。在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率,根据所述平均相对覆盖率采用z分数进行网络异常点识别,即通过分析网络节点的邻近故障风险、挖掘网络节点即代码行的异常程度。进而,能更高效、更准确的挖掘软件异常代码行或程序块,进而实现软件故障定位,满足大规模软件系统的测试需求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的一种基于网络异常节点分析的软件故障定位方法流程示意图;
图2为本发明所提供的一种基于网络异常节点分析的软件故障定位系统结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种基于网络异常节点分析的软件故障定位方法及系统,能更高效、更准确的挖掘软件异常代码行或程序块,进而实现软件故障定位,满足大规模软件系统的测试需求。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明所提供的一种基于网络异常节点分析的软件故障定位方法流程示意图,如图1所示,本发明所提供的一种基于网络异常节点分析的软件故障定位方法,包括:
S101,获取待测软件的测试用例集;所述测试用例集包括多个测试用例;所述测试用例为所述待测软件进行测试任务的描述;所述测试用例包括测试目标、测试环境、输入数据、测试步骤、预期结果以及测试脚本。按待测软件已有的测试规范执行软件功能模块或软件整体确定测试用例集。
在S101之前,还包括:
根据所述待测软件的影响因素对测试用例集进行筛选和调整;所述影响因素包括开发阶段、产品特性、用户需求以及测试成本。筛选和调整后的所述待测软件的测试用例集为TC={tc1,tc2,...,tcm},共计m个测试用例,式中tci为第i个测试用例。
最为一个具体的实施例,冒烟测试用例集用于快速验证提测产品是否具备可测性,用于产品的研发阶段作为研发人员的自测标准;功能测试用例集用于对软件产品的新功能进行测试,覆盖范围较广,常分为若干低耦合的子用例集进行并行测试。
S102,对所述测试用例集进行测试,确定所述测试用例集的代码行覆盖信息和测试结果;代码行为所述待测软件的源代码里的可执行代码行;所述测试结果包括测试成功和测试失败。
通过相关代码行覆盖信息提取工具、采集脚本等方式,提取测试用例集中每一测试用例的代码行覆盖信息。
设待测软件共n行代码,则测试用例集TC对软件的代码行覆盖信息可用代码行覆盖矩阵CCR表示如下:
Figure BDA0002566378810000081
式中cij表示第i个测试用例对第j条代码行的覆盖情况,若覆盖代码行,则cij=1,若未覆盖对应代码行,则cij=0。
确定的测试用例集TC,按照测试规范标准,使用测试脚本执行测试用例集中的全部用例,同时记录每次测试用例的执行结果,执行结果符合用例预期执行结果即为执行成功,否则为执行失败;设执行结果集合
Figure BDA0002566378810000082
其中
Figure BDA0002566378810000083
为第i个测试用例的执行结果,若用例执行成功,则
Figure BDA0002566378810000084
若用例执行失败,则
Figure BDA0002566378810000085
测试用例执行结果集合φ与测试用例集TC对应。
S103,根据所述测试结果对所述测试用例集进行分组,得到正测试用例集和负测试用例集;所述正测试用例集为测试成功的测试用例集;所述负测试用例集为测试失败的测试用例集。
对待测软件执行测试流程并记录测试结果,将测试用例集分为正测试用例集和负测试用例集,用例集规模分别为mp和mf,与整个测试用例集规模m的关系为mp+mf=m;测试执行结果集合φ中为
Figure BDA0002566378810000086
的所有测试用例记为正测试用例集
Figure BDA0002566378810000091
式中,mp为正测试用例集大小,
Figure BDA0002566378810000092
为第ip个正用例,则正测试用例集TCP对软件的代码行覆盖信息可用代码行覆盖矩阵CCRP表示如下:
Figure BDA0002566378810000093
式中
Figure BDA0002566378810000094
表示第ip个正用例对第jp条代码行的覆盖情况,若覆盖代码行,则
Figure BDA0002566378810000095
若未覆盖对应代码行,则
Figure BDA0002566378810000096
将测试执行结果集合φ中记录为
Figure BDA0002566378810000097
的所有测试用例记为负测试用例集
Figure BDA0002566378810000098
式中,mf为负测试用例集大小,
Figure BDA0002566378810000099
为第if个负用例,则负测试用例集TCF对软件的代码行覆盖信息可用代码行覆盖矩阵CCRF表示如下:
Figure BDA00025663788100000910
式中
Figure BDA00025663788100000911
表示第if个负用例对第jf条代码行的覆盖情况,若覆盖代码行,则
Figure BDA00025663788100000912
若未覆盖对应代码行,则
Figure BDA00025663788100000913
S104,根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率。
S104具体包括:
根据所述代码行覆盖信息分别计算正测试用例集的代码行覆盖矩阵和负测试用例集的代码行覆盖矩阵。
根据所述正测试用例集的代码行覆盖矩阵确定所述正测试用例集的覆盖率。
根据所述负测试用例集的代码行覆盖矩阵确定所述负测试用例集的覆盖率。
对具有n条代码行的待测软件,第j条代码行的正覆盖率
Figure BDA0002566378810000101
负覆盖率
Figure BDA0002566378810000102
S105,根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络;所述执行网络的网络节点为所述待测软件的代码行;所述执行网络的网络连边为所述执行时序关系。即将复杂软件系统抽象为复杂网络。
S105具体包括:
所述正测试用例集的覆盖率确定所述正测试用例集覆盖的代码行。
根据所述正测试用例集覆盖的代码行确定所述正测试用例集覆盖的代码行间的执行关系。
以所述正测试用例集覆盖的代码行为网络节点,以所述正测试用例集覆盖的代码行间的执行关系为网络连边构建正测试用例集的执行网络。
所述负测试用例集的覆盖率确定所述负测试用例集覆盖的代码行。
根据所述负测试用例集覆盖的代码行确定所述负测试用例集覆盖的代码行间的执行关系。
以所述负测试用例集覆盖的代码行为网络节点,以所述负测试用例集覆盖的代码行间的执行关系为网络连边构建负测试用例集的执行网络。
作为一个具体的实施例,对具有n行代码的待测软件,设正用例覆盖到的代码行数为np,则待测软件在正测试用例集TCP下的测试用例执行网络节点集
Figure BDA0002566378810000111
同理可得,设负用例覆盖到的代码行数为nf,待测软件在负测试用例集TCF下的测试用例执行网络节点集
Figure BDA0002566378810000112
基于所划分的正、负测试用例集TCP、TCF和对应的代码行覆盖矩阵CCRP、CCRF,以正测试用例集的执行网络为例,选取CCRP的第k行中所有不为0的值,并按照代码行的执行顺序排序,即第k个正用例的代码行覆盖信息
Figure BDA0002566378810000113
式中k∈[1,m],n′(n′≤n)是第k个正用例覆盖到的代码行数,c,c为第k个正用例执行时序过程中的相邻代码行,也就是在第k个正用例执行时c执行后c接着被执行,则记E(α,β)为正测试用例执行网络的一条连边,若首次记录该连边,初始化该连边的权值
Figure BDA0002566378810000114
若已有连边,则该连边权值
Figure BDA0002566378810000115
增加1(负测试用例集的执行网络中连边权值为
Figure BDA0002566378810000116
);以上步骤遍历所有正用例。设正测试用例集的执行网络连边数为tp,则被测试软件在正测试用例集TCP下的执行网络连边集
Figure BDA0002566378810000117
同理可得,设负测试用例集的执行网络连边数为tf,则被测试软件在负测试用例集TCF下的执行网络连边集
Figure BDA0002566378810000118
正测试用例集的执行网络节点集VP与连边集EP,设正测试用例集的执行网络GP=(VP,EP),共有np个节点,则可用一个大小为的np×np方阵AP表示GP中各节点的相邻关系,AP即为正测试用例集执行网络的邻接矩阵,定义如下:
Figure BDA0002566378810000119
Figure BDA00025663788100001110
式中,(vi,vj)表示由正测试用例集执行网络的节点集VP中任意两个不同的节点组成的连边;
Figure BDA00025663788100001111
为正测试用例集执行网络的邻接矩阵AP中的一个元素,若(vi,vj)属于正测试用例集执行网络的连边集EP,则
Figure BDA0002566378810000121
为统计的该连边的权值
Figure BDA0002566378810000122
若不属于,则
Figure BDA0002566378810000123
为0;
同理可得,基于负测试用例集的执行网络节点集VF与连边集EF,设负测试用例集的执行网络GF=(VF,EF),共有nf个节点,则可用一个大小为的nf×nf方阵AF表示GF中各节点的相邻关系,AF即为负测试用例集执行网络的邻接矩阵,定义如下:
Figure BDA0002566378810000124
Figure BDA0002566378810000125
式中,(vi,vj)表示由负测试用例集执行网络的节点集VF中任意两个不同的节点组成的连边;
Figure BDA0002566378810000126
为负测试用例集执行网络的邻接矩阵AF中的一个元素,若(vi,vj)属于负测试用例集执行网络的连边集EF,则
Figure BDA0002566378810000127
为统计的该连边的权值
Figure BDA0002566378810000128
若不属于,则
Figure BDA0002566378810000129
为0。
S106,在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率。只考虑正覆盖率、负覆盖率都大于0的代码行。
S106具体包括:
在所述正测试用例集的执行网络中计算网络节点的平均近邻正覆盖率。
正测试用例集的执行网络GP,对待测软件的第ip条公共代码行,该代码行的平均近邻正覆盖率
Figure BDA00025663788100001210
表示如下:
Figure BDA00025663788100001211
式中,设第ip条公共代码行对应正用例执行网络Gp中的节点
Figure BDA00025663788100001212
设该节点的k阶近邻节点集合
Figure BDA00025663788100001213
Figure BDA00025663788100001214
个节点,节点的k阶近邻为距离该节点的最短路径小于等于k的节点集合,不包含节点
Figure BDA0002566378810000131
自身。
在所述负测试用例集的执行网络中计算网络节点的平均近邻负覆盖率。
负测试用例集的执行网络GF,对待测软件的第if条公共代码行,该代码行的平均近邻负覆盖率
Figure BDA0002566378810000132
表示如下:
Figure BDA0002566378810000133
式中,设第if条公共代码行对应负用例执行网络Gf中的一个节点
Figure BDA0002566378810000134
设该节点的k阶近邻节点集合
Figure BDA0002566378810000135
Figure BDA0002566378810000136
个节点,节点的k阶近邻为距离该节点的最短路径小于等于k的节点集合,不包含节点
Figure BDA0002566378810000137
自身。
根据所述平均近邻正覆盖率和所述平均近邻负覆盖率确定网络节点在k阶近邻下的平均相对覆盖率。
S107,根据所述平均相对覆盖率采用z分数进行网络异常点识别。通过考虑正、负测试用例集执行网络中节点的不同阶近邻,分析每一代码行对一定执行范围内其他代码行的影响,计算代码行的一定近邻范围内的正、负覆盖率,进而得到软件代码行的平均近邻相对覆盖率,并通过z分数定义软件代码行的异常指标,最终生成代码行的异常排序,实现软件的故障定位分析。
测试用例执行网络中用于反映节点即代码行异常程度的指标,代码行异常程度越高,存在故障的可能性越大。
基于所有公共代码行的k阶平均近邻相对覆盖率的概率分布P(MCR(k)),计算该分布的均值为
Figure BDA0002566378810000138
标准差为σ(k),则对任意一个节点vi的异常指标为
Figure BDA0002566378810000139
S108,根据识别的网络异常点进行所述待测软件的故障定位。
计算的k阶近邻下所有节点的异常指标FI,按照降序排列得到节点可疑程度序列,排序靠前的代码行(也即FI较大的节点)具有更高的故障概率。
本发明所提供的一种基于网络异常节点分析的软件故障定位方法的有益效果为:
1、可解释:本发明提出的软件故障定位方法充分考虑软件系统本身的内部结构,在分析代码行之间交互关系的基础上考虑实际故障传播现象,通过分析节点的近邻故障风险,挖掘节点的异常程度。
2、易计算:本发明所提出的代码行平均相对覆盖指标和节点异常指标计算均来源于待测软件在测试用例集下的覆盖信息和测试结果,算法复杂度较低,易于计算。
3、易分析:本发明所提出的节点异常指标基于复杂网络理论和测试用例的实际覆盖信息及运行结果,同时结合了对软件内部的实际结构分析,考虑节点故障对网络局部的影响,在进行故障定位时更加直观,易于分析故障。
图2为本发明所提供的一种基于网络异常节点分析的软件故障定位系统结构示意图,如图2所示,本发明所提供的一种基于网络异常节点分析的软件故障定位系统,包括:测试用例集获取模块201、代码行覆盖信息和测试结果确定模块202、正测试用例集和负测试用例集确定模块203、覆盖率确定模块204、执行网络构建模块205、平均相对覆盖率确定模块206、网络异常点识别模块207和故障定位模块208。
测试用例集获取模块201用于获取待测软件的测试用例集;所述测试用例集包括多个测试用例;所述测试用例为所述待测软件进行测试任务的描述;所述测试用例包括测试目标、测试环境、输入数据、测试步骤、预期结果以及测试脚本。
代码行覆盖信息和测试结果确定模块202用于对所述测试用例集进行测试,确定所述测试用例集的代码行覆盖信息和测试结果;代码行为所述待测软件的源代码里的可执行代码行;所述测试结果包括测试成功和测试失败。
正测试用例集和负测试用例集确定模块203用于根据所述测试结果对所述测试用例集进行分组,得到正测试用例集和负测试用例集;所述正测试用例集为测试成功的测试用例集;所述负测试用例集为测试失败的测试用例集。
覆盖率确定模块204用于根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率。
执行网络构建模块205用于根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络;所述执行网络的网络节点为所述待测软件的代码行;所述执行网络的网络连边为所述执行时序关系。
平均相对覆盖率确定模块206用于在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率。
网络异常点识别模块207用于根据所述平均相对覆盖率采用z分数进行网络异常点识别。
故障定位模块208用于根据识别的网络异常点进行所述待测软件的故障定位。
本发明所提供的一种基于网络异常节点分析的软件故障定位系统,还包括:测试用例集预处理模块。
测试用例集预处理模块用于根据所述待测软件的影响因素对测试用例集进行筛选和调整;所述影响因素包括开发阶段、产品特性、用户需求以及测试成本。
所述覆盖率确定模块204具体包括:代码行覆盖矩阵确定单元、正测试用例集的覆盖率确定单元和负测试用例集的覆盖率确定单元。
代码行覆盖矩阵确定单元用于根据所述代码行覆盖信息分别计算正测试用例集的代码行覆盖矩阵和负测试用例集的代码行覆盖矩阵。
正测试用例集的覆盖率确定单元用于根据所述正测试用例集的代码行覆盖矩阵确定所述正测试用例集的覆盖率。
负测试用例集的覆盖率确定单元用于根据所述负测试用例集的代码行覆盖矩阵确定所述负测试用例集的覆盖率。
所述执行网络构建模块205具体包括:正测试用例集覆盖的代码行确定单元、正测试用例集覆盖的代码行间的执行关系确定单元、正测试用例集的执行网络构建单元、负测试用例集覆盖的代码行确定单元、负测试用例集覆盖的代码行间的执行关系确定单元和负测试用例集的执行网络构建单元。
正测试用例集覆盖的代码行确定单元用于所述正测试用例集的覆盖率确定所述正测试用例集覆盖的代码行。
正测试用例集覆盖的代码行间的执行关系确定单元用于根据所述正测试用例集覆盖的代码行确定所述正测试用例集覆盖的代码行间的执行关系。
正测试用例集的执行网络构建单元用于以所述正测试用例集覆盖的代码行为网络节点,以所述正测试用例集覆盖的代码行间的执行关系为网络连边构建正测试用例集的执行网络。
负测试用例集覆盖的代码行确定单元用于所述负测试用例集的覆盖率确定所述负测试用例集覆盖的代码行。
负测试用例集覆盖的代码行间的执行关系确定单元用于根据所述负测试用例集覆盖的代码行确定所述负测试用例集覆盖的代码行间的执行关系。
负测试用例集的执行网络构建单元,用于以所述负测试用例集覆盖的代码行为网络节点,以所述负测试用例集覆盖的代码行间的执行关系为网络连边构建负测试用例集的执行网络。
所述平均相对覆盖率确定模块206具体包括:平均近邻正覆盖率确定单元、平均近邻负覆盖率确定单元和平均相对覆盖率确定单元。
平均近邻正覆盖率确定单元用于在所述正测试用例集的执行网络中计算网络节点的平均近邻正覆盖率。
平均近邻负覆盖率确定单元用于在所述负测试用例集的执行网络中计算网络节点的平均近邻负覆盖率。
平均相对覆盖率确定单元用于根据所述平均近邻正覆盖率和所述平均近邻负覆盖率确定网络节点在k阶近邻下的平均相对覆盖率。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

Claims (6)

1.一种基于网络异常节点分析的软件故障定位方法,其特征在于,包括:
获取待测软件的测试用例集;所述测试用例集包括多个测试用例;所述测试用例为所述待测软件进行测试任务的描述;所述测试用例包括测试目标、测试环境、输入数据、测试步骤、预期结果以及测试脚本;
对所述测试用例集进行测试,确定所述测试用例集的代码行覆盖信息和测试结果;代码行为所述待测软件的源代码里的可执行代码行;所述测试结果包括测试成功和测试失败;
根据所述测试结果对所述测试用例集进行分组,得到正测试用例集和负测试用例集;所述正测试用例集为测试成功的测试用例集;所述负测试用例集为测试失败的测试用例集;
根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率;
根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络;所述执行网络的网络节点为所述待测软件的代码行;所述执行网络的网络连边为所述执行时序关系;
在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率;
根据所述平均相对覆盖率采用z分数进行网络异常点识别;
根据识别的网络异常点进行所述待测软件的故障定位;
所述在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率,具体包括:
在所述正测试用例集的执行网络中计算网络节点的平均近邻正覆盖率;
在所述负测试用例集的执行网络中计算网络节点的平均近邻负覆盖率;
根据所述平均近邻正覆盖率和所述平均近邻负覆盖率确定网络节点在k阶近邻下的平均相对覆盖率;
所述根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络,具体包括:
所述正测试用例集的覆盖率确定所述正测试用例集覆盖的代码行;
根据所述正测试用例集覆盖的代码行确定所述正测试用例集覆盖的代码行间的执行关系;
以所述正测试用例集覆盖的代码行为网络节点,以所述正测试用例集覆盖的代码行间的执行关系为网络连边构建正测试用例集的执行网络;
所述负测试用例集的覆盖率确定所述负测试用例集覆盖的代码行;
根据所述负测试用例集覆盖的代码行确定所述负测试用例集覆盖的代码行间的执行关系;
以所述负测试用例集覆盖的代码行为网络节点,以所述负测试用例集覆盖的代码行间的执行关系为网络连边构建负测试用例集的执行网络;
其中,还包括遍历所有的所述正测试用例集,具体为:选取所述正测试用例集对软件的代码行覆盖信息可用代码行覆盖矩阵CCR P 的第k行中所有不为0的值,按照代码行的执行顺序排序,第k个正用例的代码行覆盖信息
Figure DEST_PATH_IMAGE002
,式中
Figure DEST_PATH_IMAGE004
Figure DEST_PATH_IMAGE006
是第k个正用例覆盖到的代码行数,n为代码总行数,
Figure DEST_PATH_IMAGE008
为第k个正用例执行时序过程中的相邻代码行,即在第k个正用例执行时
Figure DEST_PATH_IMAGE010
执行后
Figure DEST_PATH_IMAGE012
接着被执行,则记
Figure DEST_PATH_IMAGE014
为正测试用例执行网络的一条连边,若首次记录该连边,初始化该连边的权值,若已有连边,则该连边权值增加1。
2.根据权利要求1所述的一种基于网络异常节点分析的软件故障定位方法,其特征在于,所述获取待测软件的测试用例集,之前还包括:
根据所述待测软件的影响因素对测试用例集进行筛选和调整;所述影响因素包括开发阶段、产品特性、用户需求以及测试成本。
3.根据权利要求1所述的一种基于网络异常节点分析的软件故障定位方法,其特征在于,所述根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率,具体包括:
根据所述代码行覆盖信息分别计算正测试用例集的代码行覆盖矩阵和负测试用例集的代码行覆盖矩阵;
根据所述正测试用例集的代码行覆盖矩阵确定所述正测试用例集的覆盖率;
根据所述负测试用例集的代码行覆盖矩阵确定所述负测试用例集的覆盖率。
4.一种基于网络异常节点分析的软件故障定位系统,其特征在于,包括:
测试用例集获取模块,用于获取待测软件的测试用例集;所述测试用例集包括多个测试用例;所述测试用例为所述待测软件进行测试任务的描述;所述测试用例包括测试目标、测试环境、输入数据、测试步骤、预期结果以及测试脚本;
代码行覆盖信息和测试结果确定模块,用于对所述测试用例集进行测试,确定所述测试用例集的代码行覆盖信息和测试结果;代码行为所述待测软件的源代码里的可执行代码行;所述测试结果包括测试成功和测试失败;
正测试用例集和负测试用例集确定模块,用于根据所述测试结果对所述测试用例集进行分组,得到正测试用例集和负测试用例集;所述正测试用例集为测试成功的测试用例集;所述负测试用例集为测试失败的测试用例集;
覆盖率确定模块,用于根据所述代码行覆盖信息分别计算正测试用例集的覆盖率和负测试用例集的覆盖率;
执行网络构建模块,用于根据所述正测试用例集的覆盖率和所述负测试用例集的覆盖率提取所述测试用例集覆盖的代码行和代码行之间的执行时序关系,构建正测试用例集的执行网络和负测试用例集的执行网络;所述执行网络的网络节点为所述待测软件的代码行;所述执行网络的网络连边为所述执行时序关系;
平均相对覆盖率确定模块,用于在所述正测试用例集的执行网络和所述负测试用例集的执行网络上计算网络节点在k阶近邻下的平均相对覆盖率;
网络异常点识别模块,用于根据所述平均相对覆盖率采用z分数进行网络异常点识别;
故障定位模块,用于根据识别的网络异常点进行所述待测软件的故障定位;
所述平均相对覆盖率确定模块具体包括:
平均近邻正覆盖率确定单元,用于在所述正测试用例集的执行网络中计算网络节点的平均近邻正覆盖率;
平均近邻负覆盖率确定单元,用于在所述负测试用例集的执行网络中计算网络节点的平均近邻负覆盖率;
平均相对覆盖率确定单元,用于根据所述平均近邻正覆盖率和所述平均近邻负覆盖率确定网络节点在k阶近邻下的平均相对覆盖率;
所述执行网络构建模块具体包括:
正测试用例集覆盖的代码行确定单元,用于所述正测试用例集的覆盖率确定所述正测试用例集覆盖的代码行;
正测试用例集覆盖的代码行间的执行关系确定单元,用于根据所述正测试用例集覆盖的代码行确定所述正测试用例集覆盖的代码行间的执行关系;
正测试用例集的执行网络构建单元,用于以所述正测试用例集覆盖的代码行为网络节点,以所述正测试用例集覆盖的代码行间的执行关系为网络连边构建正测试用例集的执行网络;
负测试用例集覆盖的代码行确定单元,用于所述负测试用例集的覆盖率确定所述负测试用例集覆盖的代码行;
负测试用例集覆盖的代码行间的执行关系确定单元,用于根据所述负测试用例集覆盖的代码行确定所述负测试用例集覆盖的代码行间的执行关系;
负测试用例集的执行网络构建单元,用于以所述负测试用例集覆盖的代码行为网络节点,以所述负测试用例集覆盖的代码行间的执行关系为网络连边构建负测试用例集的执行网络;
其中,还包括遍历所有的所述正测试用例集,具体为:选取所述正测试用例集对软件的代码行覆盖信息可用代码行覆盖矩阵CCR P 的第k行中所有不为0的值,按照代码行的执行顺序排序,第k个正用例的代码行覆盖信息
Figure DEST_PATH_IMAGE002A
,式中
Figure DEST_PATH_IMAGE004A
Figure DEST_PATH_IMAGE006A
是第k个正用例覆盖到的代码行数,n为代码总行数,
Figure DEST_PATH_IMAGE008A
为第k个正用例执行时序过程中的相邻代码行,即在第k个正用例执行时
Figure DEST_PATH_IMAGE010A
执行后
Figure DEST_PATH_IMAGE012A
接着被执行,则记
Figure DEST_PATH_IMAGE014A
为正测试用例执行网络的一条连边,若首次记录该连边,初始化该连边的权值,若已有连边,则该连边权值增加1。
5.根据权利要求4所述的一种基于网络异常节点分析的软件故障定位系统,其特征在于,还包括:
测试用例集预处理模块,用于根据所述待测软件的影响因素对测试用例集进行筛选和调整;所述影响因素包括开发阶段、产品特性、用户需求以及测试成本。
6.根据权利要求5所述的一种基于网络异常节点分析的软件故障定位系统,其特征在于,所述覆盖率确定模块具体包括:
代码行覆盖矩阵确定单元,用于根据所述代码行覆盖信息分别计算正测试用例集的代码行覆盖矩阵和负测试用例集的代码行覆盖矩阵;
正测试用例集的覆盖率确定单元,用于根据所述正测试用例集的代码行覆盖矩阵确定所述正测试用例集的覆盖率;
负测试用例集的覆盖率确定单元,用于根据所述负测试用例集的代码行覆盖矩阵确定所述负测试用例集的覆盖率。
CN202010625314.6A 2020-07-02 2020-07-02 一种基于网络异常节点分析的软件故障定位方法及系统 Active CN111782532B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010625314.6A CN111782532B (zh) 2020-07-02 2020-07-02 一种基于网络异常节点分析的软件故障定位方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010625314.6A CN111782532B (zh) 2020-07-02 2020-07-02 一种基于网络异常节点分析的软件故障定位方法及系统

Publications (2)

Publication Number Publication Date
CN111782532A CN111782532A (zh) 2020-10-16
CN111782532B true CN111782532B (zh) 2022-04-05

Family

ID=72757794

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010625314.6A Active CN111782532B (zh) 2020-07-02 2020-07-02 一种基于网络异常节点分析的软件故障定位方法及系统

Country Status (1)

Country Link
CN (1) CN111782532B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112416766B (zh) * 2020-11-19 2021-06-22 北京京航计算通讯研究所 双通道耦合飞行控制软件的故障模式分析和检测方法
CN112711537B (zh) * 2020-12-31 2022-08-12 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 软件缺陷定位方法及装置、电子设备及存储介质
CN114328198A (zh) * 2021-12-17 2022-04-12 浪潮电子信息产业股份有限公司 一种系统故障检测方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102708052A (zh) * 2012-04-27 2012-10-03 北京邮电大学 一种单元测试中软件故障自动定位方法
US20160162392A1 (en) * 2014-12-09 2016-06-09 Ziheng Hu Adaptive Framework Automatically Prioritizing Software Test Cases
CN110362484A (zh) * 2019-07-03 2019-10-22 北京航空航天大学 软件多故障的定位方法、装置、电子设备以及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5767471B2 (ja) * 2010-12-24 2015-08-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation テストの網羅性を評価する装置及び方法
CN110502447B (zh) * 2019-08-30 2022-10-25 西安邮电大学 一种基于图的回归测试用例优先排序方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102708052A (zh) * 2012-04-27 2012-10-03 北京邮电大学 一种单元测试中软件故障自动定位方法
US20160162392A1 (en) * 2014-12-09 2016-06-09 Ziheng Hu Adaptive Framework Automatically Prioritizing Software Test Cases
CN110362484A (zh) * 2019-07-03 2019-10-22 北京航空航天大学 软件多故障的定位方法、装置、电子设备以及存储介质

Also Published As

Publication number Publication date
CN111782532A (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
CN111782532B (zh) 一种基于网络异常节点分析的软件故障定位方法及系统
CN106201871A (zh) 基于代价敏感半监督的软件缺陷预测方法
CN110515826B (zh) 一种基于次数频谱与神经网络算法的软件缺陷定位方法
US8560988B2 (en) Apparatus and method thereof for hybrid timing exception verification of an integrated circuit design
CN105468517B (zh) 一种基于黑盒测试用例约简的统计错误定位方法
CN108021509B (zh) 基于程序行为网络聚合的测试用例动态排序方法
CN115629998B (zh) 一种基于KMeans聚类和相似度的测试用例筛选方法
Yamaura How to design practical test cases
Lin et al. Facgraph: Frequent anomaly correlation graph mining for root cause diagnose in micro-service architecture
Baker et al. Detect, fix, and verify TensorFlow API misuses
CN102521130B (zh) 一种基于聚类不变式分析的错误定位方法
CN112685320B (zh) 一种基于多候选程序的软件缺陷修复方法及装置
CN101894073B (zh) 基于控制流交集的缺陷自动定位装置及其自动定位方法
CN112905370A (zh) 拓扑图生成方法、异常检测方法、装置、设备及存储介质
Cao et al. Automated Repair of Java Programs with Random Search via Code Similarity
CN115599621A (zh) 微服务异常诊断方法、装置、设备及存储介质
CN113342632A (zh) 仿真数据自动化处理方法、装置、电子设备及存储介质
CN112612702A (zh) 一种基于web的自动测试方法及装置
Siddique et al. Hybrid Framework To Exclude Similar and Faulty Test Cases In Regression Testing
CN113434408B (zh) 一种基于测试预言的单元测试用例排序方法
Zhang et al. ContextAug: model-domain failing test augmentation with contextual information
Angell et al. A topological approach to hardware bug triage
Pomeranz Multicycle tests with fault detection test data for improved logic diagnosis
Ling et al. Research on software defect management and automatic repair technology
Nagy et al. An Enhanced Approach for Test Suite Reduction Using Clustering and Genetic Algorithms

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant