CN114741302B - 一种基于变量分离的软件bug定位方法及装置 - Google Patents

一种基于变量分离的软件bug定位方法及装置 Download PDF

Info

Publication number
CN114741302B
CN114741302B CN202210411172.2A CN202210411172A CN114741302B CN 114741302 B CN114741302 B CN 114741302B CN 202210411172 A CN202210411172 A CN 202210411172A CN 114741302 B CN114741302 B CN 114741302B
Authority
CN
China
Prior art keywords
test
program
variable
node
test result
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
CN202210411172.2A
Other languages
English (en)
Other versions
CN114741302A (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.)
Hangzhou Jinhenghe Information Technology Co ltd
Original Assignee
Hangzhou Jinhenghe 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 Hangzhou Jinhenghe Information Technology Co ltd filed Critical Hangzhou Jinhenghe Information Technology Co ltd
Priority to CN202210411172.2A priority Critical patent/CN114741302B/zh
Publication of CN114741302A publication Critical patent/CN114741302A/zh
Application granted granted Critical
Publication of CN114741302B publication Critical patent/CN114741302B/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/3684Test management for test design, e.g. generating new test cases
    • 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/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Landscapes

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

Abstract

本发明公开一种基于变量分离的软件bug定位方法,包括对待测程序进行AST分析得到待测程序的控制流程图,通过当前节点和前驱节点的连接,以及当前节点与后继节点的连接构建了数据流节点关联图;利用测试用例测试插装程序覆盖信息的待测程序,基于测试结果筛选得到失败测试结果测试变量及程序覆盖信息,从数据流节点关联图和控制流程图中提取静态程序切片,基于失败测试结果的测试变量、第三程序覆盖信息和静态程序切片构建每个测试变量的动态程序切片;将动态程序切片代入VSDstar公式中得到待测程序的每个测试变量bug怀疑度。该方法能够精准、纯粹的定位bug。本发明还提供了一种基于变量分离的软件bug定位装置。

Description

一种基于变量分离的软件bug定位方法及装置
技术领域
本发明属于计算机信息处理领域软件工程测试自动化领域,具体涉及一种基于变量分离的软件bug定位方法及装置。
背景技术
业内通常将计算机程序中存在的比较隐晦,不是显而易见的一些缺陷或问题统称为bug。在日常编写程序的过程中,随着代码量的增多,尤其是修改老代码时由于对老代码理解不够,考虑不周等,很可能在不经意间引入bug。bug的存在普遍且难以完全避免的。因此如何定位程序中的bug是长期的重要课题。
软件工程各阶段中软件调试工作往往是费时,费力的,bug位置的定位已被确定为成本最为昂贵的活动之一。能够快速的定位软件bug的位置根源,可以减少测试阶段所花费的时间精力。传统的bug定位的基本思想:首先确定最有可能的软件bug的语句,并对他们进行排序;然后,根据排列的顺序逐个检查,直到找到bug根源位置(语句)为止。好的定位技术应当是把有bug的语句位置排名更靠前,这样,软件bug就能被更快更精确的检查出来。
但这类方法借助手工方式,存在定位缺陷语句代价高、未能充分利用测试用例的执行行为和执行结果等不足.近些年来,国内外研究人员对高效缺陷定位方法展开了深入的研究并取得了一定的研究进展.根据是否需要执行测试用例,可将缺陷定位方法划分为静态缺陷定位方法和动态缺陷定位方法.其中,静态缺陷定位方法不需要执行测试用例,主要采用代码审查方法,重点对被测程序的内在结构(例如控制依赖关系、数据依赖关系或类型约束等)进行分析,以确定缺陷语句在被测程序内的可能位置;而动态缺陷定位方法则需要分析被测程序的内在结构,搜集测试用例的执行行为和结果,基于特定模型以确定缺陷语句在被测程序内的可能位置,最终生成缺陷定位报告以辅助开发人员进行软件调试。
目前,主要的自动化bug定位方法有:基于频谱的bug定位,相似程序谱的bug定位,SOBER的bug定位方法,基于模型的诊断定位方法。
以上几种方法中,基于频谱的bug定位,忽略了测试结果与软件本身的关联性,只能粗略的定位出bug位置,需要程序员人工剔除大量的不必要的语句。相似程序谱的bug定位方法,是利用失败的程序谱并挑出一个与之最相似的成功的程序谱,进而比较两个程序谱的不同之处。它算法复杂度上比较简单,但是不能推理多错误导致的失败;SOBER的bug定位方法,则需要足够多,大量的测试用例;基于模型的诊断定位方法则通常是基于程序静态的分析,无法捕捉动态的依赖或者条件控制流。
发明内容
本发明提供一种基于变量分离的软件bug定位方法,该方法能够精准、纯粹的定位bug。
一种基于变量分离的软件bug定位方法,包括:
对待测程序进行AST分析得到待测程序的控制流程图,控制流程图包括多个节点,每个节点包括使用变量和赋值变量,利用当前节点中的使用变量将当前节点和前驱节点进行连接,以及利用当前节点中的赋值变量将当前节点与后继节点进行连接,从而得到数据流节点关联图;
利用测试用例测试插装第一程序覆盖信息的待测程序,从测试结果中筛选失败测试结果的测试变量,从第一程序覆盖信息中筛选失败测试结果的测试变量对应的第二程序覆盖信息,从数据流节点关联图和控制流程图提取与失败测试结果的测试变量关联的静态程序切片,基于失败测试结果的测试变量、第二程序覆盖信息和静态程序切片构建每个测试变量的动态程序切片;将动态程序切片代入VSDstar式中得到待测程序的每个测试变量bug所针对的每个代码行怀疑度。
对待测程序进行AST分析处理得到待测程序的控制流程图,包括:
将待测程序进行AST分析处理得到抽象语法树结构,遍历抽象语法树结构的节点构建待测程序的控制流程图。
构建数据流节点关联图,包括:
将前驱节点的赋值变量输入至当前节点作为当前节点的使用变量,以完成前驱节点和当前节点的连接,当前节点的使用变量通过计算得到当前节点的赋值变量,将当前节点的赋值变量输入至后继节点以完成当前节点与后继节点的连接,通过当前节点分别与前驱节点和后续节点的连接关系构建数据流节点关联图。
利用测试用例测试插装第一程序覆盖信息的待测程序,包括:
对待测程序插装第一程序覆盖信息,编译待测程序中的测试对象的测试执行程序,通过测试用例执行测试执行程序得到测试对象的测试结果。
从数据流节点关联图和控制流程图提取与失败测试结果的测试变量关联的静态程序切片,包括:
从数据流节点关联图中找到将失败测试结果的测试变量作为赋值变量的节点,以及该节点与前驱节点和后继节点的连接关系得到与失败测试结果的测试变量存在数据依赖关系的语句;
从控制流程图中找到失败测试结果的测试变量所在的节点,以及该节点与前驱节点和后继节点的连接关系得到与失败测试结果的测试变量存在结构依赖关系的语句;
数据依赖关系的语句和结构依赖关系的语句的集合构建了静态程序切片。
基于测试结果筛选得到失败测试结果的测试变量,包括:
设定每个测试变量的测试期待值,当测试完成后输出的测试值与测试期待值一致则对应测试变量为成功测试结果的测试变量,存在差异则对应测试变量为失败测试结果的测试变量。
基于失败测试结果的测试变量、第二程序覆盖信息和静态程序切片构建每个测试变量的动态程序切片Ds为:
Ds={<var(i),Ss,CoverageInfo>}
其中,var(i)为失败测试结果的第i个测试变量,Ss为第i个测试变量对应的静态程序切片,CoverageInfo为第二程序覆盖信息。
将动态程序切片代入VSDstar式中得到待测程序的每个测试变量bug怀疑度Pvar(i)(s)为:
Figure BDA0003603753520000031
其中,×为测试结果为失败,
Figure BDA0003603753520000032
为测试结果为成功,c为测试用例覆盖该行代码,u为测试用例未覆盖该行代码,Ds为动态程序切片;NDs(var(i)_c) ×为针对第i个测试变量的动态程序切片中,已覆盖代码行(s),并测试结果为失败的测试用例数量;
Figure BDA0003603753520000033
为针对第i个测试变量的动态程序切片中,未覆盖代码行(s),并测试结果为失败的测试用例数量;
Figure BDA0003603753520000041
为针对第i个测试变量的动态程序切片中,已覆盖代码行(s),并测试结果为成功的测试用例数量,s为第s行程序代码行。
一种基于变量分离的软件bug定位装置,包括:
输入单元:对待测程序进行AST分析得到待测程序的控制流程图,控制流程图包括多个节点,每个节点包括使用变量和赋值变量,利用当前节点中的使用变量将当前节点和前驱节点进行连接,以及利用当前节点中的赋值变量将当前节点与后继节点进行连接,从而得到数据流节点关联图;
输出单元:利用测试用例测试插装第一程序覆盖信息的待测程序,从测试结果中筛选失败测试结果的测试变量,从第一程序覆盖信息中筛选失败测试结果的测试变量对应的第二程序覆盖信息,从数据流节点关联图和控制流程图提取与失败测试结果的测试变量关联的静态程序切片,基于失败测试结果的测试变量、第二程序覆盖信息和静态程序切片构建每个测试变量的动态程序切片;将动态程序切片代入VSDstar公式中得到待测程序的每个测试变量bug怀疑度。
基于失败测试结果的测试变量、第二程序覆盖信息和静态程序切片构建每个测试变量的动态程序切片Ds为:
Ds={<var(i),Ss,CoverageInfo>}
其中,var(i)为失败测试结果的第i个测试变量,Ss为第i个测试变量对应的静态程序切片,CoverageInfo为第二程序覆盖信息。
与现有技术相比,本发明的有益效果为:
传统的软件bug定位方法,忽略了程序测试结果变量与程序结构之间的关联信息的提取;本发明增加控制依赖以及数据流依赖分析,更好的体现程序bug的数据以及控制流信息的传递过程,以及结合动态程序执行覆盖信息,很好的去除了统计中的杂质数据,提高了软件定位的精度。同时,按照单个测试变量分析其相关程序切片序列,也进一步有效的保障了数据的纯净度。
附图说明
图1为具体实施方式提供的待测试程序对应的控制流程和数据流节点关联图;
图2为具体实施方式提供的测试变量的静态程序切片信息图;
图3为具体实施方式提供的测试变量的动态程序切片信息图;
图4为具体实施方式提供的传统基于频谱方法定位结果与基于变量分离的软件bug定位方法定位结果的比较图。
具体实施方式
下面结合附图和实施方法对本发明做进一步的详细描述。根据本发明技术实现步骤,为求精准的程序切片需要如下处理过程:
如图1所示,对待测程序进行词法分析得到待测程序的AST(抽象语法树)结构,遍历AST结构节点以创建控制流程图的节点信息、构造节点入边和出边信息,得到控制流程图。其中,控制流程图中的分支节点为待测程序中的跳转,具体为分支节点结构对应的代码结构包括goto/if/switch/for/while/do…while,节点包括前驱、后继和当前节点,每个节点均为程序块。
每个节点包括使用变量和赋值变量,每个节点的使用变量的集合构建了USE变量列表,每个节点的赋值变量的集合构建了DEF变量列表,如果涉及到指针(数组)运算,需要进行别名分析,以提高USE/DEF变量列表分析结果精度。
将前驱节点的DEF变量列表输入至当前节点作为当前节点的USE变量列表,以完成前驱节点和当前节点的连接,当前节点的DEF变量列表通过计算得到当前节点的USE变量列表,将当前节点的USE变量列表输入至后继节点以完成当前节点与后继节点的连接,通过当前节点分别与前驱节点和后续节点的连接关系构建数据流节点关联图,如图1所示。从数据流节点关联图中可以得到节点的变量之间的数值关系,从而控制流程图中得到可以得出节点中的变量之间的结构关系。
自动插装第一程序覆盖信息并收集每个测试用例的第二程序覆盖信息,利用gcc工具链中gcov工具,测试用例执行完毕之后,解析gcov工具的输出文件(*.gcda和*.gcno)文件内容,可得到每个测试用例的第二程序覆盖信息。
设定每个测试变量的测试期待值,遍历每个测试用例的测试结果,当测试完成后输出的测试值与测试期待值一致则对应测试变量为成功测试结果的测试变量,存在差异则对应测试变量为失败测试结果的测试变量。
基于测试结果筛选得到失败测试结果的测试变量,及测试变量对应的第三程序覆盖信息,从数据流节点关联图和控制流程图中提取与失败测试结果的测试变量存在数据依赖关系和控制依赖关系的静态程序切片,静态程序切片为与测试变量存在数据依赖关系的语句和存在控制依赖关系语句的集合,如图2所示,测试变量为func_returnVar(函数返回值),gVar_proc,block_queue[count]三个测试变量,通过分析数据流关联图和控制流图的USE和DEF信息,我可得知,func_returnVar在b7中依赖b1中的count,因此得出其静态程序切片为[b1,b7]。gVar_proc的最终赋值在b5;b5数据依赖b3,控制条件依赖b4;b3数据依赖b2;b4数据依赖b3;b2数据依赖b1和entry节点;因此gVar_proc的静态程序切片为[entry,b1,b2,b3,b4,b5]。block_queue[count]的最终赋值在b6;b6数据依赖b1和b5,控制条件依赖b4;b5数据依赖b3,控制条件依赖b4;b4数据依赖b3;b3数据依赖b2;b4数据依赖b3;b2数据依赖b1和entry节点;从而可得出,block_queue[count]的静态程序切片为[entry,b1,b2,b3,b4,b5,b6]。通过静态程序切片整合了与失败测试结果的测试变量存在数据依赖关系和控制依赖关系的语句,能够更加完整得到与失败测试结果的测试变量相关联的变量。
基于失败测试结果的测试变量、第三程序覆盖信息和静态程序切片构建每个测试变量的动态程序切片Ds为:
Ds={<var(i),Ss,CoverageInfo>}
其中,var(i)为失败测试结果的第i个测试变量,Ss为第i个测试变量对应的静态程序切片,CoverageInfo为第三程序覆盖信息,第三程序覆盖信息为静态程序切片中的变量对应的程序覆盖信息,如图3所示。通过动态程序切片中的第三程序覆盖信息能够准确,纯粹的获得哪些变量导致了bug的存在。
将动态程序切片代入如下公式中得到待测程序的每个测试变量的每行程序代码行的bug怀疑度Pvar(i)(s)为:
Figure BDA0003603753520000061
其中,×为测试结果为失败,
Figure BDA0003603753520000062
为测试结果为成功,c为覆盖本程序行,u为未覆盖本程序行,Ds为动态程序切片;
Figure BDA0003603753520000063
为针对第i个测试变量的动态程序切片中,覆盖本程序行,并测试结果为失败的测试用例数量;
Figure BDA0003603753520000071
为针对第i个测试变量的动态程序切片中,未覆盖本程序行,并测试结果为失败的测试用例数量;
Figure BDA0003603753520000072
为针对第i个测试变量的动态程序切片中,覆盖本程序行,并测试结果为成功的测试用例数量,s为第s行程序代码行。从上个公式中可以看出,覆盖该测试变量的动态程序切片中,覆盖某行程序代码行并且测试结果为失败的测试用例数量越多,该程序代码行的bug怀疑度越高;覆盖该行程序代码行,测试结果为成功的测试用例数量越多,该程序代码行bug怀疑度越低;未覆盖该程序代码行,测试结果为失败的测试用例数量越多,该测试变量bug怀疑度越低。
如图4所示,传统的基于频谱的定位算法不能很好的剔除同一个基本块(无分支跳转语句)一些和测试失败变量无关的程序行,本发明可以更好的剔除和测试错误无关的代码行。
本发明所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围。

Claims (7)

1.一种基于变量分离的软件bug定位方法,其特征在于,包括:
对待测程序进行AST分析得到待测程序的控制流程图,控制流程图包括多个节点,每个节点包括使用变量和赋值变量,利用当前节点中的使用变量将当前节点和前驱节点进行连接,以及利用当前节点中的赋值变量将当前节点与后继节点进行连接,从而得到数据流节点关联图;
利用测试用例测试插装第一程序覆盖信息的待测程序,从测试结果中筛选失败测试结果的测试变量,从第一程序覆盖信息中筛选失败测试结果的测试变量对应的第二程序覆盖信息,从数据流节点关联图和控制流程图提取与失败测试结果的测试变量关联的静态程序切片,基于失败测试结果的测试变量、第二程序覆盖信息和静态程序切片构建每个测试变量的动态程序切片;
动态程序切片Ds为:
Ds={<var(i),Ss,CoverageInfo>}
其中,var(i)为失败测试结果的第i个测试变量,Ss为第i个测试变量对应的静态程序切片,CoverageInfo为第二程序覆盖信息;
将动态程序切片代入VSDstar公式中得到待测程序的每个测试变量bug怀疑度;
每个测试变量bug怀疑度
Figure DEST_PATH_IMAGE001
为:
Figure 121014DEST_PATH_IMAGE002
其中,
Figure DEST_PATH_IMAGE003
为测试结果为失败,
Figure 55472DEST_PATH_IMAGE004
为测试结果为成功,c为测试用例覆盖代码行(s),u为测 试用例未覆盖代码行(s),Ds为动态程序切片;
Figure DEST_PATH_IMAGE005
为针对第i个测试变量的动 态程序切片中,已覆盖代码行(s),并测试结果为失败的测试用例数量;
Figure 517677DEST_PATH_IMAGE006
为针对第i个测试变量的动态程序切片中,未覆盖代码行(s),并测试结果为失败的测试用 例数量;
Figure DEST_PATH_IMAGE007
为针对第i个测试变量的动态程序切片中,已覆盖代码行(s),并 测试结果为成功的测试用例数量,s为程序代码行的索引;
从数据流节点关联图和控制流程图提取与失败测试结果的测试变量关联的静态程序切片,包括:
从数据流节点关联图中找到将失败测试结果的测试变量作为赋值变量的节点,以及该节点与前驱节点和后继节点的连接关系得到与失败测试结果的测试变量存在数据依赖关系的语句;
从控制流程图中找到失败测试结果的测试变量所在的节点,以及该节点与前驱节点和后继节点的连接关系得到与失败测试结果的测试变量存在结构依赖关系的语句;
数据依赖关系的语句和结构依赖关系的语句的集合构建了静态程序切片。
2.根据权利要求1所述的基于变量分离的软件bug定位方法,其特征在于,对待测程序进行AST分析处理得到待测程序的控制流程图,包括:
将待测程序进行AST分析处理得到抽象语法树结构,遍历抽象语法树结构的节点构建待测程序的控制流程图。
3.根据权利要求1所述的基于变量分离的软件bug定位方法,其特征在于,构建数据流节点关联图,包括:
将前驱节点的赋值变量输入至当前节点作为当前节点的使用变量,以完成前驱节点和当前节点的连接,当前节点的使用变量通过计算得到当前节点的赋值变量,将当前节点的赋值变量输入至后继节点以完成当前节点与后继节点的连接,通过当前节点分别与前驱节点和后续节点的连接关系构建数据流节点关联图。
4.根据权利要求1所述的基于变量分离的软件bug定位方法,其特征在于,利用测试用例测试插装第一程序覆盖信息的待测程序,包括:
对待测程序插装第一程序覆盖信息,编译待测程序中的测试对象的测试执行程序,通过测试用例执行测试执行程序得到测试对象的测试结果。
5.根据权利要求1所述的基于变量分离的软件bug定位方法,其特征在于,基于测试结果筛选得到失败测试结果的测试变量,包括:
设定每个测试变量的测试期待值,当测试完成后输出的测试值与测试期待值一致则对应测试变量为成功测试结果的测试变量,存在差异则对应测试变量为失败测试结果的测试变量。
6.一种基于变量分离的软件bug定位装置,其特征在于,包括:
输入单元:对待测程序进行AST分析得到待测程序的控制流程图,控制流程图包括多个节点,每个节点包括使用变量和赋值变量,利用当前节点中的使用变量将当前节点和前驱节点进行连接,以及利用当前节点中的赋值变量将当前节点与后继节点进行连接,从而得到数据流节点关联图;
输出单元:利用测试用例测试插装第一程序覆盖信息的待测程序,从测试结果中筛选失败测试结果的测试变量,从第一程序覆盖信息中筛选失败测试结果的测试变量对应的第二程序覆盖信息,从数据流节点关联图和控制流程图提取与失败测试结果的测试变量关联的静态程序切片,基于失败测试结果的测试变量、第二程序覆盖信息和静态程序切片构建每个测试变量的动态程序切片;将动态程序切片代入VSDstar式中得到待测程序的每个测试变量bug怀疑度;
每个测试变量bug怀疑度
Figure 599903DEST_PATH_IMAGE001
为:
Figure 602494DEST_PATH_IMAGE002
其中,
Figure 329142DEST_PATH_IMAGE003
为测试结果为失败,
Figure 758986DEST_PATH_IMAGE004
为测试结果为成功,c为测试用例覆盖代码行(s),u为测 试用例未覆盖代码行(s),Ds为动态程序切片;
Figure 266191DEST_PATH_IMAGE005
为针对第i个测试变量的动 态程序切片中,已覆盖代码行(s),并测试结果为失败的测试用例数量;
Figure 869210DEST_PATH_IMAGE006
为 针对第i个测试变量的动态程序切片中,未覆盖代码行(s),并测试结果为失败的测试用例 数量;
Figure 778260DEST_PATH_IMAGE007
为针对第i个测试变量的动态程序切片中,已覆盖代码行(s),并测 试结果为成功的测试用例数量,s为程序代码行的索引;
从数据流节点关联图和控制流程图提取与失败测试结果的测试变量关联的静态程序切片,包括:
从数据流节点关联图中找到将失败测试结果的测试变量作为赋值变量的节点,以及该节点与前驱节点和后继节点的连接关系得到与失败测试结果的测试变量存在数据依赖关系的语句;
从控制流程图中找到失败测试结果的测试变量所在的节点,以及该节点与前驱节点和后继节点的连接关系得到与失败测试结果的测试变量存在结构依赖关系的语句;
数据依赖关系的语句和结构依赖关系的语句的集合构建了静态程序切片。
7.根据权利要求6所述的基于变量分离的软件bug定位装置,其特征在于,基于失败测试结果的测试变量、第二程序覆盖信息和静态程序切片构建每个测试变量的动态程序切片Ds为:
Ds={<var(i),Ss,CoverageInfo>}
其中,var(i)为失败测试结果的第i个测试变量,Ss为第i个测试变量对应的静态程序切片,CoverageInfo为第二程序覆盖信息。
CN202210411172.2A 2022-04-19 2022-04-19 一种基于变量分离的软件bug定位方法及装置 Active CN114741302B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210411172.2A CN114741302B (zh) 2022-04-19 2022-04-19 一种基于变量分离的软件bug定位方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210411172.2A CN114741302B (zh) 2022-04-19 2022-04-19 一种基于变量分离的软件bug定位方法及装置

Publications (2)

Publication Number Publication Date
CN114741302A CN114741302A (zh) 2022-07-12
CN114741302B true CN114741302B (zh) 2022-12-06

Family

ID=82282526

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210411172.2A Active CN114741302B (zh) 2022-04-19 2022-04-19 一种基于变量分离的软件bug定位方法及装置

Country Status (1)

Country Link
CN (1) CN114741302B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106951372A (zh) * 2017-04-05 2017-07-14 西安邮电大学 一种基于变量切片和关联规则的软件错误定位方法
CN109144882A (zh) * 2018-09-19 2019-01-04 哈尔滨工业大学 一种基于程序不变量的软件故障定位方法及装置
CN112328475A (zh) * 2020-10-28 2021-02-05 南京航空航天大学 一种面向多可疑代码文件的缺陷定位方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9043761B2 (en) * 2010-09-01 2015-05-26 International Business Machines Corporation Fault localization using condition modeling and return value modeling
CN103268280B (zh) * 2013-04-16 2016-01-06 西安电子科技大学 基于距离度量和统计分析结合的软件故障定位系统及方法
CN104572474B (zh) * 2015-01-30 2017-09-29 南京邮电大学 一种基于动态切片的轻量级错误定位技术实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106951372A (zh) * 2017-04-05 2017-07-14 西安邮电大学 一种基于变量切片和关联规则的软件错误定位方法
CN109144882A (zh) * 2018-09-19 2019-01-04 哈尔滨工业大学 一种基于程序不变量的软件故障定位方法及装置
CN112328475A (zh) * 2020-10-28 2021-02-05 南京航空航天大学 一种面向多可疑代码文件的缺陷定位方法

Also Published As

Publication number Publication date
CN114741302A (zh) 2022-07-12

Similar Documents

Publication Publication Date Title
CN109739755B (zh) 一种基于程序追踪和混合执行的模糊测试系统
Hartmann et al. Techniques for selective revalidation
Song et al. Performance diagnosis for inefficient loops
Zhang et al. Localizing failure-inducing program edits based on spectrum information
CN101739339B (zh) 一种基于程序动态依赖关系的软件故障定位方法
Lei et al. Effective statistical fault localization using program slices
CN102243609A (zh) 一种基于嵌入式软件的测试分析方法及系统
Fenske et al. When code smells twice as much: Metric-based detection of variability-aware code smells
CN110515826A (zh) 一种基于次数频谱与神经网络算法的软件缺陷定位方法
Silva et al. Flacoco: Fault localization for java based on industry-grade coverage
Sarhan et al. Charmfl: A fault localization tool for python
Guo et al. An empirical study on the effect of dynamic slicing on automated program repair efficiency
CN106294136B (zh) 并行程序运行期间性能变化的在线检测方法和系统
Papadakis et al. Proteum/fl: A tool for localizing faults using mutation analysis
CN110990282A (zh) 一种自动化单元测试方法
CN114741302B (zh) 一种基于变量分离的软件bug定位方法及装置
CN102521135B (zh) 线性系统的测试方法和装置
Ye et al. Automatic regression test selection based on activity diagrams
CN112181857A (zh) 一种跨处理器的Linux待迁移软件定位与评估的方法
Sagdeo et al. Precis: Inferring invariants using program path guided clustering
CN101937389A (zh) 一种让代码分析工具获取被检测软件包编译过程的方法
CN115080978A (zh) 一种基于模糊测试的运行时漏洞检测方法及系统
Saxena et al. Software Fault Localization: Techniques, Issues and Remedies.
CN114780374A (zh) 一种基于细粒度优化选项配置差分的编译器缺陷定位方法
CN115098355A (zh) 基于历史数据驱动的jvm测试程序生成方法

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