上个月底,我们给自家平台做了一次体检。报告拿回来,几乎是全绿的——测试通过、门禁通过、部署成功,每一项都是绿灯。
我们盯着这份全绿的报告,反而开始担心。
先说这次体检的规矩
我们找了一个"第三方视角",对平台做一次只读的量化体检。规矩只有两条:
第一,每个数字必须可复算——附上样本量、判据、命令和局限。
第二,测不到的,写「未完成」,不许写「没问题」。
就这两条。听起来不难,做起来才知道有多反直觉:大部分体检报告的默认写法,是把"没测"包装成"良好"。
真信号:有三块,是真的硬
一、数据层。 一百多个索引,抽查的典型查询全部命中索引、零全表扫描;数据库零碎片;归档干净。最重要的是备份——我们不是看它"存在",是真的解压恢复了一次:完整性校验通过,再把四张关键表和线上逐个对数,差异都在两小时窗口内。备份"存在"和备份"能用",中间隔着一次真的打开。
二、鉴权面。 不带身份去访问几十个接口,除了两个设计上就公开的入口,其余全部被拒。一百多条会改数据的路由,绝大多数在注册时就挂了鉴权。匿名越权写入,基本不存在。
三、真漏洞在被真修。 体检前刚关掉一条危险路径:知道终端号,就能改写真车的凭据。这种修复改的是逻辑本身,不是文档。这是比任何绿灯都值钱的信号。
假信号:绿得越稳定,越要问它挡住了什么
「274 个测试全过」——拆开看,有两个用例连续八次体检都是"环境未就绪,放行"。它们不是通过了,是从未被真正执行过。更微妙的是,我们自己的自查清单里也躺着一条"豁免腐坏"——独立测量和自查指向了同一处,只是谁都没去处置。
「文件拆分完成」——行数确实降了,但那个五千多行的主函数还原地坐着,耦合只是从"文件"搬进了"函数"。按注册数算,迁移完成度三成。拆了文件,不等于拆了复杂度。
「门禁在跑」——服务端的兜底门禁其实从没真正启用,客户端那一道成了唯一防线;审计日志里还有上千次显式跳过的记录。防线只剩一道的时候,它挡不挡得住,取决于每个人都永远不犯错。

最扎心的一条发现
平台的测试并不少——几百个用例,读接口的覆盖有八成。
但写接口——改组织归属、改计费、给真车下指令——覆盖不到一半。而恰恰是这些路径,错了有物理后果:一次错写就是越权,一条错指令就下发给在跑的车。
这不是"测试少",这是测试分布与风险分布正交:投入花在了好测的地方,风险藏在难测的地方。
覆盖率的数字很好看,风险却不在被覆盖的那部分里。
后来补了什么
体检的价值不在报告,在改法。按"每单位投入消除多少风险"排了序:
一、给高后果写路径补回归。 按域分批,先做"下发给真车"和"改数据可见范围"这两类。判据不谈覆盖率,每条写路由至少三个断言:没身份要 401,身份不够要 403,身份对了才 200。
二、恢复演练写成脚本,每月一号自动跑。 行数差超过 5% 就报警。演练本身不复杂——复杂的是"想起来要练"。
三、服务端兜底门禁真正装上。 跳过开关从"日常敞开"改成"按需+事后补跑",让第二道防线重新存在。
四、给长期受阻的旧账做一次清算。 解冻、降级、关单,三选一,不许"沉默的失败"躺在账上生利息。
带走一句话
如果你也在选一套车队管理平台,别只问"你们测试通过率多少"。问一句:你们的绿灯,判据是什么?最近一次有人复核它挡住了什么,是什么时候?
我们做这一行越久越觉得,可靠不是全绿。可靠是每个绿灯都有人查过它的判据,每个"未完成"都敢写进报告。
绿得越稳定,越要问它挡住了什么。
这里是琪致,下篇见。
本文同步收录在琪致官网「808 手记」
全文与往期:qizhi808.com/notes/