你好呀,我是芒果。
在上篇文章“软件测试分类(按测试阶段划分)”中,我们知道根据测试阶段的不同,可以把软件测试分为单元、集成、系统、验收测试等。
在阅读各类软件测试书籍时,你一定会接触到下图中的这几个概念,即黑盒、灰盒、白盒,今天的文章我们就从测试技术的角度出发,谈一谈这三者的区别。

一、黑盒测试
黑盒测试,也称为功能测试,是一种数据驱动的测试,多用于系统测试阶段,是产品级别的测试。
测试人员把软件看作一个内部结构不可见的黑盒子,重点关注特定输入、输出的对应关系是否符合需求规格说明中的描述,而无需过多关注软件内部的具体实现逻辑。
常见的黑盒测试方法有等价类划分、边界值分析、判定表驱动分析、正交实验设计等。
二、白盒测试
白盒测试,也称为结构测试,是一种逻辑驱动的测试,多用于单元测试阶段,是程序级别的测试。
测试人员(通常由开发人员担任)把软件看作一个内部结构可见的白盒子,通常需要参考源代码或结构设计文档后,对代码的内部具体逻辑开展穷举测试,以确保软件功能完备、思路严谨。
常见的白盒测试方法有语句覆盖、判定覆盖、条件覆盖、判定条件覆盖等。
三、灰盒测试
灰盒测试,顾名思义,是介于黑盒和白盒之间的一种测试类别,多用于集成测试阶段对多个交互模块的校验。
测试人员在开展灰盒测试过程中,会依赖标志位、打印等方式来判断验证程序内部的运行状态,同时也会关注输入输出的准确性,综合采纳了黑盒、白盒的优点,但是无论是判断程序内部逻辑,还是对输入输出数据的关系校对,都没能达到两种方式单独使用时的深入程度,也算有舍有得吧。
总结:
为了方便大家理解,芒果把上述内容整合成了一张表格,具体如下:
测试类别 | 黑盒 | 灰盒 | 白盒 |
驱动来源 | 数据 | 兼顾 | 逻辑 |
测试对象 | 产品 | 程序集合 | 程序 |
测试阶段 | 系统测试 | 集成测试 | 单元测试 |
测试角度 | 用户 | 兼顾 | 开发者 |
参考资料 | 需求规格说明 | 兼顾 | 源代码 |
结语:
下一篇文章,我们来一起学习不同测试内容下的测试类别。
以上就是今天的分享,本文首发于同名公众号,如果内容对你有所帮助,欢迎点赞、关注、收藏。