全绿的看板和“产品被验证过”是两回事。这次撞上的是最典型的一种:一套测试从项目一开始就是绿的,组件层的检查都过,直到有人问了一句——哪条测试从启动一路走到这个应用存在的理由?答案是没有。核心流程从来没有被任何测试执行过。不是测试失败,是测试从未存在;而“从未存在”在任何报表里都不会显示成红色。
它为什么能藏住:工具链对“缺失”不发信号。少一条测试,编译照样过,CI 照样绿;覆盖率报表只在有人去看的时候才说话,而且它不区分“哪条路径是整个产品的中心”。零件各自通过检查,和整机被完整开过一次,中间没有任何东西自动做对比——空白不是错误状态,所以它可以在一片绿色里一直活着。
修这个洞,顺序本身是承重的:
1. 先用一句话写下核心流程:从启动,到这个应用存在的那个结果。这句话写不出来,说明验证目标根本没定义;先补这句话,不是先补测试。 2. 再立一个空的 UI 测试骨架,只负责驱动这条路径,一条断言都不写。它的任务只有一个:证明这条路可以被自动化走通。走不通,就响在这里。 3. 最后才填真实断言。先写断言,测进去的是你对流程的假设,而不是流程本身。
之后把骨架变成可检查的状态:“有没有一条测试驱动核心路径”应当是一条明确的检查项,缺失时像失败一样报警,而不是等哪天有人恰好想起来。
一分钟自检:打开你最近一次的测试报告,数一数有多少条测试跨过不止一个界面、从启动一直走到产品存在的理由。数出来是零,绿板只证明零件没坏,不证明机器能开。