黑盒测试
前文说过,黑盒测试的一大原则是设计所有可能的输入中,能够尽可能测试出更多错误的测试用例;设计这一用例子集的两个特性为:
1)严格控制测试用例的增加,减少为达到“合理测试”的某些既定目标而必须设计的其他测试用例的数量;
2)它覆盖了其他大部分可能的测试用例,即它会告诉我们,使用或不使用这个特定的输入集合,哪些错误会被发现,哪些会被遗漏掉。
虽然这两个特性看起来很相似,但描述的却是截然不同的两种思想。第一个特性意味着,每个测试用例都必须体现尽可能多的不同的输入情况,以使最大限度地减少测试所需的全部用例的数量。而第二个特性意味着应该尽量将程序输入范围进行划分,将其划分为有限数量的等价类,这样就可以合理地假设(但是,显然不能绝对肯定)测试每个等价类的代表性数据等同于测试该类的其他任何数据。也就是说,如果等价类的某个测试用例发现了某个错误,该等价类的其他用例也应该能发现同样的错误。相反,如果测试用例没能发现错误,那么我们可以预计,该等价类中的其他测试用例不会出现在其他等价类中,因为等价类是相互交迭的这两种思想形成了称为等价划分的黑盒测试方法。第二种思想可以用来设计个“令人感兴趣的”输入条件集合以供测试,而第一个思想可以随后用来设计
涵盖这些状态的一个最小测试用例集。
使用等价类划分方法设计测试用例主要有两个步骤:
1)确定等价类;
2)生成测试用例。
1.确认等价类
等价类划分可分为有效等价类和无效等价类两种;
2.生成测试用例,步骤如下:
1)为每个等价类设置不同的编号;
2)编写新的测试用例,尽可能多的覆盖哪些尚未被涵盖的有效等价类,直到所有有效等价类都被测试用例所覆盖(包含进去)
3)编写心得测试用例,覆盖一个且仅一个尚未被涵盖的无效等价类,直到所有的无效等价类都被测试用例覆盖。
4.2.3 边界值分析
所谓边界条件,是指输入和输出等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。边界值分析方法与等价划分方法存在两方面的不同:
1.与从等价类中挑选出人意一个元素为代表不同,边界值分析需要选择一个或多个元素,以便等价类的每个边界都经过一次测试。
2.与仅仅关注输入条件(输入空间不同),还需要考虑从结果空间(输出等价类)设计测试用例。
设计边界值时可参考以下几点:
1.输入范围;
2.输入数值的数量;
3.考虑输出的边界值和是否存在导致输出超出边界值的情况;
4. 如果程序的输入或输出是一个有序数列,应注意该序列的第一和最后一个元素。
4.2.4 因果图
因果图是一种形式语言,用自然语言描述的规格说明可以转换为因果图。因果图实际上是一种数字逻辑电路(一个组合的逻辑网络),但没有使用标准的电子学符号,而是使用了稍微简单点的符号。
生成测试用例时采用的过程如下:
1.将规格说明分解为可执行的片段。这是必须的步骤,因为因果图不善于处理较大的规格说明。举例来说,当测试一个电子商务系统时,“可执行的片段”可能是指对挑选和确认购物车中的单件商品的规格说明。在测试一个Web页面设计时,我们可能会测试一个单独的菜单树,甚至是一个不太复杂的导航序列。
2.确定规格说明中的因果关系。所谓“因”,是指一个明确的输入条件或输入条件的等价类。所谓“果”,是指一个输出条件或系统转换(输入对于程序或系统状态的延续影响)。举例来说,如果某个事务引起文件或数据库记录被修改,那么这种改变就是一个系统转换,而系统反馈的确认信息就是一个输出条件。通过逐字逐句地阅读规格说明,同时标识出描述“因”和“果”的文字或句子,就可以将“因”和“果”确定出来。因果关系一旦确定下来,每个“因”和“果”都被赋予一个惟一的编号。
3.分析规格说明的语义内容,并将其转换为连接因果关系的布尔图。这就是所谓的因果图。
4.给图加上注解符号,说明由于语法或环境的限制而不能联系起来的“因和“果”。
5.通过仔细地跟踪图中的状态变化情况,将因果图转换成一个有限项的判定表。表中的每一列代表一个测试用例
6.将判定表中的列转换成测试用例。
4.3 错误猜测
利用直觉????和经验猜测出错的可能类型,然后编写对应的测试用例来暴露对应错误。