Cantata中文网站 > 最新资讯 > Cantata如何生成单元测试覆盖率与合规报告 Cantata报告缺少关键覆盖率明细时如何补全
教程中心分类
Cantata如何生成单元测试覆盖率与合规报告 Cantata报告缺少关键覆盖率明细时如何补全
发布时间:2026/10/31 15:07:05

  单元测试执行完成,报告里却只有一个覆盖率百分比,找不到未执行的分支,也看不出哪些用例贡献了覆盖。这类报告用于日常查看还算方便,交给评审人员时就会遇到问题。Cantata的覆盖率采集、结果展示和报告生成分属不同环节,缺少明细时,要确认数据有没有采到,再检查报告是否选对了范围。

  一、Cantata如何生成单元测试覆盖率与合规报告

 

  报告内容取决于执行前的覆盖率配置,导出格式不能替代数据采集。以下结合Cantata结果视图和覆盖率扩展介绍操作,界面入口随版本及集成环境有所差异。

 

  1、按测试要求选择覆盖率指标

 

  语句覆盖、判定覆盖和MC/DC检查的内容不同,不能拿一项的通过比例代替其他指标。项目要求应落实到覆盖率配置中,同时明确需要检查的目标。

 

  ①打开当前测试工程使用的【覆盖率选项文件】,核对对应的【目标部署】及被测文件范围。

 

  ②使用VS Code覆盖率扩展时,打开命令面板,执行【Cantata:Edit Options File(UI)】,在【Cantata options file】中填写选项文件路径。

 

  ③在【Coverage Rule Set】中选择适用规则集,或通过【覆盖率指标复选框】设置所需指标,保存文件。

 

  2、重新构建并取得本轮数据

 

  ①使用保存后的【覆盖率选项文件】重新构建【测试可执行程序】,运行选定的【单元测试】。

 

  ②将目标环境生成的【.cov文件】及相关【测试结果文件】取回当前工程,保留本轮原始文件。

 

  ③打开【Coverage Results Explorer】,展开被测【源文件】和【函数】,在【Coverage Viewer】中查看覆盖情况。

 

  修改采集指标后,应重新构建和执行。旧数据没有记录的指标,不能仅靠重新导出补出来。目标环境运行结束,也要确认结果已完整取回,避免报告继续读取上次文件。

 

  3、生成可检查的报告文件

 

  Cantata的诊断报告和用于合规证据的测试结果应分别核对。导出HTML方便阅读,但文件扩展名本身不能说明证据是否齐全。

 

  ①检查本轮生成的【.ctr文件】,核对测试结论、覆盖率指标及目标检查结果。

 

  ②使用VS Code覆盖率扩展时,选中已有覆盖率数据的【源文件】,执行【Cantata:Generate Coverage Report】,生成覆盖率【CTR报告】。

 

  ③需要HTML形式时,按安装版本的工具说明,使用【cppctr2html】转换对应【.ctr文件】,打开生成的【HTML报告】检查内容。

 

  二、Cantata报告缺少关键覆盖率明细时如何补全

 

  缺少明细不一定是测试没执行。结果可能被筛选,也可能没有按要求采集,处理方式要根据原始数据判断。

 

  1、检查显示范围是否收窄

 

  ①打开【Data Manager】,检查当前选入的【覆盖率文件】和【测试运行】,补选本轮需要分析的数据。

 

  ②在【Coverage Results Explorer】中检查【覆盖率指标】、【测试用例】、【构建变体】及【上下文】筛选,恢复所需范围。

 

  ③展开目标【函数】,在【Coverage Viewer】中查看具体语句、判定及条件的覆盖状态。

 

  如果视图中有明细,而导出文件没有,可以沿报告范围和内容设置继续检查。若视图同样没有数据,就应回查采集和执行过程,反复导出通常解决不了问题。

  2、确认缺少的指标是否实际采集

 

  报告中出现语句覆盖率,不代表同时采集了条件覆盖或MC/DC。复合条件即使经过一次执行,也可能仍有未满足的覆盖要求。

 

  ①打开本轮使用的【覆盖率选项文件】,对照缺失项目检查【Coverage Rule Set】及相关【指标选项】。

 

  ②补选要求采集的【覆盖率指标】,重新构建【测试可执行程序】。

 

  ③重跑相关【测试用例】,用新生成的【.cov文件】重新检查并生成报告。

 

  3、核对结果对应的源码和构建变体

 

  ①对照【源码版本】、【预处理宏】、【目标部署】和【构建日志】,核实报告对应的构建。

 

  ②在【Data Manager】中选取相应【覆盖率文件】,按【构建变体】分别查看结果。

 

  同一份源码在不同宏定义下可能生成不同代码。某个函数未进入本次构建时,报告无法提供它的运行覆盖明细。合并变体后的覆盖率,也不能直接说明每个变体各自都满足要求。

 

  4、检查目标运行和文件回传

 

  ①打开本轮【执行日志】,检查测试是否正常结束,以及【覆盖率结果文件】是否成功输出。

 

  ②核对【.cov文件】、【.ctr文件】的保存位置和生成时间,重新取回遗漏文件。

 

  ③对结果不完整的【测试运行】重新执行,再生成对应【报告】。

 

  若目标环境采用延迟分析,应按该部署的流程,在主机端完成覆盖率检查和报告生成。只有目标运行记录,没有后续分析结果,仍可能缺少目标达成情况。

 

  三、Cantata怎样补齐评审需要的覆盖率证据

 

  恢复明细后,还要确认它能回答评审中的具体问题,例如未覆盖位置在哪里、哪些测试执行过、汇总包含哪些运行。

 

  1、把未覆盖位置对应到补测用例

 

  ①在【Coverage Results Explorer】中定位未覆盖的【函数】或【代码结构】,打开对应【源文件】。

 

  ②回到相关【测试脚本】,调整【输入参数】、【桩返回值】和【预期检查】,补充缺少的执行场景。

 

  ③运行新增【测试用例】,按【测试用例】筛选覆盖率,核对新增数据。

 

  补测应同时验证行为和覆盖情况。只让代码走到某一行,却没有检查返回值、输出或调用结果,留下的功能验证依据仍然有限。对无法执行的代码,也应保留分析说明,不能直接从统计中删去。

 

  2、核对汇总方式并保存原始结果

 

  ①保存参与汇总的【.cov文件】清单,核对对应【源码版本】、【构建变体】和【测试运行】。

 

  ②需要形成合规汇总证据时,按安装版本支持的流程,使用【Cantata测试脚本】或【CPPGETCOV】处理覆盖率数据,检查生成的【.ctr文件】。

 

  ③将【CTR报告】、【HTML报告】、【测试脚本】和【覆盖率配置】一同归档。

 

  诊断界面中看到汇总比例,并不等于已经生成相应的合规证据。提交前还应对照项目适用的工具安全手册、资格或认证资料,确认报告生成方式符合项目约定。

  总结

 

  一份便于复查的覆盖率报告,应让接手人员能找到数据来自哪次构建、覆盖到什么位置,以及仍有哪些缺口。覆盖率达到目标,也不能替代需求验证和异常场景测试。日常保留原始结果与配置,后续补测、版本比较和评审都会省去不少查找工作。希望这些内容能帮助大家整理报告,如有相关需求,欢迎沟通咨询。

读者也访问过这里:
176 5129 0128