最近学校刚开了软件构造,要求经营自己的博客。思来想去还是决定从课堂出发,简单介绍一下黑盒测试用例的选取方法,由于精力有限,分为上下两期,每周二晚十点更新。

黑盒测试简介

黑盒测试适用于检查代码的功能的一种测试方法,它并不关心内部实现细节。

黑盒测试会尝试找出以下错误:

1.功能缺失

2.接口错误

3.数据类型或外部数据库错误

4.初始化或终止错误

(一)等价类划分

根据一定标准,将被测函数的输入域划分为若干个互不相交的子集,这些子集就被称为等价类。基于等价类划分的测试就是从等价类中导出测试用例后进行测试。

等价类中有有效等价类和无效等价类。

有效等价类:对于被测函数来说是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明中所规定的功能和性能。

无效等价类:对于被测函数来说是不合理、没有意义的输入数据构成的集合。

(二)边界值分析

边界值分析是对等价类分析的一种补充。由于大量的错误往往发生在输入域的边界而非中央,所以边界上的值值得我们额外关注。

不管是等价类划分还是边界值分析,我们在抽取测试用例时有两种方法。

第一种类似于笛卡尔积全覆盖的思想。从多个划分维度上的多个取值,每个维度取一个组合起来,每一个组合要有一个用例。

比如,在包含边界值的情况下,我们将输入域分为三个维度,每个维度分别有3,5,5个部分,那么我们需要抽取的测试用例个数为3x5x5即75个。

第二种我们只需覆盖每个部分一次即可,每个维度的每个取值部分至少被1个测试用例覆盖一次即可。

(三)因果图

因果图是一种利用图解法分析输入的各种组合情况,从而抽取测试用例的方法。这种方法适用于多输入条件多输出结果的程序。

因果图的好处有:

便于理解多输入条件之间的相互结合、相互制约关系;

将自然语言规格转化为形式语言规格说明的一种严格的方法。

在因果图中有三对制约关系:因果关系、原因和原因之间的关系、结果和结果之间的关系。

1)因果关系:

恒等:当条件c满足时,一定会出现结果e;

非:当条件c满足时,一定不会出现结果e;

或:当条件c1、c2有一个满足时,出现结果e;

与:当条件c1和c2同时满足时,才会出现结果e。

2)原因和原因之间的关系:异、或、唯一、要求。

异(E约束):原因a与b中至多一个为真;

或(I约束):原因a与b中至少一个为真;

唯一(O约束):原因a与b中有且只有一个为真;

要求(R约束):原因a满足时,原因b一定满足。

3)结果和结果之间的关系:强制。

强制(M约束):结果a出现时,结果b一定不出现。

一般画出因果图后,要将其转化为决策表,至于决策表是什么,以及两者之间如何对应的案例,将在黑盒测试用例选取方法浅谈(二)中谈到。同时,还会介绍其余的几个方法。