直接回答
网络中断测试要回答:某个工作流步骤期间连接变化后会发生什么。它不同于针对完整本地任务的飞行模式测试:混合管线可能会发送请求、取回资料或同步结果。网络若在这些阶段之间丢失,应用需知道哪一步在本地、哪一步远程、请求是否可能已经到达服务,以及用户下一步应做什么。缓存界面或先前生成的答复,不能证明新的推理在离线状态下完成。 故障注入前先绘制数据路径。列出每个能够联网的组件、请求用途、数据类别、端点所有者和失败政策。不要假设只有最终 AI 调用会联网;分析、模型配置检查、远程检索、图像上传与结果同步可能完全不同。如果隐私事实承诺某任务留在本地,应测试那条实际路径;不能在本地 engine 失败后自行改发云端,除非这是另有用户可见决定的产品流程。本文讲的是中断测试,不是批准新增远程数据发送。 不同故障点具有不同语义:创建请求前断网、上传中断、服务可能已接受但响应未返回、远程检索中断、或本地结果同步中断。仅凭 timeout 不一定能判断服务端是否处理了请求。应用合同支持时可使用幂等键或稳定 operation identity,防止重试产生重复副作用。如果集成没有暴露确认信息,应该显示结果不确定,并在重新提交敏感操作前征求用户意见。 把连接状态观察和端点可达性分开。Android 网络 API 可报告可用传输和能力,但网络存在不等于某个端点可达或已获授权;短暂中断也可能不会在界面查看时立即体现。真正的操作必须处理 I/O 错误和取消。不要保存一个永久有效的“网络已连接”布尔值并据此授权开始任何任务。记录与本次操作相关的状态和最早失败边界。 除了异常,还要测用户看见的转换。工作可能仍可在本地完成、暂停安全传输、取消,或进入不确定状态。开测前定义每种行为。界面应说明本地预处理/推理是否结束、是否尝试了远程处理、结果是否暂定。保留部分状态,避免下一个界面在响应丢失后仍宣布成功。重试要明确且有次数边界,不能快速自动循环消耗电量或重复请求。 故障注入数据应安全而可控。使用合成请求体、测试端点或本地代理,在确定边界切断网络。不能把真实用户照片、转写或健康记录当测试载荷。记录 operation ID、边界、请求状态、连接事件、取消结果和恢复选择,不记录请求正文。恢复网络后还要验证:用户以为已丢弃的内容不会被静默上传。 证据应区分几种结论:没有网络路由时任务完整完成;本地预处理完成但远程任务未完成;服务可能已接收请求但响应丢失;或请求尚未发送就失败。这些不能统一称为“离线模式可用”。项目 ARCH-02 与隐私事实要求将网络行为限定在实际管线。测试只证明特定构建、端点、数据类型、任务阶段和重试策略,不证明所有功能离线或安全。 测试后检查经过脱敏的请求和错误轨迹。如果请求可能已经到达服务端,恢复界面不能假装它从未发送。如果本地结果已完成但同步失败,应按明示保留政策留在本地,提供稍后同步选项。如果请求根本未上传,就不必丢掉已完成的本地工作。将这些状态分开,既保护正确性和信任,也让事后排查无需收集私人载荷。 端点可达还可能与认证和用户会话相关。网络恢复后,授权可能已经过期,或远端服务返回拒绝。测试中要将传输失败、认证失败、应用层拒绝分开;不能用“在线”提示掩盖所有错误。若远程请求是可选的,应显示本地仍能完成什么、还有什么功能不可用,并遵循产品明示的降级策略。 不要把重连当成新的授权。用户可能在断网时取消任务或退出功能,随后设备恢复网络。应用应保留取消状态,不应利用网络恢复自动重新开始敏感上传。若用户选择重试,要显示将再次发送的类别和目的,并为每次重试创建可追踪的新操作身份。诊断记录可保存状态和类别,不需要保留输入正文。 最终报告附上网络故障注入点、端点类型、数据类别、可能已发送状态和用户决策。若测试端点与生产服务不同,说明差异。不要由单一代理测试推断所有运营商、地区或网络环境表现。对于没有本地替代方案的流程,明确说它依赖网络,这比给出模糊“离线 AI”标签更清楚。
混合式文档助手在本地解析后失去网络
应用已在本地解析用户选定的文档,准备请求可选远程检索。上传开始后连接丢失,客户端无法确定服务是否收到内容。
决策
将远程操作标为不确定,保留本地工作状态,避免自动重复上传,并在可能重发内容前询问用户。
预期结果
界面说明本地处理了什么、哪些内容可能出网,不会把缓存说成新的离线回答。
需要收集的证据
只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:
- ARCH-02:事实卡要求区分本地与远程步骤,并将结论限定到实际网络路径。
- PRIVACY-01:处理数据的网络边界需说明用途与失败行为;本指南不授权新增上传。
发布结论只对所记录的配置和验收集有效;扩大适用范围需要更多记录。
实施流程
- 盘点管线网络边界. 列出本地预处理、推理、远程调用、检索、分析和同步;逐项记录数据类别、目的、端点与面向用户的失败行为。
- 逐请求定义重试语义. 将请求标记为未开始、确定已发送、已收到响应或不确定。合同支持时用稳定操作身份,防止自动重试造成重复副作用。
- 在受控阶段注入断网. 分别在请求前、上传中、可能服务端接收后、远程检索和结果同步中切断网络。使用合成数据、测试端点或受控代理。
- 分别验证本地和远程状态. 断言本地预处理/推理是否完成、是否尝试远程处理以及结果是否暂定。保留本地完成工作,但不得称为新的离线推理。
- 恢复连接后检查重试. 确认网络恢复不会静默上传已取消或标为丢弃的内容。请求接收不确定时需要明确、有限重试,并从日志排除载荷。
让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。
验收标准
- 测试管线中的每个网络边界都声明用途、数据类别和失败政策。
- 应用区分确定未发送、可能已接受、完成、取消及本地完成状态。
- 重连后不会自动重发用户已取消或界面声明丢弃的数据。
- 测试证据使用合成内容并记录操作阶段,不写入请求正文。
决策对照表
| 维度 | 选择或证据 | 解读方式 |
|---|---|---|
| 完整本地操作 | 阻断外部路由并测试任务完整结束 | 只有该管线和设置被实际验证时,才能提出有限离线结论。 |
| 混合操作中请求被中断 | 分别跟踪本地与远程阶段 | 超时后服务端是否接收可能不确定,重试语义很重要。 |
| 展示缓存或旧结果 | 准确标记结果来源与时间 | 界面有结果不证明新一次离线推理成功。 |
需要避免的失败模式
- 看到旧缓存就宣布新任务可离线完成。
- 上传超时后无条件自动重试,导致服务端可能重复处理敏感内容。
还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。
最小复现记录
| 层级 | 记录内容 |
|---|---|
| 设备 | 厂商、型号、芯片、内存档位、操作系统版本 |
| 软件 | 应用版本和 Git 提交号 |
| 模型 | 系列、变体、版本、格式、文件长度、摘要、量化方式 |
| 运行时 | 名称、版本、请求后端及实际后端证据 |
| 工作负载 | 样例版本、输入摘要、提示词摘要、输出策略 |
| 结果 | 完成、失败、取消、回退及保护隐私的诊断信息 |
发布检查表
- ☐ 主要搜索问题已回答,且没有未经支持的数字。
- ☐ 所有模型文件和运行时版本均已固定。
- ☐ 代表性任务和失败处理策略均有说明。
- ☐ 生命周期、取消、清理和回退均已测试。
- ☐ 用户内容与网络边界均有说明。
- ☐ 结论只适用于被记录的配置。
- ☐ 新增测试结果时链接到原始方法或证据。
来源与相关证据
中文部署与排错专题见。奇连 AI 端侧专题。
常见问题
网络可用就代表远程 AI 端点可达吗?
不代表。连接传输不能证明端点可达、授权有效或请求成功;需要在具体操作边界处理错误,并记录首次失败阶段及响应类别。
timeout 后应该无条件自动重试吗?
不应如此。服务端可能已经接收请求。合同支持时用操作身份去重;否则显示不确定状态并在重发敏感内容前询问,同时说明可能重复处理。
缓存结果能证明任务离线可用吗?
不能。展示缓存和完成一次新推理是不同结果。缓存需标注来源;验证离线能力应在网络确实阻断后运行新操作,并确认不是复用旧结果。