AI 生成的代码怎么找隐藏 bug,3 个土办法
跑通了的 AI 代码,未必是对的。这一点我是被坑过才认的:交付出去的一个模块,功能演示全过,上线没几天边界数据一进来就不对了。AI 生成的代码怎么找出隐藏 bug,我的办法都不高级,三个,但好用。
它们共同的前提是:没有测试、没有文档、作者(AI)也问不出来。这种情况下只能靠构造输入去逼它露馅。
AI 生成的代码怎么找出隐藏 bug:拿边界值往里灌
第一个办法最简单:正常输入跑通之后,立刻换极端值再跑一遍。
AI 生成的代码有个稳定特征——它对「正常情况」写得很顺,对空值、零、超长、负数这些边界,要么没处理,要么处理得自相矛盾。
具体动作:把每个入口参数都试一遍空、零、最大值、负数,看它返回什么。不用写测试框架,手工点也行。
光这一步就能捞出相当一部分问题,成本却几乎为零。
二、让同一份逻辑跑两遍,对比结果
第二个办法是找不一致。
同一个业务判断,AI 经常在不同位置各写一份。两份逻辑平时看着一样,遇到特殊输入就会分叉。你不需要知道哪份是对的,只要发现两份结果不同,那里就一定有 bug。
具体动作:找出重复实现了同一规则的地方,用同一组输入分别跑,对比输出。清理重复代码的时候要小心,注意点我在AI 写出来一堆重复代码,删之前先看这里里提过。
这个方法的好处是不依赖你的业务理解,纯靠对比就能定位。
三、把中间状态打出来看
第三个办法是把黑盒拆开。
AI 写的代码经常把好几步压在一个长表达式里,你只能看到输入和最终输出。中间某一环悄悄改了数据,从结果上完全看不出来。
具体动作:在关键节点加打印,把每一步之后的数据打出来,看它在哪一步跟你预期的不一样。
这一步不是为了找错,是为了建立你对这段代码的信任边界——打过之后你就知道哪几段是可信的。
优先做哪一个
如果只有一个小时,我会选第一个。
边界值测试的投入产出比最高:不用理解业务、不用改造代码、不需要工具,纯粹是构造输入。而且 AI 代码的问题恰好就集中在边界上。
第二个办法排第二,因为它能顺带暴露重复实现这个结构问题。第三个最费时间,留到前两个都没找到、但你确信有问题的时候再用。
代码跑不起来和跑起来但有 bug 是两类问题,前者我另有一篇AI 写的代码跑不起来,先查这 5 个地方。
找 bug 之前值得先做的一件事
如果你还没读过这份代码,先读再测,效率差很多。
不懂业务逻辑的情况下灌边界值,你会分不清「这是 bug」还是「本来就这么设计的」。建立理解的那套顺序,我写在AI 写的代码没注释,怎么快速读懂里了。
常见问题
Q:AI 生成的代码怎么找出隐藏 bug,一定要写单元测试吗?
A:不一定。有测试当然更好,但构造边界输入手工跑,能覆盖大部分高频问题。关键是「主动构造输入」,而不是等着用户帮你发现。
Q:代码能跑通、功能也对,还要继续找 bug 吗?
A:要看这个功能离钱有多近。演示性质的可以放,涉及金额计算、权限判断、数据落库的,一定要过一遍边界。这些地方出错,修起来远比提前检查贵。
Q:让 AI 自己审一遍自己的代码有用吗?
A:能起点作用,但不能替代你动手。它审自己的代码时,容易沿着当初生成的思路走,看不到自己漏掉的前提。你自己灌几个极端值,往往比它审一遍更有效。
相关阅读
- AI 写业务逻辑为什么总漏,我找到 3 个原因
- AI 写出来一堆重复代码,删之前先看这里
- AI 写的代码太乱,我的 4 步重构顺序
- AI 写的代码没注释,怎么快速读懂
- AI 写的代码跑不起来,先查这 5 个地方
本文作者西米,37 岁程序员,一个人加五个 AI 员工在跑一家公司。踩过的坑和真实账本都写在公众号「西米分享」。
完整代码、踩坑清单与最新进展,都在公众号。
📱 关注公众号「西米分享」