|
|
|
|
移动端

2.7.1 谓词和布尔表达式

《软件测试基础教程》第2章基于需求的测试生成,本章主要介绍从非形式化或形式化定义的软件需求生成测试集的技术。这些技术,有的可以自动地执行,而大部分则需测试人员付出艰辛的劳动,特别是在测试大型软件时。本章所介绍的大部分测试技术属于黑盒测试,因为生成测试集时不需参考被测软件的源代码。本节为大家介绍谓词和布尔表达式。

作者:王峰/郭长国/陈振华 等译来源:机械工业出版社|2011-09-17 22:59

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

2.7.1 谓词和布尔表达式

设relop表示集合{<,>,≤,≥,=,≠}中的一个关系运算符。设bop表示集合{∧,∨,∨—,﹁}中的一个布尔运算符,其中∧,∨,∨—是二元布尔运算符,一是一元布尔运算符。布尔变量的取值集合为{true,false},对于给定的布尔变量a,﹁a和a都表示a的补。

关系表达式是指形如e1  relop e2的表达式,其中e1和e2取值为有限或无限集合S。可将S中的元素进行排序,从而可以使用任意关系运算符对e2和e1进行比较。

一个条件可以表示成简单谓词或复合谓词。简单谓词就是一个布尔变量或关系表达式,其中变量可以取非。复合谓词可以是一简单谓词,或是由若干简单谓词或其补通过二元布尔运算符连接起来的一个表达式。谓词当中的圆括号表示布尔变量、关系表达式组合。表2-5给出了本小节定义的谓词或其他术语的示例。

表2-5 本节中定义术语的示例

 

布尔表达式是指用布尔运算符连接的一个或多个布尔变量所组成的表达式。换句话说,布尔表达式就是不包含任何关系表达式的谓词。在不影响上下文含义的前提下,可以省略运算符∧,用运算符+代替∨。例如,可以将布尔表达式p∧q∨r∧s写为pq+rs。

注意,项pq可以看作是布尔变量p与q之积;同样,rs是r与s之积。表达式pq+rs指的是项pq与rs的和。假设运算符的优先级顺序为从左至右,且“与”运算优先于“或”运算。

布尔表达式中的布尔变量或变量的非,都是该表达式的文字。例如,p、q、r、p就是表达式p∧q∨r∧p的4个文字。

用布尔变量分别替换谓词pr中的关系表达式,可以将谓词pr转换为布尔表达式。例如,谓词(a+b<c)∧(﹁d)等价于布尔表达式e1∧e2,其中e1=a+b<c,e2=﹁d。

当各变量在布尔表达式中只出现一次时,则称该布尔表达式为奇异的(singular)。考虑布尔表达式E,它包含k个不同的布尔表达式,分别记为e1,e2,...,ek,则有以下等式:

 

对于任意1<(i,j)≤k,i≠j,如果ei、ej没有任何相同的布尔变量,称它们为相互奇异的。称ei是E的一个奇异组件,当且仅当ei是奇异的并且ei与E中另外k-1个组件(即e1,e2,...,ei-1,ei+1,...,ek-1,ek,1≤i≤k)都是相互奇异的;我们称ei是E的一个非奇异组件,当且仅当ei本身是非奇异的并且ei与E中另外k-1个组件都是相互奇异的。

当布尔表达式被表示为积项之和时,称之为析取范式,记为DNF;例如pq+rs就是DNF表达式。当布尔表达式被表示为和项之积时,称之为合取范式,记为CNF;例如(p+r)(p+s)(q+r)(q+s)就是CNF表达式,其等价于pq+rs。需要指出的是,任何布尔表达式CNF都可以转换为与之等价的DNF,反之亦然。

布尔表达式可以表示为抽象语法树,如图2-17所示。将谓词pr的抽象语法树记为AST(pr)。AST(pr)的每个叶结点代表一个布尔变量或一个关系表达式;AST(pr)的内部结点是布尔运算符,比如∧、∨、∨—、﹁,分别被称作AND结点、OR结点、XOR结点、NOT结点。

 



【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

JSP应用开发详解(第二版)

本书结合JSP和Servlet的最新规范,从基本的语法和规范入手,以经验为后盾,以实用为目标,以实例为导向,以实践为指导,深入浅出地讲解了JS...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊