回归Bug是最重要的结果
发布: (2026年1月13日 GMT+8 17:55)
3 分钟阅读
原文: Dev.to
Source: Dev.to
功能并不是重点
两个 AI 系统都成功实现了请求的 UI 功能。那部分并不有趣。关键在于超出请求范围的地方出现了什么问题。
回归
更改后:
- 在编辑器中选中文本
- 触发 “Replace with” 上下文操作
- 什么也没有发生。没有错误。
这是生产软件中最危险的一类 bug。
为什么会在 AI 生成的代码中出现
从工程角度看,这种失败是可以预料的:
- 提示强调了新功能。
- 现有行为是隐式的,没有明确声明。
- 没有测试显式保护该交互。
- AI 系统优化的是局部正确性。
实现之间的差异
仔细查看代码会发现有意义的取舍:
- 一种方法优先考虑了用户体验的丰富性和本地化。
- 另一种强调模块化助手、更安全的选择器以及测试覆盖率。
一个具体例子:
// Both work, but only one is designed for DOM and selector safety
encodeURIComponent(...); // general URL encoding
CSS.escape(...); // safe for CSS selectors
这些选择在几个月后才会显现影响,而不是生成后几分钟。
为什么单元测试起了决定性作用
只有一种实现加入了覆盖以下内容的单元测试:
- 状态迁移
- 正则表达式转义
- 替换逻辑的边缘情况
这些测试不仅验证了正确性——没有它们,bug 很可能会被发布。
启示
如果在真实项目中评估 AI 编码工具,应该问:
- 哪些已有行为受到保护?
- 哪些假设仍然是隐式的?
- 什么会悄悄出错?
演示无法回答这些问题。
最后思考
最有价值的结果不是功能本身,而是识别出 AI 编码系统仍然像初级工程师一样会出错的地方——这才是现实软件开发中重要的区别。