做单元测试或组件测试时,覆盖率经常会被拿来当作评审依据:要么你在TESSY里找不到覆盖率入口,要么跑完测试发现Coverage Viewer是灰的,再不然就是看到C0和C1数值差很多却说不清差别。下面按可操作步骤把开启路径、关键开关、以及语句覆盖与分支覆盖的判读逻辑一次讲清,方便你把覆盖率真正用起来而不是只截图交差。
一、TESSY覆盖率怎么开启
覆盖率在TESSY里不是单独跑的功能页,而是跟着一次测试执行走:先在执行前选好要统计的覆盖类型与插桩范围,再执行测试,最后用Coverage Viewer复盘。
1、先确认测试对象已能正常执行
在左侧项目结构里选中你要统计覆盖率的Test Object,先用不带覆盖率的方式跑一次用例,确保编译、链接、下载或本机运行链路通了,避免把编译器配置错误误判成覆盖率问题。
2、从测试执行入口打开执行对话框
在TESSY主界面依次点击【Options】→【Test Execution】→【Execute】,进入Execute Test对话框;如果你习惯跳过对话框直接跑,也可以先用对话框确认一次选项再固定流程。
3、在Instrumentation里打开覆盖率插桩并选范围
在Execute Test对话框里找到Instrumentation下拉框,把【None】切换成带覆盖率的选项;做分支覆盖时常见选项是【C1 Test Object】只统计测试对象自身,或【C1 Test Object and called Functions】把被调用函数也纳入统计。
4、勾选你要的覆盖率类型并执行测试
覆盖率类型在TESSY里会以列表形式提供,语句覆盖对应Statement Coverage也称C0,分支覆盖对应Branch Coverage也称C1,你按需求勾选后点击【Execute】开始测试;覆盖率是可选启用的,启用后会对源码做自动插桩。
5、用Monitoring打开Coverage Viewer复盘结果
测试执行完成后,点击【View】→【Monitoring】启动Coverage Viewer;如果【Monitoring】是灰色不可点,通常意味着刚才Instrumentation选了【None】或这次执行没有带覆盖率插桩,需要回到Execute Test对话框重新选择。
二、TESSY覆盖率怎么区分语句与分支
很多团队把覆盖率当作一个百分比,但C0与C1衡量对象不同,差异会直接影响你怎么补用例、怎么解释“为什么都跑到了却还不算覆盖”。更关键的是,C0高并不等价于逻辑风险低,C1的低值往往反而更能提示条件分支没被踩到。
1、语句覆盖C0看的是可执行语句有没有被跑到
语句覆盖的定义很直观:每条可执行语句在测试期间至少执行过一次就计入覆盖,但这并不代表分支边界被验证充分,甚至在语句覆盖已满的情况下仍可能隐藏严重缺陷。
2、分支覆盖C1看的是每个决策的两条分支是否都走过
分支覆盖关注决策点,核心是同一个判断要同时出现为真与为假两种结果;即使源码里没有显式写else,分支语义上仍然存在一条“隐形else分支”,这也是很多人C1始终上不去的常见原因。
3、同一段代码里C0与C1可能出现明显分叉
你可能会遇到C0接近满值但C1只有一半的情况,典型就是某个if只测了为真路径,语句都执行了,但为假路径从没走过;在白皮书示例里,语句覆盖100并不能阻止分支未覆盖带来的风险暴露,这类差异用C1更容易一眼看出来。
4、在Coverage Viewer里用视图对齐概念再对齐证据
Coverage Viewer会把覆盖信息放进流程图与源码高亮里,你可以在分支相关视图里看到决策与分支用颜色区分,同时在源码视图里定位到对应判断点;这类可视化呈现本质上就是把C0的语句执行痕迹与C1的分支到达情况拆开摆在你面前,便于评审时讲清楚“补的到底是哪一条路径”。
三、TESSY覆盖率报告怎么看
开启覆盖率只是第一步,真正容易卡住的是后续动作:哪些红色分支需要补用例,哪些分支天生不可达需要说明,哪些覆盖范围该算到被调用函数里,最后又怎样把证据落到报告里。把这套闭环跑顺,你的覆盖率数字才会稳定、可复现,也更经得住评审追问。
1、用流程图的定位按钮快速扫出缺口
在Coverage Viewer里优先用工具栏的【Next Uncovered Decision】与【Next Unreached Branch】顺序跳转,把“未覆盖的决策点”和“未到达的分支”按清单过一遍,比盯着百分比更快锁定补测目标。
2、先把统计边界说清楚再谈覆盖率高低
同样是C1,Instrumentation选【Test Object】与选【Test Object and called Functions】统计口径不同,前者更像单元级自证,后者更贴近组件级调用链覆盖;评审前建议固定一个口径并在报告里保持一致,避免同一模块不同人跑出来的覆盖率互相打架。
3、遇到不可达分支要写清理由而不是硬补用例
有些分支从语义上就不会发生,比如switch里隐含的default分支在特定循环边界下可能永远不会被执行,这时正确做法不是凑用例,而是给出不可达说明,也就是对该分支做合理性论证。
4、用Coverage Review把“已审查未执行”的代码留痕
如果项目里存在确实不执行但又必须保留的代码段,可以用TESSY的Coverage Review在源码行上加评审标注与备注,把“未到达”与“已审查”区分开来,并让这些审查记录进入汇总报告,避免每次复评都重复解释。
5、把覆盖率证据纳入正式报告输出给评审链路
覆盖率结果既可以在Coverage Viewer里看细节,也能汇总进测试报告中,报告通常会同时包含覆盖率汇总与测试结果概览;建议你在提交前固定一次“执行用例→导出报告→归档”的动作顺序,让同一份证据在后续回归里可直接对比。
总结
在TESSY里开启覆盖率的关键是先从【Options】→【Test Execution】→【Execute】把Instrumentation打开,再用【View】→【Monitoring】进入Coverage Viewer做复盘;区分C0与C1时要抓住语句是否执行和分支是否双向到达这两个口径差异,并把缺链补测、不可达说明、审查留痕与报告归档连成一条闭环。覆盖率数字才会从“截图指标”变成“能指导补测与解释风险”的证据链。