|
|
|
|
移动端

2.5 类别划分法(1)

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

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

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

2.5 类别划分法(1)

类别划分法是一种从软件需求生成测试用例的系统化的方法。该方法同时包含手工和自动完成的步骤。这里,将逐一描述使用该方法时的各个步骤,并同步演示一个简单的应用实例。

类别划分法的主要步骤

类别划分法共包括8个步骤,如图2-9所示。类别划分法的本质就是测试人员把软件需求转换为相应的测试规范,其中,测试规范由对应于软件输入变量和环境对象的各种类别构成。

 
图2-9 用类别划分法进行测试的主要步骤,实线矩形框表示的
是需由人工完成的任务。难以自动化;虚线矩形
框表示的是可以自动完成的任务

难以自动化;虚线矩形框表示的是可以自动完成的任务

每个类别被划分为若干个对应于软件输入变量、环境对象状态的一个或多个取值的选项(choice)。测试规范中同时也包含了各选项之间的约束关系,以便确保生成合理、有效的测试集。将编写好的测试规范输入测试框架生成器,就能获得相应的测试框架,根据测试框架可生成相应的测试脚本。测试框架就是一个由选项组成的集合,其中一个选项对应一个类别。测试框架也可看作是一个或多个测试用例的模板,将这些测试用例组合起来就形成一个或多个测试脚本。

为了详细阐述图2-9中所列的主要步骤,使用2.11中的函数findPrice作为同步说明的实例。为了更有效地介绍类别划分法,将函数findPrice的原有功能规范扩展如下:

函数:findPrice

语法:fP(code,quantity,weight)

功能:findPrice有3个输入变量:code,qty,weight。code是由8个数字组成的商品编码,quy为采购商品的数量,weight为采购商品的重量。

函数fP访问数据库,查询并显示code编码所对应的产品的单价、描述信息以及总的采购价格。当code、qty、weight中任意一个为非法输入时,fP显示一条错误提示信息并返回。正如下表所指出的那样,code的最左边数字决定了qty和weight将被如何使用。code是表示商品类型的8位数字串,下表给出了fP中code最左边数字的解释。

 

参数qty和weight的使用依赖于code的最左边数字。当code的最左边数字为0或3时,qty是表示采购商品数量的整数,此时weight无效。当code的最左边数字为2时,weight无效。当code的左边的第2位数字表示“元”,第3ty无效。当code的最左边数字为5时,qty表示采购商品价格的折扣,此时weight也无效,code的左边第2位数字表示“元”,第3、4位数字表示“分”。我们假设,忽略了code的最左数字为1或为6~9的情况。

步骤1分析功能规范

在该步骤中,测试人员要确定所有能够独立测试的功能模块。对于大的软件系统而言,功能模块可能对应于可独立测试的各个子系统,而子系统又可以进一步分为可独立测试的子模块。根据具体的测试对象来决定这种分解过程的终止时机。

例2.13在这个例子里,我们假设fP是某软件可独立测试的子模块。下面,将为fP生成测试用例。

步骤2确定类别

对各被测模块的功能规范进行分析,确定相应的输入,同时,还要确定环境中的对象(如文件)。

接着,确定各个参数和环境对象的特征。所谓特征就是一个类别,其中有些特征是明确定义的,而另外一些隐式特征需要通过对功能规范的仔细分析才能得到。

例2.14我们知道fP有3个输入参数,分别为code、qty、weight。功能规范明确定义了这些输入参数的特征,如类型及相应的解释说明。注意,qty和 weight的取值与code的取值相关。虽然功能规范明确定义了各参数的类型,但并没有明确指出qty、weight的取值范围。

fP所访问的数据库是一个环境对象。虽然功能规范中没有给出关于该对象的任何信息,但为了充分测试fP,我们应当考虑数据项在数据库中和不在数据库中这两种情况。这样,针对fP,得到的类别如下:

code length(长度)、leftmost digit(最左边数字)、remaining digits(其余数字串)

qtyinteger quantity(整数值)

weight float quantity(浮点数值)

database contents(内容)

注意,对于qty、weight、database都只确定了一个类别,在下一步骤中将主要讨论类别的划分。

步骤3类别划分

测试人员要根据每个类别中各个不同的情况,对功能模块进行测试。一种情况就是一个选项,每个类别将包含一个或多个情况。每个类别都至少可以被划分成两个子集,一个包含所有正确的取值,另一个包含所有错误的取值。

对于部署在网络环境中的软件,需要考虑各种网络失效的情况,还要仔细考虑其他各种情况,如数据库失效等。同时,测试人员需要充分考虑被测软件在实际使用过程中所有可能遇到的有效和无效的情况。

例2.15针对fP的不同输入变量、环境对象、类别、划分如下:

输入变量code:

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

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

读 书 +更多

Solaris 内核结构(第2版)

本书描述了Solaris 10和OpenSolaris内核中所有主要子系统的算法和数据结构,对第1版进行了大幅修订,加入了很多新的内容。全书从头到尾都采...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊