区别:语句覆盖、判定覆盖(分支覆盖)、条件覆盖、判定表测试

一、判定表测试和分支测试核心区别对比表

维度 判定表测试 (Decision Table Testing) 分支覆盖 (Branch Coverage)
归属类别 黑盒测试技术(FL-4.2.3) 白盒测试技术(FL-4.3.2)
测试依据 需求规格说明书(外部行为) 代码/程序结构图(内部逻辑)
关注焦点 条件组合(多条件交集的业务规则) 语句走向(判定节点的真/假路径)
覆盖目标 覆盖所有规则(有效+无效组合) 覆盖所有分支(判定结果的真/假)
典型缺陷 逻辑遗漏、规则冲突、条件互斥 判定逻辑错误、死代码、条件遗漏

二、深度拆解(以一个"登录场景"为例)

假设需求是:"用户输入用户名和密码,系统需验证有效性:用户名正确且密码正确,且验证码不为空。"

1. 判定表测试(验证"业务规则")
  • 视角:站在用户角度,验证这个业务规则是否正确。
  • 逻辑:把"用户名、密码、验证码"三个条件全部列出来,排列组合。
  • 覆盖要求:只要所有格子(规则)都被走过,就是100%覆盖。
  • 例子
    • 用例1:正确/正确/有 → 成功(覆盖规则1)
    • 用例2:错误/正确/有 → 失败(覆盖规则2)
    • 用例3:正确/错误/有 → 失败(覆盖规则3)
    • 用例4:任意/任意/空 → 失败(覆盖规则4)
  • 考点 :如果需求里漏掉了"验证码为空"的规则,判定表测试能立刻发现,因为表里有这个格子但没路径。
2. 分支覆盖(验证"代码走向")
  • 视角:站在开发角度,验证每一行代码是否都跑过了。
  • 逻辑 :拆解代码内部的 if-else 结构。
    • 判定1:用户名正确?(需覆盖真/假)
    • 判定2:密码正确?(需覆盖真/假)
    • 判定3:验证码不为空?(需覆盖真/假)
  • 覆盖要求 :每一个 if 的括号里的条件,都要取一次 TrueFalse
  • 例子
    • 用例1:用户名错(覆盖判定1的False)。
    • 用例2:用户名对,密码错(覆盖判定1的True,判定2的False)。
    • 用例3:用户名对,密码对,验证码空(覆盖判定1/2的True,判定3的False)。
    • 用例4:全正确(覆盖判定1/2/3的True)。
  • 考点 :如果代码里写了 if (验证码!= null) 但没写 else 分支,分支覆盖要求必须把这个 else 逻辑验证一下,否则覆盖率不到100%。

一、先明确判定节点的两种类型

流程图中的判定节点(菱形)分两类,是理解二者区别的基础:

  1. 单一条件判定 :如X > 10(仅1个条件);
  2. 多条件组合判定 :如(X > 10) AND (Y < 5)(2个条件,逻辑与)、(A = 2) OR (B ≠ 3)(2个条件,逻辑或)。

二、判定覆盖与条件覆盖的核心区别

以多条件判定节点(X > 10) AND (Y < 5)为例(判定结果为真时执行分支1,假时执行分支2),对比二者差异:

维度 判定覆盖(分支覆盖) 条件覆盖
核心目标 覆盖整个判定节点的真/假分支 覆盖判定内每个条件的真/假状态
覆盖要求 需让判定结果为 +各一次 需让每个条件的真/假状态都出现一次
用例设计(示例) 真:X=11、Y=4;假:X=9、Y=6 真1:X=11(X>10为真)、Y=6(Y<5为假);真2:X=9(X>10为假)、Y=4(Y<5为真)
覆盖程度 关注"判定的最终结果",粒度粗 关注"条件的独立状态",粒度细
检测能力 可发现判定分支的逻辑错误(如漏写else) 可发现单个条件的逻辑错误(如把X>10写成X≥10)
与语句覆盖的关系 100%判定覆盖→100%语句覆盖 100%条件覆盖≠100%判定覆盖(可能漏判定分支)

三、关键补充

  1. 单一条件判定的特殊情况
    若判定节点只有1个条件(如X > 10),判定覆盖和条件覆盖的要求完全一致(都需覆盖X>10为真、为假),此时二者无实际区别。
  2. 判定-条件覆盖
    为解决"条件覆盖可能漏判定分支"的问题,考纲中还提到判定-条件覆盖,要求同时满足判定覆盖和条件覆盖,是更严格的覆盖准则(示例用例:X=11、Y=4;X=9、Y=6;X=11、Y=6;X=9、Y=4)。

一、先明确单分支流程图的基础结构

假设单分支流程图包含:

  • 语句块S1判定节点D(条件:X>10) → 分支1(真:执行S2)/分支2(假:执行S3)→ 语句块S4
  • 总语句:S1、S2、S3、S4(4条)
  • 判定节点D:1个(对应2条分支:真分支/假分支)

二、语句覆盖和判定覆盖的核心区别

覆盖类型 核心目标 覆盖要求(单分支场景) 检测能力 覆盖程度
语句覆盖 执行所有可执行语句 只需让判定D为(执行S1→S2→S4),即可覆盖所有4条语句 最弱,无法检测判定逻辑错误(如把X>10写成X≥10) 最低
判定覆盖(分支覆盖) 执行所有判定的真/假分支 需让判定D为 (S1→S2→S4)+(S1→S3→S4),覆盖2条分支 比语句覆盖强,可检测判定的真假逻辑缺陷 更高

三、关键补充

  1. 判定覆盖=分支覆盖:ISTQB考纲中二者是同一概念,均要求覆盖判定节点的所有可能分支结果(真/假),无需额外区分。
  2. 覆盖充分性
    • 语句覆盖是最低要求,100%语句覆盖≠100%判定覆盖(比如单分支中若只执行真分支,语句全覆盖但判定假分支未覆盖);
    • 判定覆盖(分支覆盖)是比语句覆盖更严格的准则,100%判定覆盖一定能实现100%语句覆盖。
  3. 单分支场景的用例设计
    • 语句覆盖:1条用例(X=11);
    • 判定覆盖(分支覆盖):2条用例(X=11、X=9)。
相关推荐
ADHD多动联盟6 小时前
提升学生注意力涣散问题的情绪管理与学习能力策略
学习·学习方法·玩游戏
無限進步D1 天前
关于高校C语言课程的学习方法
c语言·开发语言·学习方法·入门
天若有情6731 天前
用编程思维重构学习:从IoC到响应式,打造高效知识体系
学习·算法·重构·ioc·学习方法·依赖注入·响应式数据
victory04311 天前
agent学习学习方法分享
学习·学习方法
_饭团2 天前
指针核心知识:5篇系统梳理3
c语言·数据结构·算法·leetcode·面试·学习方法·改行学it
木梓辛铭2 天前
windows下部署openclaw详细方法及错误处理办法
windows·学习方法·持续部署
Aurorar0rua2 天前
CS50 x 2024 Notes Scratch - 07
学习方法
June bug2 天前
ISTQB CT-GenAI v1.0 K1/K2/K3 考点清单
经验分享·职场和发展·学习方法
卡梅德生物科技3 天前
卡梅德生物科普:CD140a(PDGFRα)靶点深度解析:机制、药物研发与未来趋势
大数据·人工智能·面试·职场和发展·学习方法