1.5 黑盒测试和白盒测试

更新于 2026年10月10日 版权声明
1.5 黑盒测试和白盒测试

软件测试从不同的角度有不同的分类,不同的分类有不同的测试方法。一般来讲,根据是否分析程序内部结构或逻辑,软件测试可以分为黑盒测试和白盒测试。

1.黑盒测试

黑盒测试也被称为功能测试或基于规格说明的测试,它是一种从软件外部对软件实施的测试,目的是尽可能发现软件的外部行为错误[4]。对于采用黑盒测试相关方法的测试人员来讲,被测程序被看作一个打不开的黑盒,内部的逻辑完全不可见,它只是从输入定义域到输出值域的映射。

在使用黑盒测试方法时,测试人员根据软件规格说明对软件功能、性能、安全性、兼容性等指标进行测试,目的是检测出软件已有的或者潜在的错误,从而保证软件的质量。如果希望采用黑盒测试检测出软件程序中的所有故障,就要对程序进行穷举测试。然而在实际工程中,穷举测试常常是不切实际的。常用的黑盒测试方法有以下几种。

(1)划分等价类

等价类划分法将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类,从每个部分中选取具有代表性的数据当作测试用例进行合理的分类,测试用例由有效等价类和无效等价类的代表组成,从而保证测试用例具有完整性和代表性。等价类是输入域中互不相交的子集,所有等价类的并集便是整个输入域[4]。划分等价类的测试方法具有测试完备性,可以避免生成冗余的测试用例。

(2)边界值分析法

大量的软件测试实践表明,故障往往出现在定义域或值域的边界上,而不是在其内部[3]。程序的边界是一种特殊的情况,应用边界值分析法设计测试用例时需要先确定边界情况,再找出合适的边界,针对问题的输入域、边界值条件等细致地进行考虑。(https://www.daowen.com)

(3)因果图法

因果图法运用简单的直线、节点和逻辑符号表示原因、结果及其联系。因果图法帮助测试人员按照一定步骤,检测被测程序输入条件的各种组合情况,从而高效而全面地开发测试用例。由于它可以将自然语言转化为严格的形式化规格语言,因此可以指出规格说明中存在的不完整性和二义性[4]。

(4)决策表法

决策表将作为条件的所有输入及其各种组合值以及对应输出值均罗列出来,形式简明并且可以避免遗漏。由于决策表可以将复杂的问题按照各种情况列举出来,因此可以设计出完整的测试用例集合[3],但其工作量在几种方法中是最大的。

2.白盒测试

白盒测试一般用于分析程序的内部结构,因此又称白盒测试为结构测试或基于程序的测试。白盒测试不再将被测程序当作一个不透明的盒子,而要分析其内部逻辑,并达到一定程度的覆盖以判断软件测试的充分性。

白盒测试分为面向程序结构的控制流测试和面向变量的数据流测试。一般情况下,用控制流图中的路径描述程序运行过程。常用的控制流覆盖准则及覆盖测试的标准有语句覆盖、分支覆盖、谓词覆盖以及路径覆盖准则,通过对测试用例在以上测试准则的覆盖率统计来检测测试的完备性。数据流测试则用于测试用例定义和使用的正确性,其常用的覆盖准则有定义覆盖测试准则、引用覆盖测试准则、定义-引用覆盖准则等[4]。

除了以上的覆盖准则外,程序插装也是白盒测试的一个基本测试手段,它通过在被测程序中插入操作来实现测试目的,如统计覆盖信息、断言证实运行特性等。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)