三种视角是什么
黑盒测试按外部行为设计用例,不看实现:依据需求、接口与用户行为,用等价类、边界值、判定表等方法。白盒测试基于代码结构设计覆盖:语句、分支、条件与路径覆盖,常用于单元测试与覆盖率分析。灰盒介于两者之间:利用部分内部知识(接口契约、数据库结构、日志)设计用例或核对结果,接口测试是典型场景。
基本信息
| 黑盒依据 | 需求、接口文档、用户行为 |
|---|---|
| 白盒依据 | 代码结构、分支与路径 |
| 灰盒依据 | 接口契约加部分内部状态 |
| 方法归属 | 等价类、边界值、判定表属黑盒;语句与分支覆盖属白盒 |
| 常见组合 | 黑盒设计用例,灰盒核对数据与日志 |
对比
| 方式 | 依据 | 典型方法 | 典型场景 |
|---|---|---|---|
| 黑盒 | 需求与接口 | 等价类、边界值、判定表 | 验收测试、系统测试 |
| 白盒 | 代码结构 | 语句、分支、条件、路径覆盖 | 单元测试、覆盖率分析 |
| 灰盒 | 契约加内部状态 | 接口操作加数据库校验 | 集成测试、链路排查 |
典型使用场景
- 需求冻结、实现未读时:黑盒法先设计用例。
- 覆盖率缺口分析:白盒视角挑未覆盖分支补用例。
- 接口测试:灰盒核对响应字段与数据库落库。
- 缺陷复盘:灰盒查日志与内部状态定位根因。
- 重构后回归:黑盒用例不受实现变化影响。
- 安全用例:黑盒打边界、灰盒看内部状态变化。
- 用例评审:用黑盒语言描述场景,评审人不必读代码也能判断覆盖。
多数从业者日常处于灰盒位置:通过 API 操作,再从数据库或日志核对结果;两侧证据都要留在报告里。
视角决定断言位置:黑盒断言外部可观察输出;白盒断言可以深入内部状态,但代价是与实现细节耦合,重构时容易被牵连。
灰盒不等于可以随意访问内部实现:用例与代码细节强耦合后,一次重构就会引发大批失败,维护成本失控。