2.7.4 谓词测试准则
我们最关心的是如何从给定的谓词pr生成测试集T,使其满足:(a) T是最小集合;(b) T保证能够检测出pr实现中存在的符合前文所述故障模型的所有故障。为了获得这样的测试集,定义了三个准则,通常称作BOR、BRO、BRE测试准则。名称BOR、BRO、BRE分别对应于布尔运算符、布尔和关系运算符、布尔和关系表达式。三个准则的形式化定义如下:
对于复合谓词pr,如果测试集T确保能够检测出pr实现中存在的所有单/多布尔运算符故障,则T满足BOR测试准则,称T为BOR充分测试集,记为TBOR。
对于复合谓词pr,如果测试集T确保能够检测出pr实现中存在的所有单/多布尔运算符及关系运算符故障,则T满足BRO测试准则,称T为BRO充分测试集,记为TBRO。
对于复合谓词pr,如果测试集T确保能够检测出pr实现中存在的所有单/多布尔运算符、关系表达式以及算术表达式故障,则T满足BRE测试准则,称T为BRE充分测试集,记为TBRE。
注意,上文中的“单/多故障”和“确保能够检测出”需要仔细揣摩。
设Tx为从谓词pr导出的测试集,其中x∈{BOR,BRO,BRE}。设pf为通过向谓词pr注入单/多故障而得到的另一谓词,注入的故障属于三种类型之一,即布尔运算符故障、关系运算符故障、算术表达式故障。若存在t∈Tx,使得p(t)≠pf(t),则称Tx确保能够检测出pf中的故障。下面的例子说明一个BOR充分测试集示例及其故障检测效力。
例2.25考虑复合谓词pr:ad。设S为pr上的约束集合
下面的测试集T满足约束集合S以及BOR测试准则:
由于T满足BOR测试准则,从而确保能够检测出pr中存在的所有单/多布尔运算符故障。通过针对测试集T,计算pr及其经注入布尔运算符故障后得到的变体的真值,就能验证这一点。
表2-6列出了谓词pr以及经注入单/多布尔运算符故障后得到的7个故障谓词。对于每个谓词,都使用T中的3个测试用例分别进行计算。注意,对于故障谓词,至少存在一个测试用例,使其取值与pr取值不同。
表2-6例2.25中BOR充分测试集对单/多布尔运算符故障的检测能力(故障谓词与谓词pr的计算结果的差异用斜体标识)
很容易验证,如果从表2-6中删去任意一个测试用例,则至少存在一个故障谓词对于剩余的两个测试用例,其真值与谓词pr的真值相同。例如,删去t2,则故障谓词4与谓词pr对于测试用例t1、t3所得结果一致。因此,可以肯定,T是谓词pr的最小且满足BOR充分性的测试集。
练习2.28与上面的例子类似,要求验证所给的两个测试集分别是BRO充分的和BRE充分的。在下一节,将讨论生成BOR、BRO、BRE充分测试用例的算法。
【责任编辑:云霞 TEL:(010)68476606】
点赞 0