首页/开发/软件测试速查/图覆盖:节点、边与路径
用例设计方法62 条

图覆盖:节点、边与路径

把程序或流程抽象为有向图,用节点覆盖、边覆盖与路径覆盖度量测试充分性;流程测试、状态测试与数据流测试都可统一到图覆盖框架。

软件测试速查开发更新于 2026-10-13

图覆盖方法是什么

图覆盖把程序或流程抽象为有向图,用节点覆盖、边覆盖与路径覆盖度量测试充分性:节点覆盖要求每个节点被执行到,边覆盖要求每条迁移都被走过,路径覆盖要求特定路径组合被执行。流程测试、状态测试与数据流测试都可以统一到图覆盖框架下讨论覆盖强度。

基本信息

覆盖层次节点覆盖 ≤ 边覆盖 ≤ 路径覆盖(强度递增)
应用对象控制流图、状态图、业务流程图、数据流(定义-使用)
环路处理含循环时路径无穷,用基本路径或有界路径
度量意义统一语言比较不同用例集的充分性
粒度问题图建模粒度不一致会导致数据不可比
配套手段结合业务风险评估决定覆盖优先级

状态图覆盖示例

状态图覆盖示例
状态图:未登录 -> 已登录 -> 锁定
节点覆盖:三个状态都访问到
边覆盖:登录成功 / 连续失败 / 解锁全部走一遍
路径覆盖:主链路 + 登录失败回退 + 锁定后解锁
# 带循环的图路径无限,需限定循环次数或有界路径

典型使用场景

  • 状态机测试:为订单、账号等状态流转设计用例。
  • 流程测试:用业务流程图推导主链路与回退路径。
  • 覆盖评审:用统一的覆盖层次讨论用例集强度。
  • 数据流测试:围绕变量的定义与使用路径设计用例。
  • 用例集比较:新旧用例集用同一图模型对比覆盖。
  • 培训讲解:用图模型解释覆盖强度差异。

覆盖层次与局限

层次做法局限
节点覆盖执行到每个处理步骤不保证状态迁移组合
边覆盖走完全部状态迁移不保证迁移序列组合
路径覆盖主链路与关键回退组合环路导致组合无穷,需有界化
数据流覆盖变量定义到使用的路径建模成本较高
图覆盖提供了讨论覆盖强度的统一语言,便于评审时比较不同用例集的充分性,但它不衡量业务价值。
建模粒度要统一:同一系统两套粒度不同的图,覆盖数据没有可比性。
路径覆盖在有环图上是无穷的:常用做法是限定循环次数或使用基本路径集。

易错点

  • 用图覆盖替代业务风险评估,覆盖高但关键规则漏测:覆盖只是下限,关键规则单独保证。
  • 图建模粒度不一致,两套用例的覆盖数据不可比:评审前统一建模规范。
  • 忽视环路有界化,路径覆盖沦为口号:明确循环次数上限再统计。
  • 满足边覆盖就停下:边覆盖不保证组合路径,关键序列要单独设计用例。

数据来源与参考

  • Peach 等《A Survey of Software Testing Techniques》相关章节
  • ISTQB CTFL 4.0 大纲(覆盖度量)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌