本页面最初以英文撰写。译文由 AI 辅助翻译,仍在持续完善 —请告诉我们如果您发现任何不妥之处。
Integration Testing 是 AI 没办法替你跳过的那一部分
tech

Integration Testing 是 AI 没办法替你跳过的那一部分

April 19, 2026 作者 The Salty Korean 1 分钟阅读

平台跑通了。End-to-end,从头到尾:log in,浏览 lobby,坐到桌子前,看到座位,打开 buy-in 对话框,观察一手牌。

走到这一步花了四篇博文。一个路由 bug、一个数据格式不匹配、一个坏掉的 auth guard、一个悄悄忽略代码变更的开发环境。

也花了 integration testing。这就是这篇要讲的。

测试阶段长什么样

我们用 Playwright 测试 —— 这是个浏览器自动化工具,会脚本化真实的浏览器交互并验证结果。真实浏览器。真实请求。真实渲染的 UI。

这次会话:用测试凭证 log in,到达 lobby,确认桌子的 card 以正确高度渲染,导航到一张桌子,确认 header 栏出现并带有 lobby 按钮和 help 按钮,确认 seat picker 渲染出所有空座位。

第一次跑,每一步都失败了。

Table cards 高度 572 像素,因为 CSS Grid 在某行只有一个 item 时,默认会应用 align-items: stretch。没人指定这个。没人故意破坏它。CSS 就是这么干的。

导航到一张桌子,会让浏览器陷入 redirect 循环。Auth guard 在检查一个永远不会被填充的 router context 值。

这些不是 AI 特有的失败模式。这是只有当整个 stack 一起跑起来才会出现的那一类 bug。在人写的代码里也照样会出现。测试阶段总归会抓到它们。

为什么 AI 生成的代码仍然需要这一步

有一种 AI 辅助开发的版本会把测试当作可选。它的逻辑是:spec 是对的,agent 实现了 spec,所以实现就是对的。

这个逻辑在集成层就崩了。

单个组件可以各自正确实现自己的 spec,但仍然互相通信失败。Spec 描述的是孤立状态下的行为。Integration testing 验证的是组合状态下的行为。一份覆盖了系统每个领域的 100 页规格说明,仍然不会描述每个 CSS Grid 默认值,也不会描述每个 router context 初始化顺序。

把这个东西跑起来,是看清这个东西跑起来是什么样的唯一办法。

人还要做什么

那次测试会话里的每一个失败,都是被一个盯着浏览器的人发现的。Lobby 的 card 拉伸到整页高 —— 这是视觉观察,不会被打到日志里。桌子加载出来一片空白 —— 这需要看 network requests 并注意到 404。Redirect 循环是顺着浏览器的导航历史一步步追出来的。

这些观察,发生在 AI 介入诊断之前。Agent 可以追一个你已经描述出来的 bug。但描述这件事,需要一个理解行为应该长什么样的人。

这不是方法论的局限。这是方法论在正确运转。人定义系统,验证输出,把失败上报。Agent 诊断和修复。这种分工一直贯穿到测试阶段。

现在我们在哪儿

Dev 环境通过了 end-to-end testing。平台在运营上已经就绪。从现在到 open beta 之间:staging 上的最终验证,card payment processor 集成,以及 geofencing 强制。

测试阶段没有结束。它只是往 stack 上面爬了一层。

salty.poker 变更日志 会随着我们每次发版更新。如果你想实时追这个 build,就关注它。

关于工程方法论的完整系列 —— spec 怎么驱动 session、架构师角色在测试阶段是什么样的、以及将近 30 年构建软件教会了你哪些关于迭代的事 —— 那个系列在 The Salty Korean 上并行展开。

Stay salty.

标签: testing agentic-ai platform development integration
分享:

The Salty Korean

Salty Poker Network 的创始人。撰写有关德州扑克、平台构建和在线扑克未来的文章。 更多内容请访问 The Salty Korean.