CN103559135B - 系统故障模式确定的方法及装置 - Google Patents

系统故障模式确定的方法及装置 Download PDF

Info

Publication number
CN103559135B
CN103559135B CN201310572384.XA CN201310572384A CN103559135B CN 103559135 B CN103559135 B CN 103559135B CN 201310572384 A CN201310572384 A CN 201310572384A CN 103559135 B CN103559135 B CN 103559135B
Authority
CN
China
Prior art keywords
test
pattern
mode
fault
fault mode
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
Application number
CN201310572384.XA
Other languages
English (en)
Other versions
CN103559135A (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 University
Original Assignee
Nanjing 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 Nanjing University filed Critical Nanjing University
Priority to CN201310572384.XA priority Critical patent/CN103559135B/zh
Publication of CN103559135A publication Critical patent/CN103559135A/zh
Application granted granted Critical
Publication of CN103559135B publication Critical patent/CN103559135B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种系统故障模式确定的方法及装置。其中方法包括如下步骤:以待测系统中的故障测试用例作为初始节点,建立故障模式关系树;标记故障模式关系树中的故障模式及健康模式,得到第一故障模式关系树;选取第一故障模式关系树中模式状态未确定的一模式作为待测模式;以待测模式为基础构建第一额外的完整的测试用例,并进行测试,得到第一测试结果;根据第一测试结果标记相关模式的状态,得到第二故障模式关系树;将第二故障模式关系树作为新的第一故障模式关系树,返回待测模式选取步骤,直至标记完故障模式关系中所有模式的状态;确定包含测试参数最少的故障模式为待测试系统的最小故障模式。其不受故障模式维度限制,故障模式确定准确。

Description

系统故障模式确定的方法及装置
技术领域
本发明涉及测试领域,尤其涉及一种系统故障模式确定的方法及装置。
背景技术
故障模式,即引发系统故障的特定的参数或因素配置选项组合,是组合测试中需要检测的关键要素。现有关于组合测试的研究大多集中在对于软件系统中的故障模式的发现,对于如何定位这种故障模式的研究比较少。且传统研究故障模式确定的方法一般受故障模式的维度、个数等因素的限制。在实际的系统测试中,发现故障模式只是测试过程中的第一步,而只有定位出引发故障的特定故障模式才能够进一步了解和分析出故障的根源,从而能够改进系统。
综上所述,寻求一种受附加条件限制少且能准确确定系统故障模式的方法是一个亟待解决的问题。
发明内容
基于此,本发明提出了一种不受附加条件限制,且能够准确确定系统故障模式的方法及装置。
为实现本发明目的提供的一种系统故障模式确定的方法,包括以下步骤:
S100,以待测系统中的故障测试用例作为初始节点,建立待测系统的故障模式关系树,多个模式之间构成测试路径;
S200,标记所述故障模式关系树中的故障模式及健康模式,得到第一故障模式关系树;
S300,选取所述第一故障模式关系树中模式状态未确定的一模式作为待测模式;
S400,以所述待测模式为基础构建第一额外的完整的测试用例,并测试所述第一额外的完整的测试用例,得到第一测试结果;
S500,根据所述第一测试结果标记所述故障模式关系树中的相关模式的状态,得到第二故障模式关系树;
S600,将所述第二故障模式关系树作为新的第一故障模式关系树,返回执行步骤S300,直至标记完所述故障模式关系中所有模式的状态;
S700,根据所做标记,确定没有更小故障子模式的所述故障模式为所述待测试系统的最小故障模式;
所述额外的完整的测试用例是除了所包含的待测模式,其余参数取值不同于所述初始节点的测试用例。
在其中一个实施例中,还包括以下步骤:
S800,根据所述最小故障模式,构建第二额外的完整的测试用例,并测试所述第二额外的完整的测试用例,得到第二测试结果;
S900,根据所述第二测试结果,当所述第二额外的完整的测试用例测试失败,则所述最小故障模式为系统的最小故障模式;
S1000,根据所述第二测试结果,当所述第二额外的完整的测试用例测试成功,则将所述最小故障模式标记为健康模式,并将所述最小故障模式的除所述初始节点以外的父模式还原为状态未知模式,并返回执行步骤S300。
在其中一个实施例中,步骤S300包括以下步骤:
S310,判断当前测试路径中是否存在状态未确定的模式;
S320,当前测试路径中存在状态未确定的模式时,使用二分法从所述状态未确定的模式构成的测试路径中选取一模式作为待测模式;
S330,当前测试路径中不存在状态未确定的模式时,选取所述第一故障模式关系树中模式状态未确定的模式构成的最长路径,并使用二分法选取所述最长路径中的中间节点作为待测模式。
在其中一个实施例中,步骤S500包括以下步骤:
S510,当所述第一测试结果为成功时,标记所述待测模式及所述待测模式的所有子模式为健康模式,得到第二故障模式关系树;
S510’,当所述第一测试结果为失败时,标记所述待测模式及所述待测模式的所有父模式为故障模式,得到第二故障模式关系树。
在其中一个实施例中,采用二分法选取待测模式时,当所述测试路径中模式的个数为偶数时,选取所述测试路径中中间的两个模式中的任意一个作为待测模式。
基于同一发明构思的一种系统故障模式确定的装置,包括关系树建立模块,第一标记模块,待测模式确定模块,第一测试模块,第二标记模块,执行模块,最小模式确定模块,其中:
所述关系树建立模块,用于以待测系统中的故障测试用例作为初始节点,建立待测系统的故障模式关系树,多个模式之间构成测试路径;
所述第一标记模块,用于标记所述故障模式关系树中的故障模式及健康模式,得到第一故障模式关系树;
所述待测模式确定模块,用于选取所述第一故障模式关系树中模式状态未确定的一模式作为待测模式;
所述第一测试模块,用于以所述待测模式为基础构建第一额外的完整的测试用例,并测试所述第一额外的完整的测试用例,得到第一测试结果;
所述第二标记模块,用于根据所述第一测试结果标记所述故障模式关系树中的相关模式的状态,得到第二故障模式关系树;
所述执行模块,用于将所述第二故障模式关系树作为新的第一故障模式关系树,转所述待测模式确定模块,并顺序执行所述第一测试模块、第二标记模块,直至标记完所述故障模式关系中所有模式的状态;
所述最小模式确定模块,用于根据所做标记,确定没有更小故障子模式的所述故障模式为所述待测试系统的最小故障模式;
所述额外的完整的测试用例是除了所包含的待测模式,其余参数取值不同于所述初始节点的测试用例。
在其中一个实施例中,还包括第二测试模块,结果确定模块,以及重新确认模块,其中:
所述第二测试模块,用于根据所述最小故障模式,构建第二额外的完整的测试用例,并测试所述第二额外的完整的测试用例,得到第二测试结果;
所述结果确定模块,用于根据所述第二测试结果,当所述第二额外的完整的测试用例测试失败,判定所述最小故障模式为系统的最小故障模式;
所述重新确认模块,用于根据所述第二测试结果,当所述第二额外的完整的测试用例测试成功,则将所述最小故障模式标记为健康模式,并将所述最小故障模式的除所述初始节点以外的父模式还原为状态未知模式,并返回所述待测模式确定模块,并顺序执行后续相关模块。
在其中一个实施例中,所述待测模式确定模块包括判断子模块,第一执行子模块,以及第二执行子模块,其中:
所述判断子模块,用于判断当前测试路径中是否存在状态未确定的模式。
所述第一执行子模块,用于当前测试路径中存在状态未确定的模式时,使用二分法从所述状态未确定的模式构成的测试路径中选取一模式作为待测模式;
所述第二执行子模块,用于当前测试路径中不存在状态未确定的模式时,选取所述第一故障模式关系树中模式状态未确定的模式构成的最长路径,并使用二分法选取所述最长路径中的中间节点作为待测模式。
在其中一个实施例中,所述第二标记模块包括健康模式子模块,以及故障模式子模块,其中:
所述健康模式子模块,用于当所述第一测试结果为成功时,标记所述待测模式及所述待测模式的所有子模式为健康模式,得到第二故障模式关系树;
所述故障模式子模块,用于当所述第一测试结果为失败时,标记所述待测模式及所述待测模式的所有父模式为故障模式,得到第二故障模式关系树。
在其中一个系统故障模式确定的装置的实施例中,采用二分法选取待测模式时,当所述测试路径中模式的个数为偶数时,选取所述测试路径中中间的两个模式中的任意一个作为待测模式。
本发明的有益效果包括:本发明提供的一种系统故障模式确定的方法及装置,通过故障模式关系树对失败的测试用例中的各参数之间的组合进行分析,分层次对各模式进行测试,并标记模式是否为健康模式或者为故障模式。根据最终标定的故障模式关系树确定测试系统的最小故障模式。此方法可准确确定测试系统的最小故障模式。故障模式关系树中涵盖了所有的维度,因此,此方法不受系统故障模式维度的限制,并能够同时确定测试系统中的多个最小故障模式。
附图说明
图1为本发明一种系统故障模式确定的方法的一具体实施例中故障测试用例(2,2,3,1)的故障模式树示意图;
图2为本发明一种系统故障模式确定的方法的一具体实施例的流程图;
图3为本发明一种系统故障模式确定的方法的另一具体实施例的流程图;
图4至图9为本发明一种系统故障模式确定的方法的又一具体实施例的各步骤故障模式关系树示意图;
图10至图20为本发明一种系统故障模式确定的方法的再一具体实施例的各步骤故障模式关系树示意图;
图21为本发明一种系统故障模式确定的装置的一具体实施例的系统结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明实施例的系统故障模式确定的方法及装置的具体实施方式进行说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
首先对实施例中可能涉及的一些定义做如下说明:
待测系统(SystemUnderTest,SUT):设其有n个参数ci(i=1,2,..n),每个参数ci的可选值是一个有限集Vi,|Vi|=ai,设a1>a2>…>an
例如,如一个网页应用可能受到操作系统、网络带宽、浏览器、音频解码器的影响,其参数的可取的值如下表,那么可以将此应用建模成具有4个参数,每个参数有三个取值的SUT。
表1:一个SUT配置表实例
测试用例:称由系统n个参数的具体赋值序列(v1,v2,…vn)(v1∈V1,v2∈V2,…vn∈Vn)为待测系统SUT的一个测试用例。
例如(windows,200M,chrome,AC3Filter)就是上述待测系统的测试用例。
模式:对于待测系统SUT,取某k个参数赋予特定值而形成的组合[-,…,vL1,-,…vLk,…]为k值模式(k>0),不引起混淆的情况下简称为模式,其中‘-’表示此处参数的取值待定。例如[MacOS,-,Chrome,-]就是一个2值模式。
故障模式与健康模式:称一个k值模式为故障模式,当且仅当任何包含此模式的测试用例都会触发故障。相反,若存在至少一条测试用例包含此模式且通过测试,就称此k值模式为健康模式。
举个例子,对于模式[-,200M,-,-],如果所有包含此模式的测试用例都会出错,即(Windows,200M,Firefox,AC3Filter)、(Ubuntu,200M,Chorme,MPEGLayer-3)等等都没有通过测试,那么[-,200M,-,-]就是故障模式。同样的,若对于模式[-,200M,-,-],发现了一条测试用例如(Windows,200M,Chrome,AC3Filter)通过测试的话,那么[-,200M,-,-]就是健康模式。
故障模式关系树:以一个测试不通过,即故障的测试用例,为初始节点的模式之间的图形式的关系列表。
例如对于某一故障测试用例(2,2,3,1)的故障模式关系树如图1所示。图中由线段相连接的模式组构成测试路径,如如[2231]->[223-]->[22--]->[2---]就是一条路径。
子模式和父模式:设TupleA为m值模式,TupleB为k值模式,有m>k,并且所有TupleB中的元素也都在TupleA中,那么称TupleA为TupleB的父模式,TupleB为TupleA的子模式,表示成“”,如果m=k+1,那么这两个模式是直系关系。
如模式[MacOS,50M,Chrome,-]为模式[MacOS,-,-,-]的父模式,而模式[MacOS,50M,Chrome,-]为模式[MacOS,-,Chrome,-]的直系父模式。
最小故障模式:一个模式如果是故障模式,并且其所有子模式都是健康模式,那么就称此模式为最小故障模式。
如[Windows,200M,-,AC3Filter]为最小故障模式的条件为:本身为故障模式,而其子模式[Windows,200M,-,-]、[Windows,-,-,AC3Filter]、[-,200M,-,AC3Filter]、[Windows,-,-,-]、[-,200M,-,-]、[-,-,-,AC3Filter]都为健康模式。
本发明一实施例的一种系统故障模式确定的方法,如图2所示,包括以下步骤:
S100,以待测系统中的故障测试用例作为初始节点,建立待测系统的故障模式关系树,多个模式之间构成测试路径。
S200,标记所述故障模式关系树中的故障模式及健康模式,得到第一故障模式关系树。使用故障测试用例构建故障模式关系树,可以确定所述故障测试用例构成的初始节点为故障模式。同时,如果还存在可以参考的系统正常运转的成功的测试用例,可参考所述成功的测试用例对故障模式关系树中的可确定为健康模式的模式标记为健康模式。
S300,选取所述第一故障模式关系树中模式状态未确定的一模式作为待测模式。对所述故障模式关系树中的模式的状态进行标记之后,则在所述故障模式关系树中有状态已经确定的模式也有状态还没有确定的模式,在模式状态没有确定的模式中进行选择。
S400,以所述待测模式为基础构建第一额外的完整的测试用例,并测试所述第一额外的完整的测试用例,得到第一测试结果。所述额外的完整的测试用例是除了所包含的待测模式,其余参数取值不同于所述初始节点的测试用例。根据所述待测模式构建包含所述模式中的参数的额外的完整测试用例。应用所述完整的测试用例对系统进行测试,得到系统是否能够正常运转的测试结果。
S500,根据所述第一测试结果标记所述故障模式关系树中的相关模式的状态,得到第二故障模式关系树;
S600,将所述第二故障模式关系树作为新的第一故障模式关系树,返回执行步骤S300,直至标记完所述故障模式关系中所有模式的状态;
S700,根据所做标记,确定没有更小故障子模式的所述故障模式为所述待测试系统的最小故障模式;
本发明实施例的系统故障模式确定的方法,通过故障模式关系树对失败的测试用例中的各参数之间的组合进行分析,分层次对各模式进行测试,并标记模式是否为健康模式或者为故障模式。根据最终标定的故障模式关系树确定测试系统的最小故障模式。此方法可准确确定测试系统的最小故障模式。故障模式关系树中涵盖了所有的维度,因此,此方法不受系统故障模式维度的限制,并能够同时确定测试系统中的多个最小故障模式。
在其中一个实施例中,如图3所示,还包括以下步骤:
S800,根据所述最小故障模式,构建第二额外的完整的测试用例,并测试所述第二额外的完整的测试用例,得到第二测试结果。利用故障模式关系树中的模式包含的参数,结合任意选择的其他参数作为测试用例对系统进行测试。与所述测试第一额外的完整的测试用例相同,得到测试用例是否能够使系统正常运转。
S900,根据所述第二测试结果,当所述第二额外的完整的测试用例测试失败,则所述最小故障模式为系统的最小故障模式。
S1000,根据所述第二测试结果,当所述第二额外的完整的测试用例测试成功,则将所述最小故障模式标记为健康模式,并将所述最小故障模式的除所述初始节点以外的父模式还原为状态未知模式,并返回执行步骤S300。这是因为如果测试成功,系统可以无故障运行,那么就说明此模式为健康模式,这意味着之前在判断此模式为故障模式时引入了新的故障,同时之前判断其所有的父模式为故障状态的理由:此模式为故障模式的理由也就不成立了,那么就要将其所有的父模式设为未知状态。然后重新挑选未被确定的最长路径,按照故障模式定位方法的步骤进行下去。
本发明实施例对已经生成的最小故障模式进行验证,可有效减少由生成的额外的完整的测试用例引入的故障对最小故障模式的定位产生的影响。
在其中一个实施例中,步骤S300包括以下步骤:
S310,判断当前测试路径中是否存在状态未确定的模式。
此处需要说明的是,在首次确定待测模式时,并没有所述的当前测试路径,则此时认为没有当前路径存在,因此也不存在当前路径中状态未确定的模式。
S320,当前测试路径中存在状态未确定的模式时,使用二分法从所述状态未确定的模式构成的测试路径中选取一模式作为待测模式。所述二分法是指将所述测试路径中的模式进行平均分割,选取中间位置的模式。
S330,当前测试路径中不存在状态未确定的模式时,选取所述第一故障模式关系树中模式状态未确定的模式构成的最长路径,并使用二分法选取所述最长路径中的中间节点作为待测模式。
本发明实施例,通过首先确定当前路径中的状态未确定的模式,可在有效保证故障模式关系树中的所有模式都被有效的标记,且此方法简便易懂,效率高。采用二分法搜索路径中的待测模式,可有效提高整个方法的效率。
在其他实施例中,也可采用利用故障模式关系树进行广度搜索或者深度搜索的方式确定待测模式。
在其他实施例中,也可直接采用直接确定第一故障关系树模型中状态未确定的模式之间构成的最长路径的方式确定待测模式,并不断循环执行直至完全标记故障关系树中模式的状态。
在其中一个实施例中,步骤S500包括以下步骤:
S510,当所述第一测试结果为成功时,标记所述待测模式及所述待测模式的所有子模式为健康模式,得到第二故障模式关系树。根据健康模式的定义可知,若某一模式为健康模式,则其所有子模式都为健康模式,因此,当确定一模式为健康模式后则可标记其及其子模式为健康模式。
S510’,当所述第一测试结果为失败时,标记所述待测模式及所述待测模式的所有父模式为故障模式,得到第二故障模式关系树。和健康模式类似,当确定一模式为故障模式后,则可确定其父模式都为故障模式,因此,则标记其及其父模式为故障模式。
本发明实施例采用的标记的方法准确,且效率高。
在其中一个实施例中,采用二分法选取待测模式时,当所述测试路径中模式的个数为偶数时,选取所述测试路径中中间的两个模式中的任意一个作为待测模式。
为更好的说明本发明,下面举具体的例子进行说明。
例一:
假设一SUT受四个参数影响,每个参数可取3个值,为了测试这个系统,生成了一些测试用例,如表2所示。
表2测试用例及其执行结果
如步骤S100,建立失败测试用例的故障模式关系树;
表2中测试用例5(2,2,3,1)在测试过程中失败了。按照故障模式定位流程首先生成模式关系树结构。如图1所示。其中,每个节点代表错误测试用例中的一个模式。有向线段连接的两个节点所表示的模式之间存在直系父子关系,从直系父模式指向直系子模式。可以递归得出模式的父子关系,如图1中模式[223-]是[-2--]的父模式。
如步骤S200,对故障模式关系树中的模式的状态进行标记。
在选取模式进行测试之前,可以根据定义得出根模式[2231]为故障模式,并将其表示为深灰色,然后再根据定义将出现在通过测试的测试用例中的模式设为健康模式,并将其设为浅灰色,它们分别是:[-2--]出现在测试用例1中,[--3-]出现在测试用例3中,经过初始化后,关系树将会演化为图4的形式。
如步骤S300,选取一个待测模式;
从所述故障模式关系树中,选取由未被确定的模式组成路径,因此,路径中不会包含[2231]。选取最长的路径,因此相比[223-]->[22--],选取更长的路径[223-]->[22--]->[2---]作为待挑选的模式组。然后在待挑选的模式组里,用二分法选择中间的模式[22--]作为本次测试的待测模式。
如步骤S400,生成额外的完整的测试用例,并进行测试;
对待测模式,生成额外的测试用例来测试它是故障模式还是健康模式。对模式[22--],生成一条额外的完整的测试用例如:(2212)。然后对其进行测试。
如果(2212)通过,则待测模式[22--]根据定义可以立即看出是健康模式。
如果失败,因为定义故障模式是包含此模式的所有可能的测试用例都失败,因此不能依此就断定此模式为故障模式。不考虑引入故障,即生成的额外测试用例不会引入新的故障,那么因为新生的测试用例失败了,那么只能是由于待测的模式引发的这次失败,这时可以确认这个模式为故障模式。
如步骤S500,根据待测模式构建的测试用例的测试结果对故障模式关系树中的模式的状态进行标记。
如步骤S510’,如果上次测得待测模式为故障模式,那么这次就要将故障关系树中关于这个模式的所有父模式设为故障模式,比如如果[22--]为故障模式,那么故障关系树就演化为如5所示的形式。
如步骤S510,如果上次待测模式为健康模式,那么就要将故障关系树中这个模式的所有子模式设为健康模式,比如[22--]若为健康模式,则故障关系树就演化为图6的形式。
如步骤S700,要返回步骤S300,对更新后的故障模式关系树中的剩下的模式进行判断。
分为两步进行:
如步骤S310要确认一下当前的路径是否已经确定完所有的模式了,假设还没有。如图5中,路径[223-]->[22--]->[2---]中还存在模式[2---],那么就根据二分法继续挑选下一个模式,此时二分法的头结点是[2---],而尾结点也为[2---]那么取“中间”的模式为[2---]为下一个模式。
如步骤S320,如果第一步发现这条路径全被确定,如图7所示,就要重新挑选一条最长的未被确定的路径。如相对于图7,新的最长未被确定路径为:[22–1]->[2--1]->[---1],也就说明还存在未被确定的模式,那么,就重复之前的工序继续选择待测模式、测试、标记状态的流程。直至确定所有模式的状态。
如步骤S700,报告最小故障模式;
如果这个关系树所有模式的状态都已经确定完毕,那么就可以得出最小故障模式了。比如图8可以根据定义得出最小故障模式为[22--]和[-2-1]。
如步骤S800,对得到的最小故障模式进行验证;
如图8所示,对最小故障模式[22--]进行验证,额外生成的完整的测试用例(2222)如果依然失败,则[22--]就是最小故障模式。反之,[22--]是健康模式,那么其父模式[223-]和[22-1]的状态就变成未知,需要进一步进行确认。设测试用例(2222)测试成功,如步骤S1000对其模式状态进行标记之后如图9所示。
同样,验证完模式[22--]后,对另外一个最小故障模式[-2-1]利用相同的方式进行验证。如果所有的最小故障模式都验证完毕,检查故障模式关系图中是否还有模式的状态未知,如图9中由于经过验证后还有[223-],[22-1]两个模式的状态未知,那么回到步骤S300,选择最长未被测试路径[223-],然后挑选中间的模式[223-],并依此执行后续步骤。
例二:
给定函数foo(inta,intb,intc,intd),程序片段如下所示,
foo的输入有四个整数参数组成,每个参数的取值如下:a:{0,1},b:{0,1},c:{0,1,2},d:{0,1,2,3}。这个函数在第10行出现错误,少了一个加号,正确的语句应该是被注释掉的第8行。
通过静态的代码审查发现,如果要达到这个错误语句,那么必须首先要使得a=0,然后使得c=0或者d=3就可,即故障模式为:(0-0-)和(0--3)。
然而,在黑盒测试过程中,无法观测到源代码,而是只能根据执行结果判断程序的失败或通过,那么如何定位出故障的模式呢?
下面应用上述方法进行的故障模式查找及验证。
假设生成的测试用例及相应的测试结果如下表3所示:
表3函数foo的测试用例及其执行情况
对失败的测试用例4:(0102),如步骤100,构造如图10所示的故障模式关系树:
然后根据表3中测试用例执行情况,如步骤S200,标记其中的故障模式和健康模式,首先根据定义根节点为故障模式,此外[-1--]出现在测试用例1中,而[---2]出现在测试用例2和3中,[--0-]和[--02]出现在测试用例3中,因为测试用例1,2,3都通过了测试,因此这些模式都为健康模式,将关系树演化为如下图11所示。
从图11中得到最长未被确定路径[010-]->[01--]->[0---],二分法挑选中间的[01--]来测试,生成测试用例(0113),测试发现失败(注意因为这里引入了新的故障[0--3]导致了测试用例失败,但由于事先并不知道引入了故障因此这里误认为[01--]为故障模式)。然后故障模式关系树就演变为图12所示:
挑选模式[0---],生成额外测试用例(0013)(此过程同样引入了新的故障,误将[0---]认为是故障模式),测试失败,故障模式关系树树演变为如图13所示形式。
如步骤S300,此时发现路径[010-]->[01--]->[0---]中所有模式都已经被确定,需要另选一条最长未被确定路径,如[-102]->[-1-2]。同样的这时候选择模式[-102],并生成测试用例(1102),执行结果通过,故障模式关系树就演化为如图14所示的形式。
如步骤S700此时发现所有的模式都已经被确认完毕,得出故障模式为[0---]。然后就进入到算法的验证步骤,如步骤S800—步骤S1000,对于故障模式[0---],额外生成测试用例(0020),发现通过了测试,这时模式[0---]应为健康模式,从而说明了之前的定位过程引入了新的故障(可以肯定的是在测试模式[0---]的测试用例(0013)必然引入了新的故障),因此将[0---]设为健康模式,并将其所有的父模式(除根节点外)设为未知状态,如图15所示。
此时故障模式关系树出现了未被确定的模式,要重新生成未被确定路径:[010-]->[01--],挑选模式[01--],生成测试用例(0110),通过测试,故障模式关系树就演化为如图16所示。
以下只简略描述过程。挑选模式[010-],生成测试用例(0100),失败,如图17所示。
挑选最长路径[01-2]->[0--2],挑选[01-2],生成测试用例(0112),测试通过,得到标记后的故障模式关系树,如图18所示。
挑选最路径[0-02]->[0-0-],挑选[0-02],生成测试用例(0002),测试失败,标记后的故障模式关系树如图19所示。
选择[0-0-],生成额外测试用例(0000),测试失败,标记后的故障模式关系树如图20所示。
经过这一轮重新得到了最小故障模式:[0-0-],根据算法继续验证这个模式是否为最小故障模式,对[0-0-]生成额外的测试用例(0001)发现还是失败,那么就可以认为[0-0-]就是最小故障模式,算法就结束,最终得出最小故障模式就是:[0-0-]。
此处需要说明的是:得出结论(0102)中的最小故障模式应该为[0-0-],而由于发现定位过程中测试用例(0013)引入了新的故障,可以再次利用算法流程对失败的测试用例(0013)进行定位分析,可以分析出其中引入的新故障模式[0--3],这样通过算法定位出来的结论就和静态分析的结果一致。
本发明实施例能够罗列出一条失败测试用例中所有的模式,并都确认完毕,能够定位出有重叠的故障模式,并且能够处理引入的新故障的情况。对系统故障模式的确定具有重要意义。
基于同一发明构思,本发明实施例提供一种系统故障模式确定的装置,由于此装置解决问题的原理与前述一种系统故障模式确定的方法相似,因此,该装置的实施可以按照前述方法的具体步骤实现,重复之处不再赘述。
一种系统故障模式确定的装置,如图21所示,包括关系树建立模块100,第一标记模块200,待测模式确定模块300,第一测试模块400,第二标记模块500,执行模块600,最小模式确定模块700。所述关系树建立模块100,用于以待测系统中的故障测试用例作为初始节点,建立待测系统的故障模式关系树,多个模式之间构成测试路径。所述第一标记模块200,用于标记所述故障模式关系树中的故障模式及健康模式,得到第一故障模式关系树。所述待测模式确定模块300,用于选取所述第一故障模式关系树中模式状态未确定的一模式作为待测模式。所述第一测试模块400,用于以所述待测模式为基础构建第一额外的完整的测试用例,并测试所述第一额外的完整的测试用例,得到第一测试结果。所述额外的完整的测试用例是除了所包含的待测模式,其余参数取值不同于所述初始节点的测试用例。所述第二标记模块500,用于根据所述第一测试结果标记所述故障模式关系树中的相关模式的状态,得到第二故障模式关系树。所述执行模块600,用于将所述第二故障模式关系树作为新的第一故障模式关系树,转所述待测模式确定模块,并顺序执行所述第一测试模块、第二标记模块,直至标记完所述故障模式关系中所有模式的状态。所述最小模式确定模块700,用于根据所做标记,确定没有更小故障子模式的所述故障模式为所述待测试系统的最小故障模式。
本发明实施例的系统故障模式确定的装置,通过故障模式关系树对失败的测试用例中的各参数之间的组合进行分析,分层次对各模式进行测试,并标记模式是否为健康模式或者为故障模式。根据最终标定的故障模式关系树确定测试系统的最小故障模式。此方法可准确确定测试系统的最小故障模式。故障模式关系树中涵盖了所有的维度,因此,此方法不受系统故障模式维度的限制,并能够同时确定测试系统中的多个最小故障模式。
在其中一个系统故障模式确定的装置的实施例中,还包括第二测试模块800,结果确定模块900,以及重新确认模块1000。所述第二测试模块800,用于根据所述最小故障模式,构建第二额外的完整的测试用例,并测试所述第二额外的完整的测试用例,得到第二测试结果。所述结果确定模块900,用于根据所述第二测试结果,当所述第二额外的完整的测试用例测试失败,判定所述最小故障模式为系统的最小故障模式。所述重新确认模块1000,用于根据所述第二测试结果,当所述第二额外的完整的测试用例测试成功,则将所述最小故障模式标记为健康模式,并将所述最小故障模式的除所述初始节点以外的父模式还原为状态未知模式,并返回所述待测模式确定模块,并顺序执行后续相关模块。本发明实施例对已经生成的最小故障模式进行验证,可有效减少由生成的额外的完整的测试用例引的入故障对最小故障模式定位产生的影响。
在其中一个实施例中,所述待测模式确定模块300包括判断子模块310,第一执行子模块320,以及第二执行子模块330。所述判断子模块310,用于判断当前测试路径中是否存在状态未确定的模式。所述第一执行子模块320,用于当前测试路径中存在状态未确定的模式时,使用二分法从所述状态未确定的模式构成的测试路径中选取一模式作为待测模式。所述第二执行子模块330,用于当前测试路径中不存在状态未确定的模式时,选取所述第一故障模式关系树中模式状态未确定的模式构成的最长路径,并使用二分法选取所述最长路径中的中间节点作为待测模式。本发明实施例,通过首先确定当前路径中的状态未确定的模式,可在有效保证故障模式关系树中的所有模式都被有效的标记,且此方法简便易懂,效率高。采用二分法搜索路径中的待测模式,可有效提高整个方法的效率。
在其中一个实施例中,所述第二标记模块500包括健康模式子模块510,以及故障模式子模块520。所述健康模式子模块510,用于当所述第一测试结果为成功时,标记所述待测模式及所述待测模式的所有子模式为健康模式,得到第二故障模式关系树。所述故障模式子模块520,用于当所述第一测试结果为失败时,标记所述待测模式及所述待测模式的所有父模式为故障模式,得到第二故障模式关系树。本发明实施例采用的标记的方法准确,且效率高。
在其中一个系统故障模式确定的装置的实施例中,采用二分法选取待测模式时,当所述测试路径中模式的个数为偶数时,选取所述测试路径中中间的两个模式中的任意一个作为待测模式。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (6)

1.一种系统故障模式确定的方法,其特征在于,包括以下步骤:
S100,以待测系统中的故障测试用例作为初始节点,建立待测系统的故障模式关系树,多个模式之间构成测试路径;
S200,标记所述故障模式关系树中的故障模式及健康模式,得到第一故障模式关系树;
S300,选取所述第一故障模式关系树中模式状态未确定的一模式作为待测模式;
S400,以所述待测模式为基础构建第一额外的完整的测试用例,并测试所述第一额外的完整的测试用例,得到第一测试结果;
S500,根据所述第一测试结果标记所述故障模式关系树中的相关模式的状态,得到第二故障模式关系树;
S600,将所述第二故障模式关系树作为新的第一故障模式关系树,返回执行步骤S300,直至标记完所述故障模式关系树中所有模式的状态;
S700,根据所做标记,确定没有更小故障子模式的所述故障模式为所述待测系统的最小故障模式;
所述额外的完整的测试用例是除了所包含的待测模式,其余参数取值不同于所述初始节点的故障测试用例;
步骤S500包括以下步骤:
S510,当所述第一测试结果为成功时,标记所述待测模式及所述待测模式的所有子模式为健康模式,得到第二故障模式关系树;
S510’,当所述第一测试结果为失败时,标记所述待测模式及所述待测模式的所有父模式为故障模式,得到第二故障模式关系树;
其中,模式为:对于待测系统,取某k个参数赋予特定值而形成的组合[-,…,vL1,-,…vLk,…]为k值模式,k>0,简称为模式,‘-’表示此处参数的取值待定;
子模式和父模式:若TupleA为m值模式,TupleB为k值模式,当m>k,并且所有TupleB中的元素也都在TupleA中时,则称TupleA为TupleB的父模式,TupleB为TupleA的子模式。
2.根据权利要求1所述的系统故障模式确定的方法,其特征在于,还包括以下步骤:
S800,根据所述最小故障模式,构建第二额外的完整的测试用例,并测试所述第二额外的完整的测试用例,得到第二测试结果;
S900,根据所述第二测试结果,当所述第二额外的完整的测试用例测试失败,则所述最小故障模式为系统的最小故障模式;
S1000,根据所述第二测试结果,当所述第二额外的完整的测试用例测试成功,则将所述最小故障模式标记为健康模式,并将所述最小故障模式的除所述初始节点以外的父模式还原为状态未知模式,并返回执行步骤S300。
3.根据权利要求1所述的系统故障模式确定的方法,其特征在于,步骤S300包括以下步骤:
S310,判断当前测试路径中是否存在状态未确定的模式;
S320,当前测试路径中存在状态未确定的模式时,使用二分法从所述状态未确定的模式构成的测试路径中选取一模式作为待测模式;
S330,当前测试路径中不存在状态未确定的模式时,选取所述第一故障模式关系树中模式状态未确定的模式构成的最长路径,并使用二分法选取所述最长路径中的中间节点作为待测模式;
且采用二分法选取待测模式时,当所述测试路径中模式的个数为偶数时,选取所述测试路径中中间的两个模式中的任意一个作为待测模式。
4.一种系统故障模式确定的装置,其特征在于,包括关系树建立模块,第一标记模块,待测模式确定模块,第一测试模块,第二标记模块,执行模块,最小模式确定模块,其中:
所述关系树建立模块,用于以待测系统中的故障测试用例作为初始节点,建立待测系统的故障模式关系树,多个模式之间构成测试路径;
所述第一标记模块,用于标记所述故障模式关系树中的故障模式及健康模式,得到第一故障模式关系树;
所述待测模式确定模块,用于选取所述第一故障模式关系树中模式状态未确定的一模式作为待测模式;
所述第一测试模块,用于以所述待测模式为基础构建第一额外的完整的测试用例,并测试所述第一额外的完整的测试用例,得到第一测试结果;
所述第二标记模块,用于根据所述第一测试结果标记所述故障模式关系树中的相关模式的状态,得到第二故障模式关系树;
所述执行模块,用于将所述第二故障模式关系树作为新的第一故障模式关系树,转所述待测模式确定模块,并顺序执行所述第一测试模块、第二标记模块,直至标记完所述故障模式关系树中所有模式的状态;
所述最小模式确定模块,用于根据所做标记,确定没有更小故障子模式的所述故障模式为所述待测系统的最小故障模式;
所述额外的完整的测试用例是除了所包含的待测模式,其余参数取值不同于所述初始节点的故障测试用例;
所述第二标记模块包括健康模式子模块,以及故障模式子模块,其中:
所述健康模式子模块,用于当所述第一测试结果为成功时,标记所述待测模式及所述待测模式的所有子模式为健康模式,得到第二故障模式关系树;
所述故障模式子模块,用于当所述第一测试结果为失败时,标记所述待测模式及所述待测模式的所有父模式为故障模式,得到第二故障模式关系树;
其中,模式为:对于待测系统,取某k个参数赋予特定值而形成的组合[-,…,vL1,-,…vLk,…]为k值模式,k>0,简称为模式,‘-’表示此处参数的取值待定;
子模式和父模式:若TupleA为m值模式,TupleB为k值模式,当m>k,并且所有TupleB中的元素也都在TupleA中时,则称TupleA为TupleB的父模式,TupleB为TupleA的子模式。
5.根据权利要求4所述的系统故障模式确定的装置,其特征在于,还包括第二测试模块,结果确定模块,以及重新确认模块,其中:
所述第二测试模块,用于根据所述最小故障模式,构建第二额外的完整的测试用例,并测试所述第二额外的完整的测试用例,得到第二测试结果;
所述结果确定模块,用于根据所述第二测试结果,当所述第二额外的完整的测试用例测试失败,判定所述最小故障模式为系统的最小故障模式;
所述重新确认模块,用于根据所述第二测试结果,当所述第二额外的完整的测试用例测试成功,则将所述最小故障模式标记为健康模式,并将所述最小故障模式的除所述初始节点以外的父模式还原为状态未知模式,并返回所述待测模式确定模块,并顺序执行后续相关模块。
6.根据权利要求4所述的系统故障模式确定的装置,其特征在于,所述待测模式确定模块包括判断子模块,第一执行子模块,以及第二执行子模块,其中:
所述判断子模块,用于判断当前测试路径中是否存在状态未确定的模式;
所述第一执行子模块,用于当前测试路径中存在状态未确定的模式时,使用二分法从所述状态未确定的模式构成的测试路径中选取一模式作为待测模式;
所述第二执行子模块,用于当前测试路径中不存在状态未确定的模式时,选取所述第一故障模式关系树中模式状态未确定的模式构成的最长路径,并使用二分法选取所述最长路径中的中间节点作为待测模式;
且采用二分法选取待测模式时,当所述测试路径中模式的个数为偶数时,选取所述测试路径中中间的两个模式中的任意一个作为待测模式。
CN201310572384.XA 2013-11-15 2013-11-15 系统故障模式确定的方法及装置 Expired - Fee Related CN103559135B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310572384.XA CN103559135B (zh) 2013-11-15 2013-11-15 系统故障模式确定的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310572384.XA CN103559135B (zh) 2013-11-15 2013-11-15 系统故障模式确定的方法及装置

Publications (2)

Publication Number Publication Date
CN103559135A CN103559135A (zh) 2014-02-05
CN103559135B true CN103559135B (zh) 2016-03-02

Family

ID=50013386

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310572384.XA Expired - Fee Related CN103559135B (zh) 2013-11-15 2013-11-15 系统故障模式确定的方法及装置

Country Status (1)

Country Link
CN (1) CN103559135B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984357A (zh) * 2018-07-16 2018-12-11 郑州云海信息技术有限公司 一种硬盘定位方法、装置及计算机可读存储介质
CN118170690B (zh) * 2024-05-14 2024-08-20 南京大学 一种基于待定元组的组合测试多故障定位方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101482596A (zh) * 2009-01-06 2009-07-15 南京大学 多因素工业系统的故障快速识别方法
CN102033789A (zh) * 2010-12-03 2011-04-27 北京理工大学 一种用于嵌入式安全关键系统的可靠性分析方法
CN102722722A (zh) * 2012-05-25 2012-10-10 清华大学 基于逻辑推理和故障辨识的混合故障检测诊断方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527441B2 (en) * 2011-03-10 2013-09-03 GM Global Technology Operations LLC Developing fault model from service procedures

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101482596A (zh) * 2009-01-06 2009-07-15 南京大学 多因素工业系统的故障快速识别方法
CN102033789A (zh) * 2010-12-03 2011-04-27 北京理工大学 一种用于嵌入式安全关键系统的可靠性分析方法
CN102722722A (zh) * 2012-05-25 2012-10-10 清华大学 基于逻辑推理和故障辨识的混合故障检测诊断方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种基于组合测试的软件故障诊断方法;聂长海 等;《东南大学学报》;20031130;第33卷(第6期);第681-684页 *

Also Published As

Publication number Publication date
CN103559135A (zh) 2014-02-05

Similar Documents

Publication Publication Date Title
Jan et al. An innovative approach to investigate various software testing techniques and strategies
CN104598383B (zh) 一种基于模式的动态漏洞挖掘集成系统和方法
Khan Different forms of software testing techniques for finding errors
CN104732152B (zh) 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法
CN107038380B (zh) 一种基于程序特征树的漏洞检测方法及系统
US20120185731A1 (en) Precise fault localization
CN104348652A (zh) 基于关联分析的系统安全评估方法和装置
CN104360938A (zh) 一种故障确认方法及其系统
CN104834603A (zh) 一种面向回归测试的控制流变更影响域分析方法和系统
Nguyen et al. Bedivfuzz: Integrating behavioral diversity into generator-based fuzzing
CN109670318A (zh) 一种基于核控制流图循环验证的漏洞检测方法
Bandyopadhyay Mitigating the effect of coincidental correctness in spectrum based fault localization
CN107346391A (zh) 一种生成概念验证数据的方法及系统
CN106649075A (zh) 模糊测试方法和装置
JP6245006B2 (ja) テストケース生成装置、方法、及びプログラム
Bandyopadhyay et al. Tester feedback driven fault localization
CN111832028B (zh) 代码审计方法和装置、电子设备、及介质
CN115098292B (zh) 应用程序崩溃根原因识别方法、装置及电子设备
CN115062570B (zh) 一种形式验证方法、装置、设备及计算机存储介质
CN105468508A (zh) 代码检测方法及装置
Vanciu et al. Hidden dependencies in software systems
CN103559135B (zh) 系统故障模式确定的方法及装置
Jimenez et al. Software vulnerabilities, prevention and detection methods: A review1
CN115952503A (zh) 融合黑白灰安全检测技术的应用安全测试方法及系统
US20100313187A1 (en) Method and system for detecting infeasible paths

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160302

Termination date: 20161115

CF01 Termination of patent right due to non-payment of annual fee