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

发表于:2016-06-02来源:C博客作者:好儿郎-志在四方点击数: 标签:
输入条件 有效等价类 无效等价类 第一个字符 首字符是字母 首字符不是字母 如果有任何理由可以认为程序并未等同地处理等价类中的元素,那么应该将这


输入条件
 有效等价类
 无效等价类
 
第一个字符
 首字符是字母
 首字符不是字母
 

  如果有任何理由可以认为程序并未等同地处理等价类中的元素,那么应该将这个等价类再划分为小一些的等价类。

  2.生成测试用例

  第二步是使用等价类来生成测试用例,我们以上述第一个例子来说明,其过程如下:

  1. 为每个等价类设置一个不同的编号。

  2. 编写新的测试用例,尽可能多地覆盖那些尚未被涵盖的有效等价类,直到所有的有效等价类都被测试用例所覆盖(包含进去)。

  3. 编写新的用例,覆盖一个且仅一个尚未被覆盖的无效等价类,直到所有的无效等价类都被测试用例所覆盖。

  用单个测试用例覆盖无效等价类,是因为某些特定的输入错误检查可能会屏蔽或取代其他输入错误检查。举例来说,如果规格说明规定了“请输入书籍类型(硬皮、软皮或活页)及数量(l~999 )”,代表两个错误输入(书籍类型错误,数量错误)的测试用例“XYZ 0”,很可能不会执行对数量的检查,因为程序也许会提示“XYZ 是未知的书籍类型”,就不检查输入的其余部分了。

  这里将上述的第4个例子进行一下扩展,然后进行示范说明如何用等价类划分的思想来设计测试用例:

  规定标识符的第一个字符必须是字母,标识符只能使用字母、数字和下划线。

  第一步:划分等价类,为每一个等价类编号。

输入条件
 有效等价类
 无效等价类
 
第一个字符
 首字符是字母(1)
 首字符不是字母(2)
 
字符限制
 仅使用字母、数字和下划线(3)
 使用了其他字符(4)
 

  第二步:设计测试用例,覆盖所有有效等价类,用尽可能少的用例覆盖最多的有效等价类。

  测试用例:Test_1 覆盖(1)(3)

  第三步:设计测试用例,覆盖所有无效等价类。每新增一个测试用例,只覆盖一个无效等价类。

  测试用例:123test 覆盖(2)

  测试用例:Test#¥ 覆盖(4)

  2.2.2 边界值分析

  经验证明,考虑了边界条件的测试用例与其他没有考虑边界条件的测试用例相比,具有更高的测试回报率。所谓边界条件,是指输入和输出等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。边界值分析方法与等价划分方法存在两方面的不同:

  1. 与从等价类中挑选出任意一个元素作为代表不同,边界值分析需要选择一个或多个元素,以便等价类的每个边界都经过一次测试。

  比如要求输入职工年龄,规定输入为18 – 45。根据等价类划分思想,一个有效等价类:18<= 年龄 <=45 ,两个无效等价类:年龄<18 和 年龄>45。这样选取 10 ,30 ,50即可满足覆盖。但是等价类的思想没有从边界值方面来分析问题,从边界值角度分析,我们就会再添加17、18、19 、44、45、46这样的边界值。

  2. 与仅仅关注输入条件(输入空间)不同,还需要考虑从结果空间(输出等价类)设计测试用例。

  比如ATM机取款手续费为取款额%1,最低2元,最高50元。从输出等价类来考虑边界值,就要设计用例来测试手续费会不会低于2元,会不会高于50元。

  很难提供一份如何进行边界值分析的“详细说明’,因为这种方法需要一定程度的创造性,以及对问题采取一定程度的特殊处理办法(因此,就像测试的许多其他方面一样,这更多的是项智力工作,并非其他的什么)。

  2.2.3 因果图

  边界值分析和等价划分的一个弱点是未对输入条件的组合进行分析。边界值测试不一定能检查出此类错误。

  对输入组合进行测试并不是简单的事情,因为即使对输入条件进行了等价划分,这些组合的数量也是个天文数字。如果在选择输入条件的子集时没有采用一个系统的方法,很可能选择出一个任意的输入条件子集, 这样会使测试没有什么成效。

  因果图有助于用一个系统的方法选择出高效的测试用例集。它还有一个额外的好处,就是可以指出规格说明的不完整性和不明确之处。

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