这是《落叶》文集里第 338 片落叶,希望你能喜欢,不为别的,只为这份坚持。
【提问】
如何区分软件测试中的黑与白?
【旧识】
黑盒测试和白盒测试,应该是我迈进软件测试大门时最先接触到的两个概念了。软件系统或程序通常被看作一个加工工厂,这个工厂有一个入口和一个出口。
- 只关注从入口进去的原材料和从出口出来的成品的测试类型,称之为黑盒测试。
- 不仅仅关注原材料和成品,还关注工厂的加工流程和工艺的测试类型,称之为白盒测试。
所以,根据概念,我把功能测试或手工测试都简单地看作了黑盒测试,而把以代码为对象的测试都看作了白盒测试,比如单元测试和接口测试。
【新知】
从测试对象区分:
- 黑盒测试的测试对象是输入数据和期望结果。根据这个定义,接口测试其实应该归为黑盒测试。
- 白盒测试的测试对象是实现功能的源代码。根据这个定义,单元测试就是白盒测试。
从测试方法区分:
- 黑盒测试是通过分析程序的功能、性能和安全性等因素是否满足需求来设计测试用例的,主要针对业务功能和用户场景。
- 白盒测试是通过分析被测对象的内部程序结构和数据流来设计测试用例,主要针对程序语句、路径和变量状态值等,检查代码是否按照预期执行。所以白盒测试又叫结构测试或逻辑驱动测试。
从用户角度区分
- 黑盒测试就是更接近用户的,或者说用户最关注的部分的测试,比如:UI、易用性、业务流程、性能、安全性等等。
- 白盒测试就是远离用户的,或者说是用户不会关注的部分的测试,比如程序内部的代码结构性、逻辑正确性、路径覆盖率等等。
作者简介:14 年测试 + 11 年项目管理 + 11 年团队管理 = 一个测试老兵