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

2.4 边界值分析(1)

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

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

2.4 边界值分析(1)

经验告诉我们,程序员通常会在处理等价类边界或边界附近的取值时出错。例如,对于方法M:当输入x满足条件x≤0时,M执行函数f1,否则执行函数f2。假设M被错误地实现为:当x<0时执行函数f1,反之执行函数f2,显而易见,当使用x=0对M进行测试时,就能发现该缺陷;但当采用根据等价类生成的测试用例{-4,7}时,则不会发现该缺陷。在这个例子中,x=0就是等价类x≤0和x>0的边界值。

边界值分析是一种有效的测试用例选择方法,可以发现位于等价类边界处的软件缺陷。等价类划分方法从等价类中选取测试用例,而边界值分析法从等价类边界或边界附近选取测试用例。当然,用这两种方法生成的测试用例可能有重叠。

通常在设计测试用例时,同时采用边界值分析和等价类划分两种方法。除了使用等价类确定边界外,还可以利用输入变量之间关系确定边界。一旦输入域确定下来,使用边界值分析生成测试用例的主?街枞缦拢?

步骤1使用一元划分方法划分输入域。此时,有多少个输入变量就形成多少种划分。若采用多元化分方法,就只能形成输入域的一种划分。

步骤2为每种划分确定边界。也可利用输入变量之间的特定关系确定边界。

步骤3设计测试用例,确保每个边界值至少出现在一个测试输入数据中。

下面的例子说明由边界值分析方法生成测试用例的具体过程。

例2.11本例将具体说明边界的概念,以及如何在边界上和边界附近选取测试用例。考虑函数findPrice,简记为fP,它有两个整型输入变量,分别为code和qty,code表示商品编码,qty表示采购数量。fP访问数据库,查询并显示code编码所对应的产品的单价、描述信息以及总的采购价格。当code和qty中任意一个为非法输入时,fP显示一条错误提示信息并返回。现在为fP设计测试用例。

首先,为两个输入变量创建等价类。假设编码code的有效输入区间为[99,999],采购数量qty的有效输入区间为[1,100],得到如下等价类:

code的等价类E1:小于99的取值

E2:有效区间取值

E3:大于999的取值

qty的等价类 E4:小于1的取值

E5:有效区间取值

E6:大于100的取值

图2-7说明了变量code和qty的等价类以及它们各自的边界。注意,code和qty分别有两个边界。图中对每个变量都标记了6个点,两个边界值标记为“×”,其余四个边界附近值标记为“*”。

基于边界值分析技术选择测试用例时,要求测试用例要包含各个变量所有的边界值以及边界附近值。通常满足这种要求的测试集有很多。考虑下面的测试集:

 
图2-7例2.11中变量的等价类与边界。图中分别
给出了边界值和边界附近值,并分别以“×”、“*”标记
 

上面的测试集包含了各变量的6种取值,code和qty的非法值包含在同一个测试用例中。例如,t1和t6同时包含了code和qty的非法值,执行这两个测试用例时,fP将显示错误提示信息。测试用例t2、t3、t4、t5包含的是合法值。

虽然T是包含code和qty的所有边界值与边界附近值的最小测试集,但就缺陷检测能力来说,它并不是最好的。例如,考虑下面给出的函数fP的缺陷代码:

 

当对包含上面代码段的fP执行测试用例t1、t6时,fP将显示错误提示信息,即正确地发现输入给code的是非法值。但是,这两个测试用例都未发现程序中缺少对qty输入有效性的检查,其他测试用例也不能发现这个缺陷。通过对各输入变量的合法值和非法值分别进行测试,能增加发现这种代码缺失错误的可能性。

同样,也有可能是缺少对code输入有效性的检查,而对qty输入有效性的检查存在且正确。针对这两种可能性,使用下面4个测试用例代替t1、t6。这4个测试用例也是通过边界值分析得到的:

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

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

读 书 +更多

C#高级编程(第4版)

C#经典名著!2006年最受读者喜爱的十大技术开发类图书!也是Wrox红皮书中最畅销的品种之一,从第一版开始就名满天下;其第3版被中华读书报...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊