基于模型的测试是什么
基于模型的测试(MBT)用形式化模型描述系统行为——状态机、决策表、流程图或约束模型,再从模型自动生成测试用例。规格清晰、逻辑复杂的系统收益最大:模型变更后用例可再生成,回归覆盖与模型保持同步,而不是靠人工逐条维护用例集。
基本信息
| 模型类型 | 状态机、决策表、时序图、约束模型 |
|---|---|
| 流程 | 建模 → 生成用例 → 执行 → 结果反哺模型 |
| 覆盖准则 | 状态覆盖、迁移覆盖,再补回退与异常迁移 |
| 投入与收益 | 投入在建模与维护,复杂逻辑与高频变更场景收益明显 |
| 适用前提 | 规格清晰、行为可形式化 |
| 常见风险 | 模型与实现双向漂移 |
状态机建模示例
状态机建模示例
状态:未登录 -> 已登录 -> 锁定
迁移:登录成功 / 连续失败 / 解锁
生成:先做边覆盖,再补回退与异常迁移用例
回归:模型变更后重新生成并对比差异
# 生成用例需人工审阅可执行细节后再入库典型使用场景
- 复杂状态逻辑:订单、账号安全、设备控制等状态机系统。
- 高频变更模块:模型更新后自动再生成回归用例。
- 规格验证:建模过程本身暴露规格中的矛盾与空洞。
- 覆盖审计:用模型量化现有用例对状态与迁移的覆盖。
- 组合场景推导:从决策表生成条件组合用例。
- 协议与流程系统:通信状态机、审批流的行为验证。
流程环节与产出
| 环节 | 动作 | 产出 |
|---|---|---|
| 建模 | 用状态机或决策表描述行为 | 可评审的模型 |
| 生成 | 按覆盖准则导出抽象用例 | 候选用例集 |
| 具体化 | 补充数据与前置,人工审阅 | 可执行用例 |
| 执行 | 对接测试框架运行 | 结果与失败分析 |
| 反哺 | 用差异与缺陷更新模型 | 持续修正的模型 |
MBT 的投入在建模与维护模型上;收益在复杂逻辑与高频变更场景更明显,简单页面流程用传统设计方法更划算。
生成的用例不是终点:抽象用例要补充测试数据与前置条件后才能执行。
把模型和实现纳入同一评审流程,模型漂移才能被及时发现。