Cantata中文网站 > 热门推荐 > Cantata如何核对MC/DC覆盖率与条件覆盖数据 Cantata覆盖率统计与实际测试路径不一致如何复核
教程中心分类
Cantata如何核对MC/DC覆盖率与条件覆盖数据 Cantata覆盖率统计与实际测试路径不一致如何复核
发布时间:2026/10/31 15:05:58

  测试已经进入某个分支,覆盖率报告却仍有未完成项;补了几个用例,条件覆盖提高了,MC/DC却没有变化。这些现象未必是统计错误,也可能是测试只触发了判定结果,没有证明每个条件都能独立影响结果。Cantata能够按代码结构、测试用例和构建变体查看覆盖数据,复核时应把具体表达式与执行记录对应起来。以下采用英文界面的视图名称,配置位置以所用版本为准。

  一、Cantata如何核对MC/DC覆盖率与条件覆盖数据

 

  条件覆盖关注各个条件是否实际取得过真、假结果,MC/DC还要求证明条件对整个判定的独立影响。两项指标应分别检查,不能用分支执行次数代替。

 

  1、确认采集指标和MC/DC类型

 

  覆盖率查看器只能分析已经采集的数据。测试构建没有启用相应插桩时,事后切换显示指标,也无法补回缺少的执行信息。

 

  ①打开工程使用的【ipg.cop】,核对覆盖率规则集及条件、逻辑表达式相关插桩选项。

 

  ②对照测试要求,确认【MC/DC】采用【Unique-cause】还是【Masking】,记录本次配置。

 

  ③重新构建并运行测试,保留对应的【.COV】数据文件与【.CTR】报告。

 

  2、从汇总结果定位到条件表达式

 

  ①在【Coverage Results Explorer】中选择本次测试结果,展开到目标源文件和函数。

 

  ②在【Coverage Viewer】中定位未完成的判定,展开查看同一行中的条件及逻辑运算结构。

 

  ③分别查看【Conditions】和【MC/DC】数据,记录尚未满足的项目。

 

  一行代码可能包含多个条件,整行已经执行,并不代表内部各项要求都已满足。查看颜色提示时,还应核对当前指标和筛选范围,避免把语句覆盖的显示结果当成MC/DC结论。

 

  3、按测试用例核对独立影响

 

  ①在【Coverage Viewer】中按测试用例筛选,记录目标表达式中各条件的实际求值结果及整个判定结果。

 

  ②对需要证明独立影响的条件,选取对应测试对,按照已选【Unique-cause】或【Masking】规则检查,并记录用例编号。

 

  二、Cantata覆盖率统计与实际测试路径不一致如何复核

 

  “代码走到了”和“满足覆盖要求”存在区别。复核时既要检查表达式如何求值,也要确认报告对应的源码、可执行文件及结果范围。

 

  1、检查短路求值和桩返回值

 

  对于A与B组成的逻辑与表达式,A为假时,B可能根本没有求值。测试输入虽然给B安排了一个值,覆盖工具记录的仍是实际执行情况。

 

  ①在【Coverage Viewer】中定位【A&&B】,对照源代码检查条件的求值顺序。

 

  ②打开相关测试脚本,核对进入该判定前的输入、全局状态和桩函数返回值。

 

  ③将逻辑与中的A设为真,分别安排B为真、假,重新执行相关用例。

 

  ④对逻辑或表达式【A||B】,安排A为假,再核对B的求值记录。

  2、核对源码、构建与结果文件

 

  ①在【Coverage Results Explorer】中选择单次执行的数据,暂时排除其他【.COV】文件。

 

  ②对照构建日志,核对源码版本、条件编译宏和实际运行的测试可执行文件。

 

  ③在【Coverage Viewer】中按构建变体筛选,比较同一函数在不同变体下纳入统计的代码。

 

  ④打开对应【.CTR】,核对报告范围、覆盖指标及生成记录。

 

  同一份源码经过不同宏定义编译,实际参与测试的代码可能不同。合并多个变体后的数据,也不能直接解释为某一个变体已经全部覆盖。若界面和报告数值不同,还应核对测试用例、上下文与结果文件的筛选条件,确认双方使用相同范围。

 

  三、Cantata覆盖率差异确认后怎样补测和留证

 

  确定差异来源后,应围绕缺失的条件补充测试,而非继续增加相似输入。新增用例要有明确目的,执行后也应确认原有功能断言仍然成立。

 

  1、针对缺少的独立影响安排测试对

 

  以没有副作用的简单逻辑与表达式为例,真、真与真、假可以展示B对判定的影响;只有这两个用例,还不足以证明A的独立影响。

 

  ①在测试脚本中保留A为真、B为真的用例,新增A为假、B为真的输入组合。

 

  ②执行新增用例,在【Coverage Viewer】中重新核对【A&&B】的条件记录和MC/DC结果。

 

  ③对重复条件或相互关联的条件,按已选【MC/DC】类型复核可用测试对,记录无法独立改变的原因。

 

  2、检查执行结束时数据是否完整

 

  ①单独运行目标用例,检查测试日志中是否出现异常退出、复位或结果输出中断。

 

  ②核对本次【.COV】是否成功生成,并确认查看器加载的是本次结果。

 

  ③修正执行或数据回收问题后,重新生成【.CTR】,对比相关条件的覆盖变化。

 

  测试在目标板上进入某条路径,但进程或设备随即异常结束时,覆盖数据可能没有完整保存。此时应先查明执行与数据回收问题,不能仅凭一条调试输出就判定报告有误。调试记录可以帮助定位路径,最终仍需与成功采集的覆盖数据对应。

 

  3、把补测结果与原结果分开核对

 

  ①在【Coverage Results Explorer】中分别选择补测前、补测后的结果,使用相同指标和筛选范围比较。

 

  ②在【Coverage Viewer】中逐项检查原缺口,记录对应的新用例及剩余未完成条件。

 

  ③保存测试脚本、【ipg.cop】、构建记录、【.COV】和【.CTR】,注明源码版本及构建变体。

 

  ④对无法到达的条件,保留数据关系和代码逻辑的分析记录,按项目评审流程处理。

  总结

 

  Cantata的覆盖率数据能够帮助团队发现测试尚未触及的逻辑细节,MC/DC则让条件之间的关系得到更细致的检查。覆盖率的价值来自清楚、可追溯的测试证据,而非单独的一项百分比。将功能断言、实际求值过程和构建条件结合起来,既方便解释未完成项,也有助于判断补测是否解决了原来的问题。希望这些复核方法能帮助大家减少对覆盖结果的误读。如有Cantata相关需求,欢迎联系交流。

176 5129 0128