|
|
|
|
移动端

2.7.3 谓词约束

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

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

【新品产上线啦】51CTO播客,随时随地,碎片化学习

2.7.3 谓词约束

用BR表示符号集合{t,f,<,=,>,+ε,-ε}。“BR”是布尔和关系(Boolean and Relational)的缩写。集合BR中的元素称为BR符号。

一个BR符号定义了针对某个布尔变量或关系表达式的约束。例如,用符号“+ε”约束表达式E′:e1<e2时,要满足该约束就要求E′的某个测试用例确保0<e1-e2≤ε。同样, 符号“-ε”是对E′的另一个约束,要满足该约束就要求E′的某个测试用例确保-ε≤e1-e2<0。

对于pr中的变量,如果不存在满足约束C的输入取值,则称约束C对谓词pr是无效的(infeasible)。例如,对谓词a>b∧b>d的约束(>,>),要求简单谓词a>b和b>d都为真。但是,如果d>a为真的话,则该约束无效。

例2.22这里举一个简单的约束例子,考虑关系表达式E:a<c+d以及E上的约束C:(=)。当验证E的正确性时,约束C要求测试集至少包含一个测试用例a=c+d。这样,测试用例<a=1,c=0,d=1>满足E上的约束C。

另一个例子,考虑E上的约束C:(+ε ),令ε=1。满足约束C的测试用例要求0<a-(c+d)≤1。因此,测试用例<a=4,c=2,d=1>满足E上的约束(+ε )。

同样,对于布尔表达式E:b,约束“t”要求测试用例将变量b取值为true。

BR符号t和f用于定义布尔变量和布尔表达式的约束;关系表达式上的约束可用<,=,>三个符号来定义。当关系表达式被当作简单布尔变量时,符号t和f也可用于定义关系表达式上的约束。例如,可将表达式pr:a<b视作布尔变量z,此时,可以使用t和f约束pr。

现在,定义对整个谓词的约束,该谓词由布尔变量、关系表达式通过布尔运算符连接而成。

设pr为包含n(n>0)个∧和∨运算符的谓词,pr的谓词约束C是由n+1个BR符号组成的序列,其中每个BR符号分别对应于pr中的某个布尔变量或关系表达式。为方便起见,将谓词约束简称为约束。

对于测试用例t,如果pr的各组件都满足C中相应的约束,称测试用例t满足pr上的约束C。谓词pr上的约束C可有效指导测试集的设计,为pr中变量取值的选取提供了清晰的线索。

例2.23考虑谓词pr:b∧r<s∨u≥v。pr一个可能的BR约束为C:(t,=,>)。C包含的3个约束分别对应于pr的3个组件。约束t应用于b,=应用于r<s,>应用于u≥v。下面的测试用例满足pr的约束C:

  1. <bb=truer=1s=1u=1v=0> 
满足约束C的测试用例还有很多,但是,下面的测试用例不满足pr的约束C:
  1. <bb=truer=1s=1u=1v=2> 

由于pr的最后一个组件是u≥v,致使C中最后一个约束不满足。

给定谓词pr的约束C,任意满足C的测试用例将使pr取值为true或false。用pr(C)表示pr对所有满足约束C的测试用例的取值。将使得pr(C)=true的约束C称为“真”约束,而将使得pr(C)=false的约束C称为“假”约束。这样,就将约束集合S划分为两个子集St和Sf,有S=St∪Sf。其中,对于任意C∈St,有pr(C)=true;对于任意C∈Sf,有pr(C)=false。

例2.24考虑谓词pr:(a<b)∧(c>d)以及pr上的约束C1:(=,>)。所有满足约束C1的测试用例都使pr取值为false,因此,约束C1是“假”约束。考虑pr的另一个约束C2:(<,+ε),其中ε=1。所有满足约束C2的测试用例都使pr取值为true,因此,约束C2是“真”约束。此时,如果S={C1,C2}为pr的约束集合,则有St={C2},Sf={C1}。

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

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

读 书 +更多

非常网管——网络工程案例

本书面向企业网络应用需求,详细介绍了Windows网络互联解决方案、中小企业共享上网解决方案、基于ISA Server 2006的代理服务器与防火墙解决...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊