12.3. 理论基础

12.3.1. 黑盒、白盒测试概念

测试规划基于产品功能,目的是坚持程序各功能是否实现,并检查其中的错误。这种测试方法被称为黑盒测试(Black-box Testing)。

测试规划基于产品的内部结构来规划测试,检查内部操作是否按照规定进行执行,软件部分功能是否得到了充分的使用。这种测试方法被称为白盒测试(White-box Testing)

黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试,在不考虑内部结构和内部特征、测试者只需要知道该程序输入和输出之间的关系或程序功能的情况下,依靠能够反映这一关系和程序功能需求规格的说明书,来确定测试用例和推断测试结果的正确性。软件的黑盒测试一般是用来确认软件功能的正确性和可操作性

白盒又称结构测试、逻辑驱动测试或基于程序测试。它依赖于程序细节的严密检验,针对特定的条件和循环集设计测试用例,对软件的逻辑路径进行测试。在程序的不同点检验程序的状态,来判断真实情况十分和预期的状态相一致。软件的白盒测试一般用例分析程序的内部结构

可以说,黑盒测试方法和白盒测试方法是从完全不同的起点出发的,并且这两个出发点在某种程度上是完全对立的,反映了测试思路的两种极端情况。这两类方法在长期的软件实践中已经被证明是有效和实用的。

一般来说,单元测试通常采用白盒测试,而且确认测试或系统测试中大多是采用黑盒测试。

最为常见的程序结构覆盖如下:

  1. 语句覆盖:它要求被测程序的每一个执行语句都在测试中尽可能被检验过,这是最弱的逻辑覆盖准则

  2. 分支覆盖或判断覆盖:要求程序中所有判断的分支尽可能的校验

  3. 条件覆盖:当判断式中含有多个条件时,要求每个条件的取值均得到校验

  4. 判断/条件覆盖:同时考虑条件的组合值及判定结果校验

  5. 路径覆盖:只考虑对程序路径的全面校验

无论哪种测试覆盖,即使其覆盖率达到百分之百,也不能保证把所有隐藏的程序欠缺都揭露出来。