文章目录
- 一、白盒测试(结构测试)
- 二、黑盒测试(功能测试)
- 三、灰盒测试
- 四、其他测试类型
- 五、覆盖准则对比
- 六、应用场景
软件测试主要根据测试目标、技术手段和覆盖准则进行分类。分为白盒测试、黑盒测试、灰盒测试及其他补充类型
一、白盒测试(结构测试)
基于代码内部逻辑设计测试用例,关注程序结构和覆盖准则:
- 语句覆盖
确保每条代码语句至少执行一次。 - 分支(判定)覆盖
覆盖代码中所有分支(如if-else
的所有可能结果)。 - 条件覆盖
覆盖每个逻辑条件(如a>0 && b<5
中的每个子条件)。 - 条件组合覆盖
覆盖所有条件组合(如a>0
与b<5
的真假组合)。 - 路径覆盖
覆盖代码中所有可能的执行路径(复杂度高,常用于关键模块)。 - MC/DC(修正条件/判定覆盖)
航空领域常用,确保每个条件能独立影响判定结果。
二、黑盒测试(功能测试)
基于需求规格设计用例,不关注代码实现:
- 等价类划分
将输入划分为有效/无效类,每类选代表性用例。 - 边界值分析
针对输入边界(如最小值、最大值)设计用例。 - 决策表测试
基于条件组合生成表格,覆盖所有规则。 - 状态转换测试
针对系统状态迁移(如登录失败后的锁定机制)。 - 因果图分析
将输入条件与输出结果关联,生成逻辑组合。 - 错误猜测法
基于经验猜测易错场景(如空输入、超长字符串)。
三、灰盒测试
结合白盒与黑盒,部分了解内部逻辑:
- 基于模型的测试
使用状态机或流程图生成用例。 - 接口测试
验证模块间接口数据传递(如API参数校验)。 - 日志与监控分析
结合日志数据定位代码问题。
四、其他测试类型
- 组合测试
- Pairwise(配对测试):覆盖参数两两组合,减少用例数量。
- 基于经验的测试
- 探索式测试:动态设计用例,依赖测试者直觉。
- 安全测试
- 模糊测试(Fuzzing):输入随机/异常数据检测漏洞。
- 自动化测试
- 数据驱动测试:分离测试逻辑与数据。
- 关键字驱动测试:用自然语言描述测试步骤。
五、覆盖准则对比
覆盖类型 | 描述 | 强度排序(低→高) |
---|---|---|
语句覆盖 | 每行代码至少执行一次 | 最低 |
分支覆盖 | 每个分支(如if结果)覆盖 | 高于语句 |
条件覆盖 | 每个子条件(如a>0)覆盖 | 可能低于分支覆盖 |
条件组合覆盖 | 所有子条件组合覆盖 | 高(组合爆炸问题) |
路径覆盖 | 所有执行路径覆盖 | 最高(但通常不可行) |
MC/DC | 条件独立影响判定结果 | 航空标准,高于分支覆盖 |
六、应用场景
- 白盒测试:单元测试、代码审查、高可靠性系统(如航空航天)。
- 黑盒测试:功能验证、用户场景模拟、验收测试。
- 灰盒测试:集成测试、性能优化、接口验证。
根据项目需求选择合适的方法,通常需要组合多种策略以达到效率与覆盖率的平衡。