软件测试技术之: 白盒测试和黑盒测试(4)

发表于:2016-06-02来源:C博客作者:好儿郎-志在四方点击数: 标签:
从这个简单的例子可以看出,要想充分测试一个程序是很困难的。同时,测试条件越强,测试的代价越高。测试时应分主次,在测试代价和测试充分性之间


  从这个简单的例子可以看出,要想充分测试一个程序是很困难的。同时,测试条件越强,测试的代价越高。测试时应分主次,在测试代价和测试充分性之间做出平衡。

  2.2 黑盒测试

  2.2.1 等价划分

  一个好的测试用例描述为具有相当高的可能性发现某个错误来,此外对程序的穷举输入测试是无法实现的。因此,当测试某个程序时,我们就被限制在从所有可能的输入中努力找出某个小的子集。理所当然,我们要找的子集必须是正确的,并且是可能发现最多错误的子集。确定这个子集的一种方法,就是要意识到一个精心挑选的测试用例还应具备另外两个特性:

  1. 严格控制测试用例的增加,减少为达到“合理测试”的某些既定目标而必须设计的其他测试用例的数量。

  2. 它覆盖了大部分其他可能的测试用例。也就是说,它会告诉我们,使用或不使用这个特定的输入集合,哪些错误会被发现,哪些会被遗漏掉。

  虽然这两个特性看起来很相似,但描述的却是截然不同的两种思想。第一个特性意味着,每个测试用例都必须体现尽可能多的不同的输入情况,以使最大限度地减少测试所需的全部用例的数量。而第二个特性意味着应该尽量将程序输入范围进行划分,将其划分为有限数量的等价类,这样就可以合理地假设(但是,显然不能绝对肯定)测试每个等价类的代表性数据等同于测试该类的其他任何数据。也就是说,如果等价类的某个测试用例发现了某个错误,该等价类的其他用例也应该能发现同样的错误。相反,如果测试用例没能发现错误,那么我们可以预计,该等价类中的其他测试用例不会出现在其他等价类中,因为等价类是相互交迭的。

  这两种思想形成了称为等价划分的黑盒测试方法。第二种思想可以用来设计一个“令人感兴趣的”输入条件集合以供测试,而第一个思想可以随后用来设计涵盖这些状态的一个最小测试用例集。

  使用等价划分方法设计测试用例主要有两个步骤:(1)确定等价类; (2)生成测试用例。

  表2?1等价类列举表

输入条件
 有效等价类
 无效等价类
 

 
 
 

  1.确定等价类

  确定等价类是选取每一个输入条件(通常是规格说明中的一个句子或短语)并将其划分为两个或更多的组。可以使用表2?1中的表格来进行划分。注意,我们确定了两类等价类:有效等价类代表对程序的有效输入,而无效等价类代表的则是其他任何可能的输入条件(即不正确的输入值)。这样,我们遵循了测试原则,即要注意无效和未预料到的输入情况。

  在给定了输入或外部条件之后,确定等价类大体上是一个启发式的过程。下面给出了一些指导原则:

  1. 如果输入条件规定了一个取值范围(例如,“数量可以是从1到999”),那么就应确定出一个有效等价类 (1<数量<999 ) ,以及两个无效等价类 (数量<1,数量>999) 。

输入条件
 有效等价类
 无效等价类
 
取值范围
 1<数量<999
 数量<1,数量>999
 

  2. 如果输入条件规定了取值的个数(例如,“汽车可登记一至六名车主”),那么就应确定出一个有效等价类和两个无效等价类(没有车主,或车主多于六个)。

输入条件
 有效等价类
 无效等价类
 
取值个数
 1至六名车主
 没有车主,车主多于六个
 

  3. 如果输入条件规定了一个输入值的集合,而且有理由认为程序会对每个值进行不同处理(例如,“交通工具的类型必须是公共汽车、卡车、出租车、火车或摩托车” ) ,那么就应为每个输入值确定一个有效等价类和一个无效等价类(例如,“拖车” ) 。

输入条件
 有效等价类
 无效等价类
 
输入值集合
 公共汽车,卡车,出租车,火车,摩托车
 拖车
 

  4. 如果存在输入条件规定了“必须是”的情况,例如“标识符的第一个字符必须是字母”,那么就应确定一个有效等价类(首字符是字母)和一个无效等价类(首字符不是字母) 。

原文转自:http://blog.csdn.net/rl529014/article/details/51556707#t1