CN108509347B - 等价变异体识别方法及装置 - Google Patents
等价变异体识别方法及装置 Download PDFInfo
- Publication number
- CN108509347B CN108509347B CN201810359665.XA CN201810359665A CN108509347B CN 108509347 B CN108509347 B CN 108509347B CN 201810359665 A CN201810359665 A CN 201810359665A CN 108509347 B CN108509347 B CN 108509347B
- Authority
- CN
- China
- Prior art keywords
- variant
- identified
- propagation
- equivalent
- source 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
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)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种等价变异体识别方法。所述等价变异体识别方法包括:获取待识别变异体的源代码;根据所述源代码生成所述待识别变异体的图模型;根据所述图模型查找所述待识别变异体的多条传播路径;通过查找所述多条传播路径中是否有输出所述待识别变异体产生的错误状态的传播路径以得到识别结果。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种等价变异体识别方法及装置。
背景技术
变异测试(mutation testing)是一种基于错误的软件测试方法,通过向待测程序中注入各种微小的语法错误,生成大量被称为变异体的错误程序,用以模拟软件开发过程中出现的真实错误,根据测试集分辨原程序与错误程序的能力来衡量测试集的有效性,如果一个变异体在测试集上的输出与原程序不同,则称该变异体被测试集杀死,否则称该变异体存活。等价变异体指那些虽然在语法(文本层面)上与原程序不同,但在语义(功能层面)上与原程序相同的变异体,由于等价变异体在功能上与原程序完全相同,因此在任何测试集上的输出都与原程序相同,即等价变异体在功能上是完全正确的,不能模拟软件开发过程中的任何错误。等价变异体问题已经成为制约变异测试发展的重要障碍之一。
发明内容
有鉴于此,本发明实施例的目的在于提供一种等价变异体识别方法及装置。
本发明实施例提供的一种等价变异体识别方法,包括:
获取待识别变异体的源代码;
根据所述源代码生成所述待识别变异体的图模型;
根据所述图模型查找所述待识别变异体的多条传播路径;
通过查找所述多条传播路径中是否有输出所述待识别变异体产生的错误状态的传播路径以得到识别结果。
本发明实施例还提供一种等价变异体识别装置,其特征在于,包括:
获取待识别变异体的源代码;
根据所述源代码生成所述待识别变异体的图模型;
根据所述图模型查找所述待识别变异体的多条传播路径;
通过查找所述多条传播路径中是否有输出所述待识别变异体产生的错误状态的传播路径以得到识别结果。
与现有技术相比,本发明实施例的等价变异体识别方法及装置,通过获得待识别变异体的图模型,然后查找所述变异体的传播路径,以进一步地判断是否存在一条路径能够输出所述待识别变异体产生的错误状态的传播路径,从而实现等价变异体的识别,以进一步地方便在测试应用程序的时候能够提高测试效果。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的电子终端的方框示意图。
图2为本发明实施例提供的等价变异体识别方法的流程图。
图3为本发明实施例提供的等价变异体识别方法的步骤S104的流程图。
图4a示出了一个实例中的变异体的程序依赖图。
图4b示出了一个实例中的变异体的程序依赖图。
图5示出了一个实例中的等价变异体识别方法对变异体进行识别的统计示意图。
图6为本发明实施例提供的等价变异体识别装置的功能模块示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如图1所示,是电子终端100的方框示意图。所述电子终端100包括等价变异体识别装置110、存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115、显示单元116。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对电子终端100的结构造成限定。例如,电子终端100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
所述存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115及显示单元116各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述等价变异体识别装置110包括至少一个可以软件或固件(Firmware)的形式存储于所述存储器111中或固化在所述电子终端100的操作***(Operating System,OS)中的软件功能模块。所述处理器113用于执行存储器中存储的可执行模块,例如所述等价变异体识别装置110包括的软件功能模块或计算机程序。
其中,所述存储器111可以是,但不限于,随机存取存储器(Random AccessMemory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(ProgrammableRead-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,EEPROM)等。其中,存储器111用于存储程序,所述处理器113在接收到执行指令后,执行所述程序,本发明实施例任一实施例揭示的过程定义的电子终端100所执行的方法可以应用于处理器113中,或者由处理器113实现。
本实施例中,所述电子终端100中安装安卓(Android)操作***。所述Android操作***存储在所述存储器111中。其中操作***可包括各种用于管理***任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动。
所述处理器113可能是一种集成电路芯片,具有信号的处理能力。上述的处理器113可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述外设接口114将各种输入/输入装置耦合至处理器113以及存储器111。在一些实施例中,外设接口114,处理器113以及存储控制器112可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
所述输入输出单元115用于提供给用户输入数据。所述输入输出单元115可以是,但不限于,鼠标和键盘等。
所述显示单元116在所述电子终端100与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示单元可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器进行计算和处理。
变异测试(mutation testing)是一种基于错误的软件测试方法,通过向待测程序中注入各种微小的语法错误,生成大量被称为变异体的错误程序,用以模拟软件开发过程中出现的真实错误,根据测试集分辨原程序与错误程序的能力来衡量测试集的有效性,如果一个变异体在测试集上的输出与原程序不同,则称该变异体被测试集杀死,否则称该变异体存活。使用变异得分(mutation score)作为衡量测试集有效性的指标,其计算公式如下:
Ms=Mk/(Mt-Me)
其中,Mk代表被测试集杀死的变异体数量,Mt表示生成的全部变异体数量,Me表示等价变异体的数量,等价变异体指那些虽然在语法(也就是文本层面)上与原程序不同,但在语义(也就是功能层面)上与原程序相同的变异体,由于等价变异体在功能上与原程序完全相同,因此在任何测试集上的输出都与原程序相同,即等价变异体在功能上是完全正确的,不能模拟软件开发过程中的任何错误。
如在某次测试过程中,共生成1100个变异体,其中有800个变异体在测试集上的输出结果与原程序不同(被杀死),有300个变异体的输出结果与原程序相同(存活),对于300个存活的变异体存在两种可能的情况:一是测试集不够充分,缺少能够杀死存活变异体的测试用例;二是存活变异体为等价变异体,无法被任何测试用例杀死。因此在计算变异得分前需要在存活的变异体中识别等价变异体,并将其从变异体集合中去除。
等价变异体问题已经成为制约变异测试发展的重要障碍之一,一是等价变异体的存在使测试人员无法精确的计算变异得分,严重影响了测试结果的准确性;二是等价变异体数量巨大且难以识别,极大的提高了测试成本;三是等价变异体的存在严重阻碍了变异测试的自动化运行。本专利针对变异测试中的等价变异体问题,提出了一种基于程序依赖图的自动化等价变异体识别方法,较好地解决了等价变异体的识别问题。
因此,本发明通过以下几个实施例能够对变异体进行识别,具体描述如下。
请参阅图2,是本发明实施例提供的应用于图1所示的电子终端100的等价变异体识别方法的流程图。下面将对图2所示的具体流程进行详细阐述。
步骤S101,获取待识别变异体的源代码。
步骤S102,根据所述源代码生成所述待识别变异体的图模型。
本实施例中,所述步骤S102的步骤包括:根据所述源代码生成所述待识别变异体的程序依赖图。
步骤S103,根据所述图模型查找所述待识别变异体的多条传播路径。
本实施例中,所述步骤S103的步骤包括:获取所述程序依赖图对应的所有数据传播路径及控制传播路径。
所述数据传播路径表示在变异体的程序依赖图中,一条以变异节点为起点,以任意输出节点为终点的路径,其中从变异节点出发的第一条边为关于传播变量的数据依赖边。
所述控制传播路径表示在变异体的程序依赖图中,一条以变异节点为起点,以任意输出节点为终点的路径,其中从变异节点出发的第一条边为控制依赖边。
步骤S104,通过查找所述多条传播路径中是否有输出所述待识别变异体产生的错误状态的传播路径以得到识别结果。
本实施例中,如图3所示,所述步骤S104的步骤包括:步骤S1041和步骤S1042。
步骤S1041,根据所述源代码确定所述待识别变异体的变异节点及该变异节点产生的传播变量。
本实施例中,传播变量表示在变异节点处发生状态变化的变量。
本实施例中,所述步骤S1041包括:将所述待识别变异体与该待识别变异体对应的原程序进行对比确定变异节点及该变异节点产生的传播变量。
步骤S1042,判断所述多条传播路径中是否包括输出所述传播变量引出的变化输出结果,若所述多条传播路径中不存在输出所述传播变量引起的变化输出结果的路径则判定所述待识别变异体为等价变异体。
本实施例中,可以通过对比所述待识别变异体的变异语句变异前和变异后的抽象语法树,能够分析出该变异体中存在哪些传播变量,同时能够判断出变异语句的表达式取值在变异前后是否能够发生变化。
可选地,当变异节点所代表的语句为控制语句时,如果其表达式的取值能够发生变化,则需要在变异体的程序依赖图中,同时搜索数据传播路径和控制传播路径;其他情况下,则仅需要对数据传播路径进行搜索。
下面通过几个实例,对上述实施例进行详细描述。
对于无法被任何测试用例杀死的变异体称为等价变异体,本实例中将变异体的识别问题可以转化为程序依赖图中的路径搜索问题,即判断程序依赖图中是否存在一条路径能够将所述待识别变异体的变异节点产生的错误状态传播至任意的输出节点。
在一个实例中,所述待识别变异体对应的原程序可以是isTriangle程序,具体为:
如图4a所示,图4a示出了一个实例中的变异体的程序依赖图。其中,图4所示的上述实例isTriangle程序的一个变异体的程序依赖图。
上述实例中将S2处的a<=0变异为++a<=0,变异节点为控制语句,传播变量为a,语句表达式的取值发生了变化,因此,上述的变异体同时搜索其数据传播路径和控制传播路径。如图4a所示,数据传播路径为(S2,S4,S5,S6),控制传播路径为(S2,S3,S6),该变异体具有两条传播路径,因此,该变异体的程序依赖图中能够找到能够输出变异节点产生的错误状态的传播路径,因此所述该变异体不是由于缺少依赖关系而产生的等价变异体。
进一步地,所述待识别变异体还可以是通过删除某个节点而产生的变异体。例如,使用变异算子SDL(Statement Deletion)生成变异体时,变异算子SDL会将某一语句完全从程序中删除,在程序依赖图中表现为某一节点及其全部子节点会被删除,由于变异节点被删除,无法在变异体程序依赖图中搜索其传播路径,因此需要对比原程序与变异体的程序依赖图,判断除被删除的节点和入口节点外,还有哪些节点受到了影响。判断的依据是原程序依赖图中,以该节点为终点的边在变异体程序依赖图中被删除,或变异体依赖图中新增加了以该节点为终点的边。在确定了受影响的节点之后,在变异体程序依赖图中搜索这些节点的传播路径作为该变异体的传播路径。
下面为上述变异体对应的原程序中的节点S2被删除后产生的变异体:
图4b展示了使用SDL变异算子将isTriangle程序中的S2删除得到的变异体,对比变异前后的程序依赖图可知,变异后的程序依赖图缺少了一条数据依赖边(S3,S6,result),因此受到影响的节点集合为{S6},该变异体的传播路径为(S6),所以该变异体不是因缺少依赖关系产生的等价变异体。
本发明实施例通过使用程序依赖图查找传播路径,可以有效地避免现有的数据流分析方法存在的两个缺点:(1)在程序中存在两种主要的依赖关系,一是数据依赖关系,二是控制依赖关系,现有的数据流分析方法仅考虑了程序中的数据依赖关系,而没有考虑程序中的控制依赖关系,无法识别因缺少控制依赖关系而产生的等价变异体。(2)现有的数据流分析方法基于固定的数据流模式,一旦程序中存在那些不影响程序输出结果的无效语句时,有可能破坏这些固定的数据流模式,无法对等价变异体进行识别。
申请人为了进一步地验证本专利的技术效果,对本发明实施例提出的方法与现有的数据流分析方法进行了对比实验。本发明实施例提出的基于程序依赖图的等价变异体识别方法能够很好的解决现有数据流分析方法存在的两个主要问题,对于因变异语句与输出语句间缺少依赖关系而产生的等价变异体能够进行较准确的识别,在一些实验实例中本发明实施例所提供的等价变异体识别方法平均可以能够识别70.49%的等价变异体,较现有的数据流分析方法平均提高12.08%,尤其是对于AOIS变异算子产生的等价变异体具有突出的识别能力。
在实验过程中,共产生变异体2574个,其中等价变异体389个,占变异体总量的15.11%,实验结果如表1所示,其中第三列报道了基于数据流模式的方法识别到的等价变异体数量,在本实验中平均能够识别60.41%的等价变异体。第四列报道了使用本发明实施例中的等价变异体识别方法识别到的等价变异体数量,使用本发明实施例中的等价变异体识别方法平均能够识别72.49%的等价变异体;第五列记录了本发明实施例中的等价变异体识别方法相对于基于数据流模式方法的提升,使用本发明实施例中的等价变异体识别方法提出的方法平均能够提高12.08%的等价变异体识别率。
表1:
为进一步分析本发明实施例中的等价变异体识别方法提出的方法是否解决了现有数据流分析方法中存在的问题,根据等价变异体变异算子的种类对等价变异体进行了统计,统计结果如图5所示,对于AOIS和SDL两个变异算子产生的等价变异体,本发明实施例中的等价变异体识别方法提出的方法明显优于现有的数据流分析方法。一方面,对于AOIS变异算子产生的等价变异体,现有的数据流分析方法基于固定的数据流模式,检测变异语句处产生的传播变量在下一次赋值前是否被其他语句引用,如果传播变量在下一次赋值前未被其他任何语句引用,则判定该变异体为等价变异体,因此该方法只能识别传播变量不向后传播的等价变异体,因此当程序中存在一些引用了传播变量但不影响程序输出的语句时,原有的数据模式被打破,从而干扰了等价变异体的识别,而本发明实施例中的等价变异体识别方法提出的方法基于程序依赖图,检测变异语句与输出语句间是否存在依赖关系,即使程序中存在引用了传播变量但不影响程序输出的语句,也不会影响输出语句与变异语句间的依赖关系,因此本发明实施例中的等价变异体识别方法提出的方法不受无效语句的影响;另一方面,对于SDL变异算子产生的等价变异体,现有的数据流分析方法没有考虑程序中存在的控制依赖关系,因此当变异算子删除原程序中的某一条语句时,其无法判断删除的这条语句是否对程序的输出产生影响,因此其无法识别该类等价变异体,而本发明实施例中的等价变异体识别方法提出的方法充分考虑了程序中的数据依赖关系和控制依赖关系,当变异算子删除原程序中的某一条语句时,可以判断该条语句是否与输出语句存在数据依赖关系或控制依赖关系,因此可以很好的识别该类等价变异体。
本发明实施例的等价变异体识别方法,通过获得待识别变异体的图模型,然后查找所述变异体的传播路径,以进一步地判断是否存在一条路径能够输出所述待识别变异体的产生的错误状态的传播路径,从而实现识别变异体,以进一步地方便在测试应用程序的时候能够提高测试效果。
请参阅图6,是本发明实施例提供的图1所示的等价变异体识别装置110的功能模块示意图。本实施例中的等价变异体识别装置110中的各个模块及单元用于执行上述方法实施例中的步骤。所述等价变异体识别装置110包括:获取模块1101、生成模1102、查找模块1103以及识别模块1104。
所述获取模块1101,用于获取待识别变异体的源代码。
所述生成模块1102,用于根据所述源代码生成所述待识别变异体的图模型。
所述查找模块1103,用于根据所述图模型查找所述待识别变异体的多条传播路径。
所述识别模块1104,用于通过查找所述多条传播路径中是否有输出所述待识别变异体产生的错误状态的传播路径以得到识别结果。
本实施例中,所述生成模块1102,还用于根据所述源代码生成所述待识别变异体的程序依赖图。
本实施例中,所述查找模块1103还用于获取所述程序依赖图对应的所有数据传播路径及控制传播路径。
本实施例中,所述识别模块1104包括:确定单元及判断单元。
所述确定单元,用于根据所述源代码确定所述待识别变异体的变异节点及该变异节点产生的传播变量。
所述判断单元,用于判断所述多条传播路径中是否包括输出所述传播变量引出的变化输出结果,若所述多条传播路径中不存在输出所述传播变量引起的变化输出结果的路径则判定所述待识别变异体为等价变异体。
本实施例中,所述确定单元还用于将所述待识别变异体与该待识别变异体对应的原程序进行对比确定变异节点及该变异节点产生的传播变量。
关于本实施例的其它细节可以进一步地参考上述方法实施例中的描述。
本发明实施例的等价变异体识别装置,通过获得待识别变异体的图模型,然后查找所述变异体的传播路径,以进一步地判断是否存在一条路径能够输出所述待识别变异体的产生的错误状态的传播路径,从而实现识别变异体,以进一步地方便在测试应用程序的时候能够提高测试效果。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种等价变异体识别方法,其特征在于,包括:
获取待识别变异体的源代码;
根据所述源代码生成所述待识别变异体的图模型;
根据所述图模型查找所述待识别变异体的多条传播路径;
根据所述源代码确定所述待识别变异体的变异节点及该变异节点产生的传播变量;
判断所述多条传播路径中是否包括输出所述传播变量引出的变化输出结果,若所述多条传播路径中不存在输出所述传播变量引起的变化输出结果的路径则判定所述待识别变异体为等价变异体。
2.如权利要求1所述的等价变异体识别方法,其特征在于,所述根据所述源代码生成所述待识别变异体的图模型的步骤包括:
根据所述源代码生成所述待识别变异体的程序依赖图。
3.如权利要求2所述的等价变异体识别方法,其特征在于,所述根据所述图模型查找所述待识别变异体的多条传播路径的步骤包括:
获取所述程序依赖图对应的所有数据传播路径及控制传播路径。
4.如权利要求1所述的等价变异体识别方法,其特征在于,所述根据所述源代码确定所述待识别变异体的变异节点及该变异节点产生的传播变量的步骤包括:
将所述待识别变异体与该待识别变异体对应的原程序进行对比确定变异节点及该变异节点产生的传播变量。
5.一种等价变异体识别装置,其特征在于,包括:
获取模块,用于获取待识别变异体的源代码;
生成模块,用于根据所述源代码生成所述待识别变异体的图模型;
查找模块,用于根据所述图模型查找所述待识别变异体的多条传播路径;
识别模块,用于通过查找所述多条传播路径中是否有输出所述待识别变异体产生的错误状态的传播路径以得到识别结果;
其中,所述识别模块包括:确定单元和判断单元;
所述确定单元,用于根据所述源代码确定所述待识别变异体的变异节点及该变异节点产生的传播变量;
所述判断单元,用于判断所述多条传播路径中是否包括输出所述传播变量引出的变化输出结果,若所述多条传播路径中不存在输出所述传播变量引起的变化输出结果的路径则判定所述待识别变异体为等价变异体。
6.如权利要求5所述的等价变异体识别装置,其特征在于,所述生成模块,还用于根据所述源代码生成所述待识别变异体的程序依赖图。
7.如权利要求6所述的等价变异体识别装置,其特征在于,所述查找模块还用于获取所述程序依赖图对应的所有数据传播路径及控制传播路径。
8.如权利要求5所述的等价变异体识别装置,其特征在于,所述确定单元还用于将所述待识别变异体与该待识别变异体对应的原程序进行对比确定变异节点及该变异节点产生的传播变量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810359665.XA CN108509347B (zh) | 2018-04-20 | 2018-04-20 | 等价变异体识别方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810359665.XA CN108509347B (zh) | 2018-04-20 | 2018-04-20 | 等价变异体识别方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108509347A CN108509347A (zh) | 2018-09-07 |
CN108509347B true CN108509347B (zh) | 2020-10-02 |
Family
ID=63383185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810359665.XA Expired - Fee Related CN108509347B (zh) | 2018-04-20 | 2018-04-20 | 等价变异体识别方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108509347B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116841899A (zh) * | 2023-07-12 | 2023-10-03 | 深圳大学 | 一种基于测试用例优化的程序变异测试方法及*** |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2553581A1 (en) * | 2010-03-26 | 2013-02-06 | Telcordia Technologies, Inc. | Detection of global metamorphic malware variants using control and data flow analysis |
CN103559122B (zh) * | 2013-10-14 | 2016-04-27 | 西安交通大学 | 基于程序行为切片的测试案例约减方法 |
CN107247663B (zh) * | 2017-05-11 | 2020-05-08 | 北京科技大学 | 一种冗余变异体识别方法 |
-
2018
- 2018-04-20 CN CN201810359665.XA patent/CN108509347B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN108509347A (zh) | 2018-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109062809B (zh) | 一种线上测试用例生成方法、装置及电子设备 | |
US9798648B2 (en) | Transitive source code violation matching and attribution | |
CN109062794B (zh) | 一种软件测评结果的确定方法、装置及电子设备 | |
Ocariza et al. | An empirical study of client-side JavaScript bugs | |
US10761963B2 (en) | Object monitoring in code debugging | |
US10423624B2 (en) | Event log analysis | |
US9612937B2 (en) | Determining relevant events in source code analysis | |
US9430359B1 (en) | Identifying and resolving software issues | |
US20160062765A1 (en) | Identifying semantic differences between source code versions | |
US9639453B2 (en) | Method and system for determining functional tests to execute based on code coverage | |
US9135146B1 (en) | Identifying and resolving software issues | |
Avgustinov et al. | Tracking static analysis violations over time to capture developer characteristics | |
US9195730B2 (en) | Verifying correctness of a database system via extended access paths | |
CN111309586B (zh) | 一种命令测试方法、装置及其存储介质 | |
CN109446066B (zh) | C/c++程序中不可达代码的静态检测方法及*** | |
US20170004188A1 (en) | Apparatus and Method for Graphically Displaying Transaction Logs | |
US10089213B1 (en) | Identifying and resolving software issues | |
CN108509347B (zh) | 等价变异体识别方法及装置 | |
CN112306568A (zh) | 服务实例配置方法、装置、电子设备及存储介质 | |
CN108763092B (zh) | 一种基于交叉验证的代码缺陷检测方法及装置 | |
CN111563094A (zh) | 一种数据查询方法及装置、电子设备、计算机可读存储介质 | |
CN112631852B (zh) | 宏检查方法、装置、电子设备和计算机可读存储介质 | |
CN111427874B (zh) | 医疗数据生产的质控方法、装置以及电子设备 | |
CN111736848A (zh) | 包冲突定位方法、装置、电子设备及可读存储介质 | |
US7650579B2 (en) | Model correspondence method and device |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20201002 Termination date: 20210420 |