AFAgent Field Notes会员账号
知识目录选择核心方向与细分内容
Q43高级实现约 18 分钟

故障窗口与恢复不变量

怎样证明 Agent 能恢复故障,而不是只通过正常流程测试?

考察故障点、业务不变式、确定性工具替身和恢复验收。

故障注入恢复测试不变式

知识内容核对 2026-10-03 · 原题来源核对 2026-10-02

本题目录

READ · UNDERSTAND · TRANSFER

阅读理解,按需巩固

我的笔记与复习 ↗

先沿着原理、问答和迁移案例阅读。需要检查理解时,再切换巩固练习或展开个人记录。

作答与个人记录

每次修改后的提交会保留为独立历史。掌握程度由你对照标准自评。

核心知识 · 故障窗口与恢复不变量

先理解核心原理

先备概念:事务提交、幂等操作、状态机

恢复正确性由故障前后的业务事实决定。测试必须切断“提交、回执、状态推进”之间的窗口,证明重放不会突破幂等、权限和预算约束。

500 不是所有故障

服务在提交之前失败与提交成功但回执丢失,对调用方都可能表现为超时。前者可安全重做,后者盲目重做可能产生两次效果。故障注入要控制目标是否提交,不能只有一个总返回失败开关。

用状态替身隔离运行时

固定模型输出工具计划,再使工具替身记录业务键、效果和回执。分别在本地落盘前、外部提交后、收到回执后杀进程,恢复后核对目标记录与本地状态。重复请求可以正常存在,但最终业务效果必须符合约定。

可用性与安全性分开

无法核对结果时停在未知,可能满足“不重复写入”的安全要求,却尚未满足限时完成的服务要求。测试应同时记录这两种结论;不能把安全暂停宣传为所有故障都恢复成功,也不能迫使系统猜成功。下面列出的故障路径是建议,未执行新故障实验。

回到问题:怎样回答?

按持久化、工具提交、响应返回和状态推进的边界注入故障,而不是只让接口返回 500。用可控工具替身模拟已提交但响应丢失、重复消息、权限撤销和 Worker 接管,验证不重复副作用、不越权、预算守恒与最终状态真实。固定模型响应测试运行时逻辑,再用真实模型做端到端行为评测。

实现与取舍

从不变式反推测试

先列出必须始终成立的条件:同一逻辑动作不重复产生效果,取消后不启动新动作,恢复不增加已用预算,撤销权限立即影响执行,成功必须有验收证据。每条不变式映射到可能被破坏的状态边界,不能只检查最终页面是否显示成功。

注入真实的失败窗口

在写意图前、外部提交后、收到响应前、保存结果前分别宕机。再加入租约失效、旧 Worker 继续写、队列重复与乱序,以及恢复过程中配置变化。工具替身记录所有请求、幂等键和实际效果,测试才能区分重复请求与重复业务副作用。

控制模型随机性

运行时可靠性测试使用固定模型响应序列,例如持续重复同一调用、提前声称完成、提出越权参数。这样一次失败能精确定位到调度与策略逻辑。真实模型测试另外运行,观察任务完成与适应能力,两者不可互相替代。测试环境必须隔离真实发信、付款和发布工具。

验收恢复结果

检查操作账本、最终产物、失败分类、回执与审计事件,而不只看函数返回。给每个注入点记录恢复是否成功、耗时和需要人工介入的原因。未知状态并非一定是实现错误;无法安全核对时明确停止,比伪造成功更符合业务不变式。

工程推演

场景
面试假设:发布工具有幂等键,但恢复逻辑每次生成新键。
设计决策
工具替身记录 effect,注入响应丢失再恢复。
验证目标
测试能揭露重复发布,即使单次正常调用都通过。
适用边界
隔离实验通过不等同于真实供应商的完整一致性保证。

连续追问与解答

沿着问题的前提和约束继续向下读。先理解参考解答,再尝试收起答案,用自己的话解释因果和取舍。

举一反三:条件变了,怎样推导?

先找出改变的条件,再判断原方案中哪些前提仍成立。下面的案例是教学推演,便于将原理迁移到新问题。

只读检索失败

改变的条件:没有写入副作用,但有查询费用和权限变化。

延伸问题:能否直接无限重试?

推导与参考解答

不行。只读可降低重复效果风险,仍需有界退避、成本预算和每次授权检查;记录失败终态。重复检索若使用了新数据版本,应重新核对答案,而不是拿旧证据与新结果混合。

保持不变的原理:恢复仍受事实、权限和资源不变量约束。

多步骤退款与库存补偿

改变的条件:从单工具变成不同服务的多个提交。

延伸问题:只在开头注入一次失败够吗?

推导与参考解答

不够。对每个提交和补偿窗口测试已执行、未执行和未知,检查补偿自身幂等且有真实回执。业务补偿并不抹去原始事实;无法撤销时转人工处理,不宣称跨服务自动原子回滚。

保持不变的原理:故障窗口决定恢复动作,补偿也是受控副作用。

易错点

  • 只测试正常路径和 HTTP 500
  • 恢复测试真的向外发消息
  • 只看返回码不看副作用账本

参考资料

依据公开技术资料设计;参考资料支持技术机制,场景与评分标准为本站设计,不代表某公司面试原题。 新增问答与迁移案例用于原理讲解,来源核查与案例运行验证分别记录。

检查自己理解到哪一步

读完后可以对照这些标准解释原理、边界和取舍。掌握程度由你自评;需要进一步验证时,再完成下方小任务。

基础达标
能提出超时、重启和重复消息场景。
中高级信号
精确定位提交窗口并检查业务不变式。
资深信号
构建可控故障替身、固定模型序列与端到端分层评测。

巩固练习 按需完成 · 建议 15 分钟

为一次发布动作列出四个宕机点,每点写预期恢复行为。

展开验收要求与检查点
  • 至少覆盖提交后响应前
  • 断言实际效果次数
  • 未知状态不会伪装成功

重点检查

  • 按提交窗口而非只按状态码测试
  • 能记录请求和真实副作用
  • 运行时与模型质量分开验证