You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不可行测试需求测试:边对覆盖最大可行覆盖率及不可行情况(附流程图)

代码边对覆盖分析:不可行路径与最大覆盖率

让我们一步步拆解这段代码的边对覆盖情况,先把代码贴出来方便讨论:

BEGIN
input (a)
if (a<0) then a=(-a) end if
if(a>0) then a++ end if
print (a)
END

先明确边对覆盖的核心逻辑

边对覆盖(也叫相邻分支覆盖)要求覆盖所有可能的连续条件判断的分支组合,或者更细粒度的连续执行边的组合。这里我们重点聚焦分支组合的边对,因为这是这段代码的核心测试关注点。

代码分支与所有可能的边对组合

这段代码有两个连续的if判断,我们把每个if的分支简化标记:

  • 第一个if分支:T(a<0为真,执行a=-a)、F(a<0为假,跳过第一个if块)
  • 第二个if分支:T(a>0为真,执行a++)、F(a>0为假,跳过第二个if块)

理论上的分支边对组合共有4种:

  1. T→T
  2. T→F
  3. F→T
  4. F→F

可行与不可行的边对分析

我们逐个验证这些组合是否能被实际输入触发:

  • T→T(可行):输入a<0(比如a=-3)。第一个if触发后,a变为3;第二个if判断3>0为真,执行a++,最终输出4。这条路径完全可覆盖。
  • T→F(不可行):没有任何输入能触发这个组合。因为如果第一个if触发(a<0),执行a=-a后a必然是正数,此时第二个if的判断a>0不可能为假,永远走不了F分支。这个边对是完全不可行的。
  • F→T(可行):输入a>0(比如a=5)。第一个if不触发,a保持5;第二个if判断5>0为真,执行a++,最终输出6。路径可行。
  • F→F(可行):输入a=0。第一个if不触发(0不小于0),第二个if也不触发(0不大于0),直接输出0。路径可行。

最大可能覆盖率

总共有4种分支边对组合,其中3种可行、1种不可行,所以最大边对覆盖率为 75%(3/4)。

如果从更细的节点连续边对来看(比如输入→第一个if判断、第一个if真→赋值等),所有连续边对都是可行的,但分支组合层面的不可行情况是测试中需要重点关注的——你永远找不到输入来覆盖这个边对,不需要浪费时间设计无效用例。

文本流程图说明

开始
  |
  v
输入a
  |
  v
[判断a<0?] → 是 → a=-a → [判断a>0?] → 是 → a++ → 打印a → 结束
          → 否 → [判断a>0?] → 是 → a++ → 打印a → 结束
                          → 否 → 打印a → 结束

注:从a=-a后的判断a>0?永远只会走“是”分支,所以a=-a→“判断a>0?否”这条路径是断裂的,对应不可行的边对组合。

内容的提问来源于stack exchange,提问作者BatmanForLife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:33:46