看板全绿,和“核心流程从未被任何测试执行过”可以同时为真。撞见过这样一个项目:构建、单测、静态检查,每一项都绿;而应用存在的那个理由——用户打开它要走的那条主路径——没有任何一条测试碰过。不是测试挂了,是测试不存在。
为什么这个缺口能安静地活很久:失败会变红,缺席只是安静。CI 把“从未运行”和“运行且通过”渲染成同一种绿,而所有常规检查都停在零件层——每片零件单独看都是好的,没有一条检查在问“整个产品能不能走通它存在的那条路”。组件层的绿,太容易被读成整体的绿。
修复模式,顺序是承重的:
1. 先搭骨架:建一个空的 UI 测试,只做两步——启动应用、走到核心流程的入口——让它进 CI 跑绿。这一步的目的不是覆盖率,是把缺口变成看得见的结构:从此“没有核心流程测试”是一个显式的缺失状态,而不是默认的安静。 2. 骨架绿了,再填真实流程:在已经证明能运行的装置里,把核心工作流一步步补进去。
顺序不能反的原因:骨架和用例一起写,任何失败都要在一个从未证明能跑的测试装置里调试,你分不清是流程坏了还是装置坏了。骨架先行,把“装置能跑”和“流程对不对”拆成两个独立可判定的问题——之后每一次红,才有明确的含义。
一分钟自检,现在就能做:在 UI 测试目录里搜你产品核心动作的名字——主界面那个按钮、那条唯一入口。零命中,就是核心路径从未被测过,无论看板多绿。顺手看一眼测试输出的 “Executed N tests” 那一行:读执行数,不读结论——执行 0 条也是绿的。