缺陷可以根据发生的位置分为四类:表达式缺陷(Expression)、项缺陷(Term)、词缺陷(Literal)和操作符缺陷(Operator);也可以根据缺陷发生的类型分为四类:取反缺陷(Negation)、插入缺陷(Insertion)、遗漏缺陷(Omission)和引用缺陷(Reference)。下面以表达式S=a+bc+d为例,介绍这几种缺陷:
LIF缺陷:即词插入缺陷(Literal Insertion Fault)。LIF缺陷指的是向表达式中的某一项插入了一个该项中没有出现的词。如原表达式S=a+bc+d发生LIF缺陷,向第一个项a中插入了一个词b,缺陷产生之后的表达式为S’=ab+bc+d。
LRF缺陷:即词引用缺陷(Literal Reference Fault)。LRF缺陷指的是表达式中某一项的某一个词变成了该项中没有出现另一个词。如原表达式S=a+bc+d发生LRF缺陷,第二项bc的第一个词b出现了LRF缺陷变成了a,缺陷发生之后的表达式为S’=a+ac+d。
LOF缺陷:即词遗漏缺陷(Literal Omission Fault)。LOF缺陷指的是表达式中某一项的某一个词被遗漏了。如原表达式S=a+bc+d发生LOF缺陷,第二项bc的第一个词b被遗漏了,缺陷发生之后的表达式为S’=a+c+d。
LNF缺陷:即词取反缺陷(Literal Negation Fault)。LNF缺陷指的是表达式中某一项的某一个词变成了它的否定形式。如原表达式S=a+bc+d发生LNF缺陷,第二项bc的第一个词b变成了否定形式¯b,缺陷发生之后的表达式为S’=a+¯b c+d。
TIF缺陷:即项插入缺陷(Term Insertion Fault)。TIF缺陷是指向表达式中插入了一个项。项插入有两种方式,一种是以与运算的形式插入,记为TIF(∙),例如原表达式S=a+bc+d发生TIF(∙)缺陷,向第一项a通过与运算插入了一个项c¯d,缺陷发生之后的表达式为S’=ac¯d+bc+d;另一种是以或运算的形式插入,记为TIF(+),例如原表达式S=a+bc+d发生TIF(+)缺陷,向表达式中通过或运算插入了一个项c¯d,缺陷发生之后的表达式为S^’=a+bc+d+c¯d。
TRF缺陷:即项引用缺陷(Term Reference Fault)。TRF缺陷是指表达式中的某一项变成了与该项至少有两个词不相同的另外一个项。如原表达式S=a+bc+d发生TRF缺陷,第二项bc出现了TRF缺陷变成了¯a b¯d,缺陷发生之后的表达式为S’=a+¯a b¯d+d。
TOF缺陷:即项遗漏缺陷(Term Omission Fault)。TOF缺陷是指表达式中的某一项发生了遗漏。如原表达式S=a+bc+d发生TOF缺陷,第二项bc被遗漏了,缺陷发生之后的表达式为S’=a+d。
TNF缺陷:即项取反缺陷(Term Negation Fault)。TNF缺陷是指表达式中的某一项变成了该项的否定形式。如原表达式S=a+bc+d发生TNF缺陷,第二项bc变成了否定形式¯bc,缺陷发生之后的表达式为S^’=a+¯bc+d。
EIF缺陷:即表达式插入缺陷(Expression Insertion Fault)。EIF缺陷同TIF缺陷一样有两种情况:一种是新表达式以与运算插入到原表达式中,记作EIF(∙),如原表达式S=a+bc+d发生EIF(∙)缺陷,新表达式S_0=c+¯d以与运算的方式插入到第一项a中,缺陷发生之后的表达式为S’=a(c+¯d)+bc+d;另一种是新表达式以或运算的形式插入到原表达式中,记作EIF(+),如原表达式S=a+bc+d发生EIF(+)缺陷,新表达式S_0=c+¯d以或运算的方式插入到原表达式中,缺陷发生之后的表达式为S^’=a+bc+d+c+¯d。
ERF缺陷:即表达式引用缺陷(Expression Reference Fault)。ERF缺陷是指表达式中的某几个项变成了另外的几个项。如原表达式S=a+bc+d发生ERF缺陷,第一、三项a和d变成了新表达式S_0=c+¯d,缺陷发生之后的表达式为S’=bc+c+¯d。
ENF缺陷:即表达式取反缺陷(Expression Negation Fault)。ENF缺陷是指整个表达式变成了原表达式的否定形式。如原表达式S=a+bc+d发生ENF缺陷,缺陷发生之后的表达式为S’=¯(a+bc+d)。
ORF缺陷:即操作符引用缺陷(Operator Reference Fault)。ORF缺陷分为两种情况:一种是某一项中的操作符与变成了操作符或,记为CORF或ORF(∙),如原表达式S=a+bc+d发生CORF缺陷,第二项bc的操作符与变成了操作符或,变成了b+c,缺陷发生之后的表达式为S’=a+b+c+d;另一种是某两项间的操作符或变成了操作符与,记为DORF或ORF(+),如原表达式S=a+bc+d发生DORF缺陷,第一、二项a和bc之间的操作符或变成了操作符与,变成了abc,缺陷发生之后的表达式为S^’=abc+d。
需要说明的是,一个布尔表达式在缺陷发生的时候,并不一定会影响表达式的取值。比如表达式S=a+b发生了LIF缺陷,变成了S’=ab+b。此时S和S’是等价的,因为两个表达式的布尔值取值情况并没有发生变化,所以这种情况下的缺陷可以忽略。
转载:https://blog.csdn.net/weixin_43258908/article/details/101620310