主题
第 7 章 测试 · 让机器检查机器
第一册第 14 章的验证金字塔,你已经爬了三年,但每次都是人肉爬。AI 时代有个残酷的算术,搭档的产量是你验证速度的一百倍,人肉验证注定成为瓶颈。解法只有一个,把验证也变成代码,让机器检查机器。这就是测试(Test)。
一条单元测试(Unit Test)长这样,给一小块功能一个笼子,喂它固定的输入,断言它必须给出的输出。
js
test('过期凭证必须验证失败', () => {
const cert = makeCert({ expired: true });
expect(verify(cert)).toBe(false);
});读出来就是一句验收标准:"过期的凭证,验证必须不通过。"发现了吗?测试就是第 5 章验收标准的可执行版。规格里写"怎么算过",测试把它写成机器一秒钟能跑一遍的代码。npm test 一敲,几百条验收标准全查一遍。
测试的大头价值在之后的每一天,回归保护。"改了 A,坏了 B"是软件世界最古老的鬼故事,而 AI 改代码又快又猛,闹鬼频率只会更高。有测试在,B 一坏,红灯立刻亮,鬼当场现形。所以说测试是买给未来的保险,AI 时代改动越频繁,这份保险越值钱。
和搭档的配合有一个必须点破的陷阱,让写代码的 AI 顺手写测试,它可能自导自演,测试恰好只覆盖它写的路径,皆大欢喜,全是漏洞。破法是分工。让它写测试可以,但边界用例由你出,空输入,连点两次,断网,超长文本(第一册第 14 章那张老清单),还有你业务里的特殊情形,过期的凭证,重复的铸造请求。你出题,它答题,测试才真的在替你把关。顺带一条性价比真相,人审测试比人审实现划算得多,测试短,意图裸露,一眼能看出它到底在保证什么。
出事时想起我
"改了 A 坏了 B"又来了,这块地方缺回归测试,补上,让鬼只能闹这一次。AI 说"测试全过"但你心里发虚,查测试覆盖了谁出的用例,全是它自己出的,就轮到你出题了。
关键领悟
测试是验收标准的可执行版,是买给未来的回归保险。AI 时代的分工,它写测试,你出边界。出题权在人手里,机器检查机器才可信。
试一试
挑一个已上线的小功能,让 AI 给它补三条测试,一条正常路径由它出,两条边界用例由你出。跑红一次(故意改坏代码),亲眼看保险生效。