|
|
|
|
移动端

2.7.8 谓词测试实践

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

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

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

2.7.8 谓词测试实践

可以采用谓词测试技术分别从被测软件的需求规范、被测软件的代码中导出测试用例。因此,它可用于生成基于需求规范的测试和基于代码的测试。

1. 基于需求规范的谓词测试设计

通过对软件需求规范的分析,可以得到软件运行的各种具体条件。例如,分析了软件的需求规范后,可能会产生下面的条件列表及其相关任务:

 

该列表可用于为被测软件生成测试集T。注意,将每个条件表示成一个谓词。假设,上表中的对偶(条件,任务)是相互独立的,即每个任务只依赖于与它相对的那个条件。但是,当条件C2依赖于C1,C1为真而C2并不为真时,这个独立性假设就不成立。例如,两个相互依赖的条件C1:a<b;C2:a>b,显然,如果Task1、Task2分别只依赖于条件C1、C2的话,对于特定的输入,只能有一个任务被执行。

由于条件可以是复合的,任务可以同时进行,因此,上述独立性假设并不排除这样需求规范,即当某个条件为真时,同时执行两个任务;若执行某个任务,需要两个条件同时为真。可以将两个任务合并成一个任务,以便对应一个条件;同样,可以将两个条件合并成一个条件,对应于单个任务。

在进行测试设计时,测试人员可以选择一个适当的测试生成算法。针对不同的条件,采用不同的算法。例如,假设条件C2被表示成一个非奇异的谓词,最好选择算法BOR-MI-CSET。

一旦为谓词选定测试生成算法后,测试人员就可产生测试集。把这些测试集合在一起,就得到被测软件的一个综合测试集T。另外,两个不同的条件有可能产生相同的测试集。

对被测软件执行T中的测试用例,就能确保检测出第2.7.2节中列出的那些故障,只要测试用例是从被错误实现的条件当中设计出来的。当然,这种保证只在某些条件下有效。下面的例子说明一个测试集也有失效的时候。

例2.34假设要测试软件X。X的需求规范要求:在条件C1:a<b∧c>d为真时执行任务Task1。例2.27已经导出了对C1的测试用例,并保证能检测出C1中的所有布尔运算符故障。

现在考虑软件X的一个实现,其结构如图2-23所示。语句S1中对条件C1的编码有错误,C1被错误地编码成Cf :a<b∨c>d。我们假设,语句S1是任何测试输入都不能到达的。

假设因为在软件X中错误地增加了一条语句S2,而它本不应存在。语句S2中的条件C=C1∧u,u是输入到软件X的一个布尔变量。假设:当测试软件X正确执行任务Task1时,u的取值为true。

下表中的前三行说明:针对用算法BOR-CSET导出的条件C1的测试集,观察到的X的结果与其预期结果一致;但是,当用u=false以及BOR约束(t,t)进行测试时,错误就被检测出来了。

 

这样,就找到一个实例:用算法BOR-CSET导出的测试用例未能检测出错误。当然,这个例子并不是要否定算法BOR-CSET的故障检测效力,只是想说明:软件当中的某些错误可能掩盖了别处的谓词实现错误。
 
图2-23软件X的一个错误实现

2. 基于代码的谓词测试设计

也可从软件代码中的条件语句中导出测试集,这样得到的测试集通常被称作白盒测试集。当执行白盒测试用例时,测试人员要确保控制流到达了程序的指定区域,即条件语句所在的区域。正如下面的例子将要说明的那样,这可能有些麻烦,因为要使控制流到达程序的指定区域还需要满足其他几个条件。

例2.35考虑下面的程序P2.3,它用两个条件r,e来控制3个任务task1,task2,task3的执行。根据r,e的值,程序决定参数a,b,c,d的值。

假设采用算法BOR-CSET从谓词a<b && c>d生成BOR约束。如果a,b,c,d是程序的输入的话,满足这些约束非常容易。但是,恰恰在此例中,a,b,c,d的值依赖于r,e的值,这样,要满足这些约束就需要判断a,b,c,d与r,e之间的关系。

更进一步讲,测试人员必须确保程序P2.3针对这些约束的测试用例将使程序到达包含该谓词的条件语句,即第9行语句。虽然对本例来说似乎较容易,但在实际测试工作中就未必是这样了。

程序P2.3

 

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

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

读 书 +更多

基于Project2003的项目管理

本书的上一版本《基于Project 2002的项目管理》上市以后得到了读者的欢迎,为了更好地将Project 2003新版本的应用介绍给读者,我们重新进行...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊