黑盒测试方法

黑盒测试方法

  • 边界值分析
  • 等价类划分
  • 决策表
  • 因果图

一 边界值分析方法

1 边界值分析

1.1 边界值分析原理

  • 边界值分析关注的是输入空间的边界,以标识测试用例。边界值测试背后的基本原理是错误更可能出现在输入变量的极值附近
  • 边界值分析的基本思想是在最小值、略高于最小值、正常值、略低于最大值和最大值处取输入变量值
  • 边界值分析的下一个部分基于一种关键假设,在可靠性理论叫做“单缺陷”假设。这种假设是说,失效极少是由两个(或多个)缺陷的同时发生引起的。因此,边界值分析测试用例的获得,通过是所有变量取正常值,只使一个变量取极值。
  • 两变量函数F的边界值测试用例是:
    {

1.2 归纳边界值分析

  • 两种归纳方式:变量数量和值域种类

归纳变量数量

  • 如果有一个n变量函数,使除一个以外的所有变量取正常值,使剩余的那个变量取最小值、略高于最小值、正常值、略低于最大值和最大值,对每个变量都重复进行。这样,对于一个n变量函数,边界值分析会产生4n+1个测试用例。

归纳值域

  • 归纳值域取决于变量本身的性质(或类型)。例如,对于NextDate函数,我们有月份、日期和年对应的变量。如果没有显示的给出边界,例如三角形问题,通常必须创建一种“人工”边界。

边界值分析对布尔变量没有什么意义。极值只有TRUE和FALSE,但是其余三个值不明确。

1.3 边界值分析的局限

  • 如果被测程序是多个独立变量的函数,这些变量受物理量的限制,则很适合边界值分析。
  • 物理准则也很重要。如果变量引用某个物理量,例如温度、压力、空气速度、迎角、负载等,物理边界极为重要。

2 健壮性测试

  • 健壮性测试是边界值分析的一种简单扩展:除了变量的5个边界值分析取值,还要通过采用一个略大于最大值(max+)的取值,以及一个略小于最小值(min-)的取值,看看超过极值时系统会有什么表现。
  • 对于n个输入变量的函数,健壮性测试可以产生6n+1个测试用例。
  • 健壮性测试最有意思的部分不是输入,而是预期的输出

3 最坏情况测试

  • 去掉单缺陷假设,关心当多个变量取极值时会出现什么情况。
  • 对每个变量,首先进行包含最小值、略高于最小值、正常值、略低于最大值和最大值五元素集合的测试,然后对这些集合进行笛卡尔积计算,以生成测试用例。
  • 最坏情况测试显然更彻底,因为边界值分析测试用例是最坏情况测试用例的真子集。
  • 最坏情况测试还意味着更多的工作量:n变量函数的最坏情况测试,会产生5^n个测试用例,而边界值分析只产生4n+1个测试用例。
  • 最坏情况测试的归纳模式与边界值分析的归纳模式一样,两者都要求输入变量的独立性。
  • 最坏情况的最佳应用,可能是物理变量具有大量交互作用,或者函数失效的代价极高的情况。
  • 对于确实极端的测试,会采用健壮最欢情况测试,这种测试使用健壮性测试的7元素笛卡尔积。

4 特殊值测试

  • 当测试人员使用其领域知识、使用类似程序的经验以及关于“软点”信息开发测试用例时会出现特殊值测试。
    比如对于NextDate函数,可以为其设置特殊值测试用例,如2月28日、2月29日和闰年。
    尽管特殊值测试时高度主观性的,但是所产生的测试用例集合,常常更能有效地发现缺陷。

5 边界值测试指导方针

  • 除了特殊值测试,基于函数(程序)输入定义域的测试方法,是所有测试方法中最基本的。这类测试的假设条件是输入变量是真正独立的。
  • 如果不能保证这种假设,则这类方法不能产生令人满意的测试用例。这些方法还有两方面的区别:正常值与健壮值,单缺陷与多缺陷假设。
  • 另一种很有用的基于输出的测试用例形式,可用于生成错误消息的系统。测试人员应该设计测试用例,已检查适当的时候,错误消息是否被生成,并且不会被错误地生成。
  • 定义域分析还可以用于内部变量,如循环控制变量、索引和指针。尽管他们不是输入变量,但这些变量的使用错误相当常见。
  • 健壮性测试是测试内部变量的一种好的选择。

二 等价类划分

2.1 等价类原理和思想

原理

  • 1 完备测试。
  • 2 避免冗余。
  • 3 边界值测试不能实现完备测试和避免冗余。
  • 4 等价类测试重复边界值测试的两个决定因素,即健壮性和单/多缺陷假设。
  • 5 等价类种类:强/弱等价类,健壮/一般等价类。

思想

  • 等价类的测试思想是通过每个等价类中的一个元素标识测试用例。
  • 等价类测试的关键就是确定类的等价关系。

2.2 等价类划分

例子

一个两变量x1和x2的函数F联系起来,如果F实现为一个程序,则输入变量x1和x2将拥有以下边界以及边界内的区间:
- a<=x1<=d,区间为[a,b),[b,c),[c,d]
- e<=x2<=g,区间为[e,f),[f,g]
x1和x2的无效值是,x1

2.2.1 弱一般等价类测试

弱一般等价类测试通过使用一个测试用例中的每个等价类(区间)的一个变量实现。(单缺陷),测试用例的个数实际上取决于变量区间最多的变量的区间个数。

2.2.2 强一般等价类测试

  • 强一般等价类测试基于多缺陷假设,因此需要等价类笛卡儿积的每个元素对应的测试用例。
  • 即所有变量所有取值的所有组合,取值为有效值。
  • 覆盖所有的等价类。
  • 有可能的输入组合中的一个。

2.2.3 弱健壮等价类测试

  • 健壮:考虑无效值;弱:单缺陷假设。
  • 对于有效输入,使用每个有效类的一个值。
  • 对于无效输入,测试用例将拥有一个无效值,并保持其余的值都是有效的。

2.2.4 强健壮等价类测试

  • 健壮:考虑无效值。
  • 强:多缺陷假设。

3 三角形问题的等价类测试用例

3.1 等价类

  • R1={

3.2 弱/强一般等价类测试用例

测试用例 a b c 预期输出
WN1 5 5 5 等边三角形
WN2 2 2 3 等腰三角形
WN3 3 4 5 不等边三角形
WN4 4 1 2 非三角形

由于变量啊a,b和c没有有效区间,则强一般等价类测试用例与弱一般等价类测试用例相同。

3.3 弱健壮等价类测试用例(除了弱/强一般等价类测试用例)

测试用例 a b c 预期输出
WR1 -1 5 5 a取值不在所允许的取值值域内
WR2 5 -1 5 b取值不在所允许的取值值域内
WR3 5 5 -1 c取值不在所允许的取值值域内
WR4 201 5 5 a取值不在所允许的取值值域内
WR5 5 201 5 b取值不在所允许的取值值域内
WR6 5 5 201 c取值不在所允许的取值值域内

3.4 强健壮等价类测试用例

测试用例 a b c 预期输出
SR1 -1 5 5 a取值不在所允许的取值值域内
SR2 5 -1 5 b取值不在所允许的取值值域内
SR3 5 5 -1 c取值不在所允许的取值值域内
SR4 -1 -1 5 a,b取值不在所允许的取值值域内
SR5 5 -1 -1 b,c取值不在所允许的取值值域内
SR6 -1 5 -1 a,c取值不在所允许的取值值域内
SR7 -1 -1 -1 a,b,c取值不在所允许的取值值域内

- 请注意,预期输出如何完备地描述无效输入值。
- 等价类测试显然对用于定义类的等价关系很敏感。如果在输入定义域上定义等价类,则可以得到更丰富的测试用例集合。

三角形边长可以都相等,有一对整数相等(有三种相等方式),或都不相等。

  • D1={

三角形性质,来判断不构成三角形。

  • D6={

4 指导方针和观察

  1. 等价类测试的弱形式(一般或健壮)不如对应的强形式的测试全面。
  2. 如果实现语言是强类型(无效值会引起运行时错误),则没有必要使用健壮形式的测试。
  3. 如果错误条件非常重要,则进行健壮型的测试是合理的。
  4. 如果输入书记以离散区间和集合定义,则等价类测试时合适的。当然也适用于如果变量值越界系统就会出现故障的系统。
  5. 通过结合边界值测试,等价类测试可以得到加强。
  6. 如果程序函数很复杂,则等价类测试是被指示的。在这种情况下,函数的复杂性可以帮助标识有用的等价类,就像NextDate函数一样。
  7. 强等价类测试假设变量是独立的,相应的测试用例相乘会引起冗余问题。
  8. 在发现“合适”的等价关系之前,可能需要进行多次尝试,就像NextDate函数例子一样。在其他情况下,存在“明显”或“自然”等价关系。如果不能肯定,最好对任何合理的实现进行再次预测。
  9. 强和弱形式的等价类测试之间的差别,有助于区分累进测试和回归测试。

三 基于决策表的测试

在所有功能性测试方法中,基于决策表的测试方法是最严格的,因为决策表具有逻辑严格性。
与决策表相比,因果图法和决策表格法使用起来更麻烦,并且全冗余。

3.1 决策表

决策表很适合描述不同条件集合下采取行动的若干组合的情况。

表3-1 决策表的各个部分
规则1 规则2 规则3/4 规则5 规则6 规则7/8
C1 T T T F F F
C2 T T F T T F
C3 T F - T F -
A1 X X X
A2 X X
A3 X X
A4 X X

决策表有四个部分:条件桩(C1-C3),条件条目(规则1…),行动桩(A1-A4)和行动条目。
如果有二叉条件(真/假,是/否,0/1),则决策表的条件部分是旋转了90度的(命题逻辑)真值表。这种结构能够保证我们考虑了所有可能的条件值组合。如果使用决策表标识测试用例,那么决策表的这种完备性能够保证一种完备的测试。
所有条件都是二叉条件的决策表叫做有限条目决策表。如果条件可以有多个值,则对应的决策表叫做扩展条目决策表。

表示方法

条件代表输入,行动代表输出。有时条件最终引用输入的等价类,行动引用被测软件测主要功能处理部分。这是规则就解释为测试用例。
由于决策表可以机械地强制为完备的,因此可以有测试用例的完整集合。
一种很有用的风格是增加行动,以显示什么时候规则在逻辑上不可能满足。

表3-2 三角形问题决策表

—|—|—|—|—|—|—|—|—|—|
C1:a、b、c构成三角形?|N|Y|Y|Y|Y|Y|Y|Y|Y|
C2:a=b?|-|Y|Y|Y|Y|N|N|N|N
C3:a=c?|-|Y|Y|N|N|Y|Y|N|N
C4:b=c?|-|Y|N|Y|N|Y|N|Y|N
A1:非三角形|X|||||||||
A2:不等边三角形|||||||||X|
A3:等腰三角形|||||X||X|X||
A4:等边三角形||X||||||||
A5:不可能|||X|X||X||||
条件的选择可以大大扩展决策表的规模,这里将(老条件C1:a、b、c构成三角形?)扩展为三角形特性的三个不等式,如表3-3所示。

表3-3 经过修改的三角形问题决策表


如果条件引用了等价类,则决策表会有一种典型的外观。表7-4所示的决策表来自NextDate问题,引用了可能的月份变量相互排斥的可能性。由于一个月份就是一个等价类,因此不可能有两个条目同时为真的规则。不关心条目(-)的实际含义是“必需失败”。

3.5 指导方针与观察

1 决策表技术适用于具有以下特征的应用程序:

  • if-then-else逻辑很突出;
  • 输入变量之间存在逻辑关系;
  • 涉及输入变量子集的计算;
  • 输入与输出之间存在因果关系;
  • 很高的圈复杂度;
    2 决策表不能很好的伸缩(有n个条件的有限条目决策表有2^n个规则)。有多种方法可以解决这个问题——使用扩展条目决策表,代数简化表,将打表“分解”为小表,查找条件条目的重复模式。
    3 与其他技术一样,迭代会有所帮助。

猜你喜欢

转载自blog.csdn.net/qingyangfeng/article/details/80611705