CN106445801A - 一种基于频谱定位和可视化定位软件缺陷的方法 - Google Patents

一种基于频谱定位和可视化定位软件缺陷的方法 Download PDF

Info

Publication number
CN106445801A
CN106445801A CN201610283644.5A CN201610283644A CN106445801A CN 106445801 A CN106445801 A CN 106445801A CN 201610283644 A CN201610283644 A CN 201610283644A CN 106445801 A CN106445801 A CN 106445801A
Authority
CN
China
Prior art keywords
program
defect
frequency spectrum
information
code
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.)
Granted
Application number
CN201610283644.5A
Other languages
English (en)
Other versions
CN106445801B (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.)
NANJING MUCE INFORMATION TECHNOLOGY Co Ltd
Original Assignee
NANJING MUCE INFORMATION TECHNOLOGY Co Ltd
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 NANJING MUCE INFORMATION TECHNOLOGY Co Ltd filed Critical NANJING MUCE INFORMATION TECHNOLOGY Co Ltd
Priority to CN201610283644.5A priority Critical patent/CN106445801B/zh
Publication of CN106445801A publication Critical patent/CN106445801A/zh
Application granted granted Critical
Publication of CN106445801B publication Critical patent/CN106445801B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime 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)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种基于频谱定位及可视化的用于指导编程人员软件缺陷的方法,旨在为开发人员提供更好的缺陷定位与修复指导,同时弥补由于个人经验等主观因素而可能引发的不精准甚至错误。利用静态分析获得程序的逻辑上的控制流图,结合动态执行所得到的测试用例对于程序的覆盖率以及本身的执行结果,应用于频谱定位,计算得到程序单元包含缺陷的可能性,通过排序、离散化与分组区分可疑程度,最后在开发工具上将可疑程度以可视化的方式实现。

Description

一种基于频谱定位和可视化定位软件缺陷的方法
技术领域
本发明属于计算机技术领域,涉及IT技术中的软件工程领域,用于指导编程人员软件缺陷,是一种基于频谱定位及可视化的方法。
背景技术
随着软件的日益普及,软件质量更多地成为人们关注的焦点。而在诸多保障软件质量的方法中,开发人员的行为充当了的第一道堤防。开发人员需要先利用测试保证自己开发软件的正确性,而当故障发生的时候,调试便成为了找到解决软件缺陷的方法。
调试包含定位软件缺陷并且加以修复等过程,其中最重要也是最困难的一步便是定位缺陷存在的位置。传统的软件错误定位是由开发人员手工进行的,这些技术包括运行软件,单步执行,代码评审等。在代码量大、逻辑复杂的情况下,这种方法非常耗费时间,而且极大地依赖于开发人员的个人技能。因此,研究人员提出了各种自动的错误定位技术,以提高错误定位的效率和准确度。
基于频谱的故障定位技术,利用测试用例的执行结果和软件的运行时信息,通过计算程序单元的可疑度,将程序单元按照可疑度降序排序,开发人员可以通过审查可疑度高的程序单元来定位错误,从而减少工作量。
基于频谱的故障定位技术在学术界已提出十余年之久,也有大量的学术界研究证明其有效性,但是改技术在工业界一直未被广泛应用。而对于基于频谱的故障定位技术的用户行为研究,也少之又少。从中可以看到理论研究与实际应用之间的差距。为了填补这一差距,探求实际开发环境中的开发者行为,研究者需要对开发者行为做大量的观察和记录,继而开发出能够被工业界广泛应用的频谱定位工具。
目前在软件测试及调试领域,编程人员在进行缺陷修复的时候大多数时间仍然基于个人经验,故此利用软件结构给出的可视化的有理论依据的指导可以给开发人员极大的助力。本发明基于频谱定位技术对缺陷定位进行可视化,旨在为开发人员提供更好的缺陷定位与修复指导,同时弥补由于个人经验等主观因素而可能引发的不精准甚至错误。
发明内容
本发明要解决的问题是:目前开发人员对于软件缺陷的定位和修复仍主要基于经验,容易受主观意念影响,利用程序的客观信息进行缺陷定位和可视化指导可以帮助开发人员更快更准确地定位直至修复软件缺陷。
本发明的技术方案为:基于频谱定位及可视化的用于指导编程人员软件缺陷的方法,其特征是包括以下步骤:
1)利用静态分析技术及工具对含缺陷软件进行分析,获取程序的静态结构,主要包括含有程序语句逻辑流向的控制流图,含有程序数据定义和使用的数据流图等,对程序进行静态建模,进而利用静态信息进行分析。
2)对于包含缺陷程序进行动态分析:一方面利用代码分析优化工具对程序进行插桩,向其中插入关键性支持性的服务代码,用于收集程序动态执行信息并加以分析。执行插入的程序代码可以收集执行单元测试用例所得到的对于程序代码的覆盖情况,即对于程序本身进行测试的完备度情况;另一方面对于程序单元进行测试所得到的数据信息也同样被记录下来,两者相结合构成程序的频谱信息,即最终用于可视化并指导开发人员进行缺陷定位与修复的信息。
3)根据1)2)两个步骤与利用频谱公式对收集到的程序静态结构信息和程序的动态频谱信息进行分析计算。频谱公式经过计算后会得到程序单元的可疑值,代表了程序单元包含缺陷的可能性,可疑值越高,程序单元越有可能是包含缺陷的。
4)利用3)中计算得到的可疑值进行排序与分组,筛选出可疑程度比较高的几组程序单元,按照一定的间隔区分可疑度,并且以红色底色标注可能包含缺陷的程序单元,程序单元的可疑程度越高,其被标注的红色的饱和度就越高,颜色就越深。
5)除了对缺陷单元进行计算和可视化,该方法还包含了对于开发人员在进行缺陷定位与修复时候的动作的记录,为研究提供资料,也可以根据大部分开发人员的习惯或常见错误对开发人员给出一定的指导。
进一步更详细地,对于步骤1)、2)、3)、4)、5),本发明包含步骤:
6)利用静态分析工具对于程序结构进行分析,主要用于分析生成可以代表程序逻辑走向状况的控制流图,作为后续分析的基础和结构框架。
7)由于静态结果需要进行存储和数据传递便于进一步分析,因此对于分析得到的控制流图结构,需要对流图结构以语句为单元进行建模并且转换成可交换的格式进行存储。读取的时候也需要对对应格式的数据进行解析并且重构程序结构。
8)发现缺陷的基础是有足量、有效的测试用例,借此可以得到可靠的程序单元可疑值并给出有价值的指导信息。利用单元测试框架对单元测试用例进行执行,获得动态信息。
9)利用语言分析优化工具对程序插入支持性的语句,即执行在发明中被称为插桩的动作,在程序运行或者测试用例对程序进行测试运行的同时可以收集到测试用例对于程序语句的覆盖情况,作为需要收集的动态信息的重要部分。
10)本发明中利用单元测试框架执行测试用例后可以得到测试用例的执行成功或者失败的状况以及错误信息,收集这些信息,结合步骤9)中描述的信息来进行可疑值计算。
11)结合步骤1)和2)分析得到的静态与动态信息,利用频谱定位公式进行计算得到程序可疑值计算。发明中的频谱一词指的是静态的控制流图,动态的单元测试用例执行情况与覆盖情况的结合结果,对频谱进行度量可以量化得到不同程序单元包含缺陷的可能性,在发明中被具现为程序的可疑值。
12)对于代码包含缺陷的可能性的度量方法主要包含三种,第一种是度量两个集合之间的相似性,即两个集合的交集除以它们的并集。通过使用失败测试用例的集合和覆盖了特定代码的测试用例集合,可以将这个方法用于针对代码的频谱诊断,即利用未通过的测试用例与覆盖了某个程序单元的集合的交集,除以它们的并集;第二种思想也是一种度量相似性的方法,将矩阵中的一行视为一个n维的向量,而计算这个向量同其他向量的余弦值就得到了两个向量之间的距离,这也是一种度量相似性的方法;第三种思想将矩阵中的每一行数据和测试用例结果看做比特字符串,这些比特字符串间比特的差异就可以用来度量它们的相异性。除此之外本发明还支持对于频谱定位公式进行自定义的步骤。不同度量方法适用于不同应用场景,但都会最后通过公式计算得到以程序单元为单位的可疑值,排序后具有更大可疑值的程序单元便是更有可能包含缺陷的程序单元代码。
13)由于存在太多的可疑值可能的取值情况,本发明对可疑值按照一定的分段进行分组,以定性为基础对可疑代码进行不同程度的归并。
14)对于可疑值的着色基于开发工具的基础加以完成,以红色标明可疑,以红色的饱和度标记可疑程度,根据步骤13)中描述的行为进行可疑值分组,可疑值更大的组中的程序单元被着色的红色饱和度更大,更容易被开发人员识别,进而更容易进行缺陷定位和排查。
15)监控信息主要分为
①开发工具各个工作区块的打开、激活、置顶、关闭情况
监视开发人员开发所使用的编程工具的工作区块的情况,可以得知用户在工作区中的行为,如切换视图、切换文件、浏览文件组织等等。
②光标停留位置
一般情况下,在编辑文件时,光标停留位置也是用户的关注力所在。因此,记录光标停留的位置,可以模拟记录用户目光停留位置。该记录的内容包括时间点、光标所在文件、光标所在行。
③用户对代码的修改
用户对代码的修改,是最直接的调试信息。记录该信息,可以第一时间跟踪到用户是否正确定位到错误。该记录的内容包括时间点、被修改的文件、修改点在文件中的位置、修改的类型(增加、删除等)。
④设置断点的情况
设置断点并单步调试是程序调试的关键步骤。记录断点设置的位置、添加或移除信息,可以有效跟踪用户调试程序的行为。该记录的内容包括时间点,断点所在文件名、类名、方法名,断点操作(新建或移除)。
本发明结合了程序的静态信息和动态执行信息,通过频谱定位计算获得程序单元包含缺陷的可能性,根据缺陷可能值排序映射为编程工具中的可视化效果,给予开发人员以定位缺陷的指导帮助其进一步修复软件缺陷。与此同时作为附加的,记录开发人员定位并修复缺陷的行为以期给出一些指导以及纠正。
本发明提出了一个基于频谱定位及可视化的用于指导编程人员软件缺陷的方法,充分利用了程序静态结构与动态执行结果等客观信息,扎根于频谱的理论基础上建立了程序单元可疑值的计算与可视化模型,给予编程人员可靠的缺陷定位指导,规避了开发人员在定位软件缺陷时由于主观臆断而可能犯的错误。
本发明的特点在于:1、利用了程序的客观信息,避免开发人员的主观臆断;2、利用程序静态信息进行建模,给出有效而可靠的基础架构;3、分析并记录了程序对于单元测试执行的动态信息,包括单元测试用例的执行结果与单元测试用例对于程序源代码的覆盖率,为可疑值计算提供了频谱数据基础;4、利用频谱公式计算得到程序单元包含缺陷的可能性,即可疑值,并且对其进行分组与离散化,保证了对于开发人员具有适宜的指导效果,不会对开发人员产生疑惑甚至误导;5、利用最直观的可视化技术将可疑值以颜色标注,以饱和度标识可疑程度,给予开发人员直观易于理解的指导信息;6、通过记录并分析开发人员定位与修复缺陷的行为给出引导信息或进行纠正。
附图说明
图1中展示了本发明的实施流程示意图。
图2中展示了一段示例代码以及其对应的静态分析而生成的控制流的数据文件格式。
图3描述根据计算出的可疑值进行可视化着色的效果。
具体实施方式
本发明是一种基于频谱定位及可视化的用于指导编程人员软件缺陷的方法,旨在为开发人员提供更好的缺陷定位与修复指导,同时弥补由于个人经验等主观因素而可能引发的不精准甚至错误。
本发明的核心技术是结合静态扫描和动态执行,利用收集的两种数据建立模型应用于频谱定位,获得可疑值的计算并且进行可视化。
首先利用静态分析获得程序的控制流图结构,作为本发明后续分析的基础与程序的客观结构的展示,控制流图起到了至关重要的支撑作用。接下来运用动态执行利用单元测试用例对于源程序进行测试执行,记录执行结果,并且通过插桩技术获取测试覆盖率。进一步地,利用收集到的静态与动态信息结合得到频谱信息,利用频谱定位公式计算得到表示程序单元包含缺陷可能性的可疑值,进行排序,去重以及离散化后进行分组。最终利用分组得到的结果进行不同程度的着色,以红色标明可疑,红色的饱和度代表可疑的程度。
最终本发明可以通过程序本身的静态结构和动态执行信息为开发人员提供可视化的指导,并可以通过记录开发人员定位缺陷与修复缺陷的行为给出提示。
以下给出为了验证发明效果而利用本发明流程实现的工具所进行的实验步骤,供实践者在进行具体实施时加以参考,也可根据具体项目环境和特点灵活调整。
1)静态分析
实验中选择兼容性较强并且十分流行的Java语言,而Java流行的分析工具有很多,实验中选择使用同时包含静态分析和动态插桩功能的soot。
首先可以利用soot获得程序的静态抽象语法树结构,包含了程序的静态结构信息,然后利用工具可以补充程序的逻辑信息,结合之后可以得到程序的控制流图。包含了程序从每个类到每个方法乃至每个语句单元的详细信息,以及控制流所特有的分支信息等程序中的逻辑流向。
由于程序的静态信息需要被存储下来,也需要能够进行数据的传递,所以选择使用较为流行的JSON格式进行数据的存储和传递。在控制流图生成成功后,除了与正常存在于内存中的模式,还会持久化以JSON的数据格式存储至本地,便于后续分析的使用以及数据的传递。
图2展示了一段源代码示例以及与其对应的生成得到的JSON格式的数据格式及内容。
2)动态执行
Java语言最常用的动态测试用例执行框架便是同属于xUnit框架体系的Junit框架,提供了对于单元测试用例的管理,执行与对于测试用例执行信息的收集和分析。本发明选择使用Junit作为动态分析对于单元测试用例执行的核心框架。
本发明中的动态执行又分两个部分进行对于数据的收集:测试覆盖率与单元测试用例的执行结果。对于测试覆盖率,Junit并没有给出完备的功能支持,本发明中需要先利用soot的插桩技术在源代码中插入支持性的代码,用来获得测试用例对于源代码测试执行的覆盖率,接下来利用对于单元测试的执行驱动测试,进而获得对于测试覆盖率的统计;而对于单元测试用例结果可以直接调用Junit框架中的接口获得。
3)频谱计算可疑值
4)对于代码包含缺陷的可能性的度量方法主要包含三种:
第一种是度量两个集合之间的相似性,即两个集合的交集除以它们的并集。通过使用失败测试用例的集合和覆盖了特定代码的测试用例集合,可以将这个方法用于针对代码的频谱诊断,即用失败的测试用例与覆盖了某个程序单元的集合的交集,除以它们的并集,代表算法是Jaccard算法;
第二种思想也是一种度量相似性的方法,将矩阵中的一行视为一个n维的向量,而计算这个向量同其他向量的余弦值就得到了两个向量之间的距离,这也是一种度量相似性的方法,以Ochiai算法为代表;
第三种思想将矩阵中的每一行数据和测试用例结果看做比特字符串,这些比特字符串间比特的差异就可以用来度量它们的相异性,Hamming算法是其中比较经典的算法实现。
除此之外本发明还支持对于频谱定位公式进行自定义的步骤。不同度量方法适用于不同应用场景,但都会最后通过公式计算得到以程序单元为单位的可疑值,排序后具有更大可疑值的程序单元便是更有可能包含缺陷的程序单元代码。
5)分组及可视化
获得可疑值后,即便进行过离散化将可疑值映射至[0,1]的范围内,仍然会有很多的可能的可疑值取值,仅仅基于可疑值进行含饱和度的着色会令开发人员产生迷惑,分辨不出两条可疑值比较相近的语句的区别。因此需要先做分组,按照排名的比例区分不同组别,可疑度高的语句单元会被包含在一组,而可疑度低的会被包含在另外的组别中,按照排序结果分成若干组,在实验中数据被划分成了3组,便于开发人员分辨。
离散化并分组后,便可以根据不同组别进行可视化着色。实验中选择使用红色这一常用作警告的颜色作为可能包含缺陷的语句单元的标注,利用红色的饱和度即颜色的深浅表示可疑程度的大小,红色的颜色越深证明程序单元的可疑程度越高。
图3展示了最终通过频谱定位计算和可视化后的界面样式。
6)缺陷修复行为记录
除了基于频谱定位之外,开发人员的行为经过记录同样可以反过来给予他们有效的提示,实际实施中主要收集以下几种行为信息。

Claims (6)

1.一种基于频谱定位及开发着色可视化的用于指导编程人员定位并修复软件缺陷的方法,其特征包括以下步骤:
1)利用静态分析技术及工具对含缺陷软件进行分析,获取程序的静态结构,主要包括含有程序语句逻辑流向的控制流图,含有程序数据定义和使用的数据流图等,对程序进行静态建模,进而利用静态信息进行分析。
2)对于包含缺陷程序进行动态分析:一方面利用基于Java语言的代码分析优化工具对程序进行插桩,向其中插入关键性支持性的服务代码,用于收集程序动态执行信息并加以分析。执行插入的程序代码可以收集执行单元测试用例所得到的对于程序代码的覆盖情况,即对于程序本身进行测试的完备度情况;另一方面对于程序单元进行测试所得到的数据信息也同样被记录下来,两者相结合构成程序的频谱信息,即最终用于可视化并指导开发人员进行缺陷定位与修复的信息。
3)根据1)2)两个步骤与利用频谱公式对收集到的程序静态结构信息和程序的动态频谱信息进行分析计算。频谱公式经过计算后会得到程序单元的可疑值,代表了程序单元包含缺陷的可能性,可疑值越高,程序单元越有可能是包含缺陷的。
4)利用3)中计算得到的可疑值进行排序与分组,筛选出可疑程度比较高的几组程序单元,按照一定的间隔区分可疑度,并且以红色底色标注可能包含缺陷的程序单元,程序单元的可疑程度越高,其被标注的红色的饱和度就越高,颜色就越深。
5)除了对缺陷单元进行计算和可视化,该方法还包含了对于开发人员在进行缺陷定位与修复时候的动作的记录,为研究提供资料,也可以根据大部分开发人员的习惯或常见错误对开发人员给出一定的指导。
2.根据权利要求1所述的一种基于频谱定位及可视化的用于指导编程人员软件缺陷的方法,其特征是对于步骤1)还包括以下步骤:
2.1)利用静态分析工具对于程序结构进行分析,主要用于分析生成可以代表程序逻辑走向状况的控制流图,作为后续分析的基础和结构框架。
2.2)本发明选择利用流行的数据交换格式JSON进行存储和数据传递,因此对于分析得到的控制流图结构,需要对流图结构以语句为单元进行建模并且转换成JSON格式进行存储。读取的时候也需要对JSON进行解析并且重构程序结构。
3.根据权利要求1所述的一种基于频谱定位及可视化的用于指导编程人员软件缺陷的方法,其特征是对于步骤2)还包括以下步骤:
3.1)发现缺陷的基础是有足量、有效的测试用例,借此可以得到可靠的程序单元可疑值并给出有价值的指导信息。对于测试用例的执行选用Java中最为常用的Junit框架。利用Junit框架对单元测试用例进行执行,获得动态信息。
3.2)利用语言分析优化工具soot对程序插入支持性的语句,即执行在发明中被称为插桩的动作,在程序运行或者测试用例对程序进行测试运行的同时可以收集到测试用例对于程序语句的覆盖情况,作为需要收集的动态信息的重要部分。
3.3)本发明中利用Junit执行测试用例后可以得到测试用例的执行成功或者失败的状况以及错误信息,收集这些信息,结合步骤9)中描述的信息来进行可疑值计算。
4.根据权利要求1所述的一种基于频谱定位及可视化的用于指导编程人员软件缺陷的方法,其特征是对于步骤3)还包括以下步骤:
4.1)结合步骤1)和2)分析得到的静态与动态信息,利用频谱定位公式进行计算得到程序可疑值计算。发明中的频谱指的是静态的控制流图,动态的单元测试用例执行情况与覆盖情况的结合结果,对频谱进行度量可以量化得到不同程序单元包含缺陷的可能性,在发明中被具现为程序的可疑值。
4.2)对于代码包含缺陷的可能性的度量方法主要包含三种,第一种是度量两个集合之间的相似性,即两个集合的交集除以它们的并集。通过使用失败测试用例的集合和覆盖了特定代码的测试用例集合可以将这个方法用于针对代码的频谱诊断,即利用并未通过的测试用例与覆盖了某个程序单元的集合的交集,除以它们的并集;第二种思想也是一种度量相似性的方法,将矩阵中的一行视为一个n维的向量,而计算这个向量同其他向量的余弦值就得到了两个向量之间的距离,这也是一种度量相似性的方法;第三种思想将矩阵中的每一行数据和测试用例结果看作比特字符串,这些比特字符串间比特的差异就可以用来度量它们的相异性。除此之外本发明还支持对于频谱定位公式进行自定义的步骤。不同度量方法适用于不同应用场景,但都会最后通过公式计算得到以程序单元为单位的可疑值,排序后具有更大可疑值的程序单元便是更有可能包含缺陷的程序单元代码。
4.3)由于存在太多的可疑值可能的取值情况,本发明对可疑值按照一定的分段进行分组,以定性为基础对可疑代码进行不同程度的归并。
5.根据权利要求1所述的一种基于频谱定位及可视化的用于指导编程人员软件缺陷的方法,其特征是对于步骤4)还包括以下步骤:
5.1)对于可疑值的着色基于开发工具的基础加以完成,以红色标明可疑,以红色的饱和度标记可疑程度,根据步骤13)中描述的行为进行可疑值分组,可疑值更大的组中的程序单元被着色的红色饱和度更大,更容易被开发人员识别,进而更容易进行缺陷定位和排查。
6.根据权利要求1所述的一种基于频谱定位及可视化的用于指导编程人员软件缺陷的方法,其特征是对于步骤5)还包括以下步骤:
关于监控信息的获取方式,主要分为
①开发工具各个工作区块的打开、激活、置顶、关闭情况
以目前最流行的用来进行Java开发和测试的开发工具Eclipse为例,监视其工作区块的情况,可以得知用户在工作区中的行为,如切换视图、切换文件、浏览文件组织等等。
②光标停留位置
一般情况下,在编辑文件时,光标停留位置也是用户的关注力所在。因此,记录光标停留的位置,可以模拟记录用户目光停留位置。该记录的内容包括时间点、光标所在文件、光标所在行。
③用户对代码的修改
用户对代码的修改,是最直接的调试信息。记录该信息,可以第一时间跟踪到用户是否正确定位到错误。该记录的内容包括时间点、被修改的文件、修改点在文件中的位置、修改的类型(增加、删除等)。
④设置断点的情况
设置断点并进行单步调试是程序调试的关键步骤。记录断点设置的位置、添加或移除信息,可以有效跟踪用户调试程序的行为。该记录的内容包括时间点,断点所在文件名、类名、方法名,断点操作(新建或移除)。
CN201610283644.5A 2016-04-27 2016-04-27 一种基于频谱定位和可视化定位软件缺陷的方法 Active CN106445801B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610283644.5A CN106445801B (zh) 2016-04-27 2016-04-27 一种基于频谱定位和可视化定位软件缺陷的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610283644.5A CN106445801B (zh) 2016-04-27 2016-04-27 一种基于频谱定位和可视化定位软件缺陷的方法

Publications (2)

Publication Number Publication Date
CN106445801A true CN106445801A (zh) 2017-02-22
CN106445801B CN106445801B (zh) 2019-10-18

Family

ID=58183115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610283644.5A Active CN106445801B (zh) 2016-04-27 2016-04-27 一种基于频谱定位和可视化定位软件缺陷的方法

Country Status (1)

Country Link
CN (1) CN106445801B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109376080A (zh) * 2018-09-27 2019-02-22 北京大学 时间适配的自动化缺陷定位方法和装置
CN110209573A (zh) * 2019-05-08 2019-09-06 三峡大学 一种增强软件故障定位效果的方法
CN110427316A (zh) * 2019-07-04 2019-11-08 沈阳航空航天大学 基于访问行为感知的嵌入式软件缺陷修复方法
CN110543422A (zh) * 2019-09-05 2019-12-06 中国人民解放军国防科技大学 一种用于fpr的软件包代码缺陷数据处理方法、系统及介质
CN111625444A (zh) * 2020-04-10 2020-09-04 中国科学院软件研究所 一种基于频谱法的程序错误定位方法和装置
CN113282485A (zh) * 2021-04-25 2021-08-20 南京大学 一种基于自适应搜索的程序自动修复方法
CN115269412A (zh) * 2022-07-29 2022-11-01 东南大学 一种基于目标前置区域搜索的定向模糊测试方法
US20220391663A1 (en) * 2021-06-02 2022-12-08 Peking University Defect location method and device based on coverage information

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060101402A1 (en) * 2004-10-15 2006-05-11 Miller William L Method and systems for anomaly detection
CN105203936A (zh) * 2015-10-26 2015-12-30 云南电网有限责任公司电力科学研究院 一种基于频谱分析的电力电缆局部放电缺陷类型判别方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060101402A1 (en) * 2004-10-15 2006-05-11 Miller William L Method and systems for anomaly detection
CN105203936A (zh) * 2015-10-26 2015-12-30 云南电网有限责任公司电力科学研究院 一种基于频谱分析的电力电缆局部放电缺陷类型判别方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
RUI ABREU: "An Evaluation of Similarity Coefficients for Software Fault", 《12TH PACIFIC RIM INTERNATIONAL SYMPOSIUM ON DEPENDABLE COMPUTING》 *
宋东海: "基于Soot 的Java 程序竞争静态检测工具设计", 《信息技术》 *
谭德贵: "《基于频谱技术及可视化的错误定位技术研究》", 《豆丁》 *
陈翔: "基于程序频谱的动态缺陷定位方法研究", 《软件学报》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109376080B (zh) * 2018-09-27 2021-10-01 北京大学 时间适配的自动化缺陷定位方法和装置
CN109376080A (zh) * 2018-09-27 2019-02-22 北京大学 时间适配的自动化缺陷定位方法和装置
CN110209573A (zh) * 2019-05-08 2019-09-06 三峡大学 一种增强软件故障定位效果的方法
CN110209573B (zh) * 2019-05-08 2023-06-02 三峡大学 一种增强软件故障定位效果的方法
CN110427316A (zh) * 2019-07-04 2019-11-08 沈阳航空航天大学 基于访问行为感知的嵌入式软件缺陷修复方法
CN110427316B (zh) * 2019-07-04 2023-02-14 沈阳航空航天大学 基于访问行为感知的嵌入式软件缺陷修复方法
CN110543422A (zh) * 2019-09-05 2019-12-06 中国人民解放军国防科技大学 一种用于fpr的软件包代码缺陷数据处理方法、系统及介质
CN110543422B (zh) * 2019-09-05 2022-12-27 中国人民解放军国防科技大学 一种用于fpr的软件包代码缺陷数据处理方法、系统及介质
CN111625444A (zh) * 2020-04-10 2020-09-04 中国科学院软件研究所 一种基于频谱法的程序错误定位方法和装置
CN113282485A (zh) * 2021-04-25 2021-08-20 南京大学 一种基于自适应搜索的程序自动修复方法
CN113282485B (zh) * 2021-04-25 2023-11-03 南京大学 一种基于自适应搜索的程序自动修复方法
US20220391663A1 (en) * 2021-06-02 2022-12-08 Peking University Defect location method and device based on coverage information
CN115269412A (zh) * 2022-07-29 2022-11-01 东南大学 一种基于目标前置区域搜索的定向模糊测试方法

Also Published As

Publication number Publication date
CN106445801B (zh) 2019-10-18

Similar Documents

Publication Publication Date Title
CN106445801A (zh) 一种基于频谱定位和可视化定位软件缺陷的方法
Ekanem et al. Phoenix–a model-based human reliability analysis methodology: qualitative analysis procedure
Campos et al. Gzoltar: an eclipse plug-in for testing and debugging
CN103294594B (zh) 一种基于测试的静态分析误报消除方法
Sarhan et al. A survey of challenges in spectrum-based software fault localization
CN109189674A (zh) 一种软件缺陷自动上报的方法及系统
CN104077232B (zh) 一种基于用例与源码双向追溯的测试装置及方法
CN104077227A (zh) 一种基于b/s架构的程序源代码的评判系统及方法
CN107665168A (zh) 一种嵌入式软件gui自动化测试设备
CN102708052B (zh) 一种单元测试中软件故障自动定位方法
Carver et al. Evaluating the testing ability of senior-level computer science students
CN107870853A (zh) 测试程序代码路径覆盖率的方法以及装置
CN107357734A (zh) 一种单元测试方法和装置
Zhong et al. Iterative android automated testing
Tramontana et al. State of the Practice in Software Testing Teaching in Four European Countries
CN117520184A (zh) 一种计算机软件开发用测试系统
Kollmansberger Helping students build a mental model of computation
CN110349477A (zh) 一种基于历史学习行为的编程错误修复方法、系统及服务器
Mühling et al. Dimensions of programming knowledge
Kulesz et al. Integrating anomaly diagnosis techniques into spreadsheet environments
Li et al. Applying Coding Behavior Features to Student Plagiarism Detection on Programming Assignments
CN107622013A (zh) 一种分布式系统测试方法及装置
TW200426574A (en) Fault pattern oriented defect diagnosis for memories
Borg et al. An analytical view of test results using cityscapes
Albrecht et al. Towards a framework for mining students' programming assignments

Legal Events

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