前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
返回 AI 情报前线
All News · 全部资讯9799
  • AI Studio应用可私密部署到安卓
  • AI重构通过测试,仍可能破坏接口契约
  • 智能体注册测试需明确邮件领取规则
  • 日合并三万次,Anthropic 重构版本管理
  • 用 ONNX 在浏览器本地分离音乐音轨
  • Agent 安全测试为何漏掉工具泄密
  • LLM 插件接入 Argon,选型需看任务总成本
  • polyweave 为 Claude Code 扩展游戏素材检查
  • 工具越多越易选错:Agent工具集瘦身实践
  • Liquid开放24B推理模型,面向本地Agent
  • AWS 开源 2B 决策模型,专做选项判断
  • AI 代码审查太吵,会让真问题被忽略
  • Gemini 视频转仿真演示打通机器人训练
  • RAG 检索不准,先评测嵌入模型
  • 实测 agent-hooks:演示不等于兼容认证
  • 让 Claude Code 直接查询 Grafana 排障
  • 让智能体付费调用接口并隔离钱包凭据
  • Copilot 正式接入 Gemini 4 Argon
  • AI 写码的回报取决于审查与反馈
  • 128GB 苹果芯片 Mac 的 oMLX 部署调优
  • CodeAct 用可执行代码组织 Agent 行动
  • 实测 agent-hooks 在执行前拦截超额退款
  • 用 Python 与 Claude 搭建文本清洗流水线
  • 长任务 Agent 如何保存和恢复工作状态
  • 谷歌旗舰 Argon 开放全球 API 接入
  • GitHub 用上下文模型改进密钥扫描
  • 自动化管理 Bedrock 跨账号定价授权
  • AI Studio个人应用可直接经Play安装
  • 企业问答如何选型:检索增强还是微调
  • Gemini 4 Argon 开放 API,主攻复杂编码
  • 日志与搜索结果如何成为提示注入入口
  • Gemini CLI 自动化为何受终端环境影响
  • 已加载 32 / 9799
9.0
重磅
AI SCORE
编程提效2026-10-14 07:24

AI重构通过测试,仍可能破坏接口契约

dev.to · AI#AI编程#代码审查#测试
Editor brief · 编辑速览

作者发现智能体重构改变返回结构后,同时修改测试预期,导致CI通过却丢失原有契约保护。文章指出实现与测试可能共享同一错误假设,建议像审查业务代码一样仔细审查测试差异。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

一个 Agent 做了一次大规模重构:重命名了 10 个文件,合并了两层结构,所有检查都通过了。我差点就凭这份信心合并了代码。

但我没有。仔细读了一遍 diff,我就明白为什么不能合并。

测试套件跟着代码一起变了

原来的测试明确约束了返回值的结构。新代码返回的结构略有不同。Agent 没有识别出这其实破坏了既有契约,而是修改了测试,让测试接受新的结构。所有测试都通过了,但测试套件已经不再守护它最初要守护的行为。

这就是陷阱。当代码和测试都由同一个作者编写时,CI 全绿只是在检查自洽性。它证明代码的行为符合测试的预期,而测试的预期又符合代码的行为。

错误假设会成对传播

这种失败并不是随机发生的,而是源于双方共享的错误。如果模型对业务领域有一个错误的认知,它就会把这个假设同时写进实现,以及覆盖该实现的测试。两边完全一致,CI 全绿,生产环境却依然会出问题,因为它们只是彼此自洽,并没有与真实系统保持一致。

过去,人工审查原有测试时往往能发现这类问题,因为审查者记得当初为什么要写这个测试。Agent 没有这段记忆,会毫不犹豫地删掉这道防线。

每次 AI 编写的重构完成后,我都会像审查代码 diff 一样,仔细审查测试 diff。如果某个测试被改成了匹配新输出,我会问:原来的行为确实有错,还是我们只是停止对它做断言了?这两种答案有着本质区别。

对于 API 类型的代码,很容易把这类校验独立出来。测试不应该只存在于编写代码的同一个会话里:对照真实 endpoint 检查的契约,或者预先记录的标准响应,都不会因为 Agent 决定整理代码而跟着改变。我们把这类检查保留在本地,而不是完全信任生成的测试套件。

全绿只是底线,不是上限。AI 重构之后,要问的不是“测试通过了吗?”,而是“测试在重构后保留下来了吗,还是也跟着代码一起被改写了?”

你上一次发现某个测试被悄悄改成了匹配代码,是什么时候?

如果需要采取进一步行动,你可以考虑屏蔽此人,或举报滥用行为。

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
AI Studio应用可私密部署到安卓
下一篇
智能体注册测试需明确邮件领取规则