|
|
51CTO旗下网站
|
|
移动端

2.3.4 一元化分与多元化分

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

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

2.3.4 一元化分与多元化分

对软件输入域进行等价类划分有很多种方法。这里,将讨论两种最普通的等价类划分方法,并指出其各自的优缺点,后面的章节还将提供这两种方法的应用实例。我们将重点关注具有两个或两个以上输入变量的程序。

输入域划分方法之一是每次只考虑一个输入变量,这样,每个输入变量形成了对输入域的一个划分,我们称这种划分方式为一元等价类划分,简称一元化分。在这种情况下,针对每个变量的输入域存在一种关系R;程序的输入域就是基于R进行划分的;有多少个变量,就形成多少种划分,每个划分包含两个或两个以上的等价类。

另一种输入域划分方法是将所有输入变量的笛卡儿积视为程序的输入域I,并定义I上的关系R。该方法只产生一个划分,划分包含若干个等价类。我们称这种划分方法为多元等价类划分,简称多元化分。

测试用例的选择通常使用一元化分,因为一元化分较为简便且可量测(scalability)。而多元化分所产生的等价类数量较大,有时非常庞大,人工管理大量等价类是极其困难的事。而且使用多元划分生成的等价类中有很多是没有用的,即从该等价类中选择的测试用例不能满足输入变量之间的约束关系。尽管如此,正如下一节将要介绍的那样,采用多元划分生成的等价类还是提供了更多的测试集。下面的例子说明一元划分和多元化分。

例2.7假设某软件的输入为整型数据x和y,其取值范围分别为3≤x≤7和5≤y≤9。对于一元化分,使用表2-1和表2-2中的原则对x、y进行划分,产生了6个等价类:

E1:x<3E2:3≤x≤7E3:x>7

E4:y<5  E5:5≤y≤9  E6:y>9

图2-4a、b表示了x和y各自的输入域划分。分别用X、Y表示变量x、y各自所有可能取值构成的集合,若将X和Y的笛卡儿积视为软件的输入域,则可得到下面的9个等价类(如图2-4c所示):E1:x<3,y<5E2:x<3,5≤y<9E3:x<3,y>9

E4:3≤x≤7,y<5   E5:3≤x≤7,5≤y≤9  E6:3≤x≤7,y>9

E7:x>7,y<5   E8:x>7,5≤y≤9   E9:x>7,y>9

从测试用例选择的角度看,两个一元化分可得到6个测试用例,每个用例对应于一个等价类;而使用多元化分则可得到9个测试用例。这两个测试用例集,哪个故障检测能力更强,取决于软件的具体类型。

 
(点击查看大图)图2-4
采用多元化分方法得到的测试用例,往往比采用一元化方法得到的测试用例更能充分地测试被测软件。但是另一方面,采用多元化分方法产生的等价类数量会随输入变量个数的增加而成指数增长(参见练习2.8、2.9、2.10和2.11)。
【责任编辑:云霞 TEL:(010)68476606】

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

读 书 +更多

Fedora Core 5 Linux架站与网管

Linux出色的网络功能堪称当今操作系统中的佼佼者,无论在功能还是在支持能力上都有令人满意的表现。Linux内置的多个服务器,几乎包含了目前...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊