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

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

维度 判定表测试 (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)。
相关推荐
Cloud_Shy61819 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 30 - 32)
开发语言·人工智能·笔记·python·学习方法
中小企业实战军师刘孙亮2 天前
快消纺织五金怎么融合?三大业态协同发展战略思路-佛山鼎策创局破局增长咨询
学习·面试·创业创新·制造·学习方法
Cloud_Shy6182 天前
解读《Effective Python 3rd Edition》:从练气到老魔(第四章 Item 27 - 29)
开发语言·人工智能·经验分享·python·学习方法
lengjingzju2 天前
符·形·音·意(SFEM):一种面向通用智能的四维认知架构
设计模式·ai·学习方法
法雅特吉他2 天前
吉他面板材质怎么选?西提卡云杉单板深度解析
经验分享·新媒体运营·学习方法·流量运营·材质·内容运营
Cloud_Shy6183 天前
解读《Effective Python 3rd Edition》:从练气到老魔(第四章 Item 25 - 26)
开发语言·人工智能·经验分享·笔记·python·学习方法
AI科技星4 天前
精细结构常数α的多维度物理比值特性及空间螺旋模型研究
人工智能·线性代数·架构·概率论·学习方法
AI科技星4 天前
基于奇合数边界的离散解析数论与双螺旋宇宙本体大统一体系论文全部数学公式汇总表
人工智能·算法·机器学习·架构·学习方法
AI科技星4 天前
基于奇合数边界的离散解析数论与双螺旋宇大统一体系(中英文双语纯净终稿)
人工智能·线性代数·架构·概率论·学习方法
我命由我123454 天前
工程中安全帽颜色含义
运维·经验分享·学习·职场和发展·求职招聘·职场发展·学习方法