Files
zclaw_openfang/docs/superpowers/specs/2026-04-22-feature-chain-exhaustive-test-design.md
iven fa5ab4e161
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
refactor(middleware): 移除数据脱敏中间件及相关代码
移除不再使用的数据脱敏功能,包括:
1. 删除data_masking模块
2. 清理loop_runner中的unmask逻辑
3. 移除前端saas-relay-client.ts中的mask/unmask实现
4. 更新中间件层数从15层降为14层
5. 同步更新相关文档(CLAUDE.md、TRUTH.md、wiki等)

此次变更简化了系统架构,移除了不再需要的敏感数据处理逻辑。所有相关测试证据和截图已归档。
2026-04-22 19:19:07 +08:00

32 KiB
Raw Blame History

ZCLAW 功能链路穷尽测试方案

方案: B+C 混合 — 状态机转换测试(主体)+ 3 角色冒烟测试(补充) 范围: 33 条功能链路345 个测试场景,分 5 批执行 执行方式: 通过 Tauri MCP 模拟真实用户操作(找碴模式)

Context

基于 wiki/feature-map.md 的 33 条功能链路,设计穷尽测试。目标不是"页面能打开就算通过",而是验证完整数据流、边界条件、错误恢复、降级机制、跨链路交互。通过 Tauri MCP 工具query_page/click/type_text/execute_js/take_screenshot/wait_for执行。

状态模型12 核心状态)

FRESH → CONFIGURED → CONNECTED_LOCAL
                ↓                      ↓
           LOGGED_OUT → LOGGED_IN → CONNECTED_SAAS
                          ↓              ↓
                      TOKEN_EXPIRED   DEGRADED
                          ↓              ↓
                      LOGGED_IN ←───────┘
                          ↓
                       CHATTING → STREAM_COMPLETE

附加: ADMIN_MODE / BUTLER_SIMPLE / BUTLER_PRO / PIPELINE_RUN
状态 验证方式
FRESH !connectionStore.connectionState
CONNECTED_LOCAL connectionState === 'connected' && mode === 'tauri'
LOGGED_IN saasStore.token && !saasDegraded
CONNECTED_SAAS connectionState === 'connected' && mode === 'saas'
DEGRADED saasStore.saasReachable === false
CHATTING streamStore.isStreaming === true
STREAM_COMPLETE streamStore.isStreaming === false && lastMessage.role === 'assistant'

Batch 1核心聊天F-01~F-0552 场景)

F-01 发送消息11 场景)

ID 类别 场景 From → To 验证点
F01-01 normal 发送简单中文"你好" CONNECTED → CHATTING → COMPLETE 用户气泡出现、AI 流式响应、streaming 动画、完成状态
F01-02 normal 发送英文长消息500字 CONNECTED → COMPLETE 完整接收不截断、token 计数更新
F01-03 normal 发送含代码请求 CONNECTED → COMPLETE AI 返回代码块、语法高亮正确
F01-04 boundary 空消息 CONNECTED → CONNECTED 发送按钮禁用/无反应
F01-05 boundary 连续快速发送 5 条 CHATTING → CHATTING 排队机制正常/提示等待/不丢消息
F01-06 boundary 超长消息10000字 CONNECTED → COMPLETE 不崩溃/不截断或合理提示
F01-07 error 网络中断后发送 CONNECTED → ERROR → CONNECTED 错误提示友好、不丢失用户输入、可重试
F01-08 error 模型不可用 CONNECTED → ERROR → CONNECTED 400 错误提示明确、自动建议可用模型
F01-09 degradation SaaS 不可达降级 SAAS → DEGRADED → LOCAL 自动降级到本地、提示降级状态
F01-10 cross 发送中切换 Agent CHATTING → COMPLETE → 切换 当前流正常完成/新 Agent 独立会话
F01-11 cross 发送后检查记忆触发 COMPLETE → MEMORY Memory 中间件触发提取、记忆统计增加

F-02 流式响应10 场景)

ID 类别 场景 验证点
F02-01 normal 正常流式逐字显示 文字逐字出现、光标闪烁、最后停止
F02-02 normal Thinking 模式展示 thinking 内容折叠、思考→回答分离
F02-03 normal 工具调用流式展示 ToolStart/ToolEnd 事件正确渲染
F02-04 normal Hand 触发流式展示 HandStart/HandEnd 事件、进度指示
F02-05 boundary 极短响应(<5字 短响应不吞字、完整显示
F02-06 boundary 超长响应(>5000字 不截断、不重复、滚动正常
F02-07 boundary 中英日韩混合内容 Unicode 正确渲染、不乱码
F02-08 error 流式中途 500 错误 错误提示友好、部分内容保留
F02-09 error 流式中途超时 超时守护触发5min、提示超时、可重试
F02-10 cross 流式中取消再重新发送 新流正常开始、不受旧流影响

F-03 模型切换10 场景)

ID 类别 场景 验证点
F03-01 normal 切换到另一个模型 模型名更新、下次消息用新模型
F03-02 normal 切换后发送验证 确认使用新模型响应
F03-03 normal 列出所有可用模型 SaaS 白名单模型完整列表
F03-04 boundary 快速切换 10 次 最后一次生效、不崩溃
F03-05 boundary 无可用模型 清空 Provider Key → 模型列表为空、友好提示
F03-06 error 切换到未启用模型 SaaS 返回 400、提示错误
F03-07 error 模型别名不匹配 用非精确 ID → 400、提示精确 ID
F03-08 degradation SaaS 不可达时切换 降级模式下使用本地模型列表
F03-09 cross 切换模型+发消息+检查 token token 计数正确归属新模型
F03-10 cross 会话中切换模型不丢上下文 3轮→切换→再聊→上下文保留

F-04 上下文管理11 场景)

ID 类别 场景 验证点
F04-01 normal 单会话上下文连续5轮 AI 记得前文、不丢上下文
F04-02 normal 切换回来恢复会话 切走→切回→消息历史完整
F04-03 normal 跨会话持久化 发消息→关闭→重开→IndexedDB 保留
F04-04 boundary 超长上下文50轮 Compaction 触发、不崩溃
F04-05 boundary 上下文窗口满 自动压缩、保留关键信息
F04-06 error 消息存储失败 IndexedDB 空间满→优雅降级、不丢对话
F04-07 cross 多 Agent 会话隔离 Agent A 聊 X → Agent B 聊 Y → 回到 A → 不混
F04-08 cross 会话标题自动生成 新会话聊 2 轮→Title 中间件生成标题
F04-09 cross 记忆注入影响上下文 有历史记忆→新会话→system prompt 含相关记忆
F04-10 cross 大上下文+模型切换 20轮后切换模型→上下文完整
F04-11 cross 跨会话记忆检索增强 昨天聊 X→今天问 X→IdentityRecall 检索到

F-05 取消流式10 场景)

ID 类别 场景 验证点
F05-01 normal 流式中点击取消 流立即停止、已接收内容保留
F05-02 normal 取消后发新消息 新消息正常发送、不受旧流影响
F05-03 normal 取消后消息标记 消息标记为"已取消"/不完整状态
F05-04 boundary 流刚完成时取消 无副作用、消息完整
F05-05 boundary 连续取消 3 次 每次取消立即生效、不卡死
F05-06 boundary 取消正在 tool call 的流 工具执行正确中断、状态清理
F05-07 error 取消失败(网络已断) 不崩溃、超时后自动清理
F05-08 cross 取消+Token 统计 已消耗 token 正确计入
F05-09 cross 取消+记忆提取 已接收部分可能触发提取
F05-10 cross 取消+上下文保留 新消息引用已接收内容→AI 知道

Batch 2Agent + 认证F-06F-09, F-17F-1972 场景)

F-06 创建 Agent10 场景)

ID 类别 场景 验证点
F06-01 normal 正常创建 Agent 侧边栏出现新 Agent、可选中
F06-02 normal 自定义名称+模型+提示 配置正确保存、生效
F06-03 boundary 重复名称 允许或提示冲突、不崩溃
F06-04 boundary 超长名称100字 正确处理、截断或提示
F06-05 boundary 特殊字符名称emoji/中文/<> 不崩溃、显示正确
F06-06 boundary 空系统提示 使用默认提示、不崩溃
F06-07 error 创建失败 错误提示、不产生幽灵 Agent
F06-08 cross 创建后立即发消息 新 Agent 独立会话、响应正常
F06-09 cross 创建+记忆隔离 新 Agent 记忆统计为 0
F06-10 cross 创建后列表刷新 侧边栏排序/数量正确

F-07 切换 Agent10 场景)

ID 类别 场景 验证点
F07-01 normal 正常切换 Agent 选中、会话切换
F07-02 normal 切换后发消息 使用新 Agent 的配置
F07-03 normal 切换后上下文独立 不混入其他 Agent 的对话
F07-04 boundary 快速连续切换 10 次 最后一次生效、不崩溃
F07-05 boundary 切到刚创建的 Agent 空会话、正常使用
F07-06 boundary 切回默认 Agent 原有会话恢复
F07-07 boundary 仅 1 个 Agent 时 无切换选项或自身
F07-08 cross 流式中切换 当前流完成/新 Agent 独立
F07-09 cross 不同模型 Agent 各用各的模型
F07-10 cross 记忆不混淆 Agent A 记忆不出现在 B

F-08 配置 Agent10 场景)

ID 类别 场景 验证点
F08-01 normal 改名称 侧边栏+详情同步更新
F08-02 normal 改模型 下次消息用新模型
F08-03 normal 改系统提示 AI 行为改变
F08-04 boundary 空名称 校验提示、不允许保存
F08-05 boundary 超长系统提示5000字 正确保存或提示限制
F08-06 boundary 特殊字符提示 不注入/不崩溃
F08-07 error 保存失败 不丢原配置、提示重试
F08-08 cross 配置后立即生效 不需重启/下条消息生效
F08-09 cross 已有对话不受影响 历史消息不变
F08-10 cross 配置+记忆联动 改系统提示不影响已有记忆

F-09 删除 Agent10 场景)

ID 类别 场景 验证点
F09-01 normal 正常删除 确认弹窗→删除→列表更新
F09-02 normal 删除当前 Agent 自动切换到默认
F09-03 normal 删除有对话的 Agent 级联删除 sessions/messages
F09-04 boundary 取消删除 弹窗取消→无变化
F09-05 boundary 删除最后一个(仅默认) 不允许删除或保护
F09-06 error 删除失败 提示错误、Agent 仍存在
F09-07 cross 删除后记忆级联 Agent 记忆一同清除
F09-08 cross 删除使用中的 Agent 正确处理、不崩溃
F09-09 cross 批量删除 3 个 逐个确认或批量确认
F09-10 cross 删除后切换到默认 会话为空、正常可用

F-17 注册10 场景)

ID 类别 场景 验证点
F17-01 normal 正常注册 成功→自动登录→进入聊天
F17-02 normal 邮箱格式校验 无效邮箱→提示错误
F17-03 normal 密码强度校验 弱密码→提示要求
F17-04 boundary 已存在邮箱 提示已注册、建议登录
F17-05 boundary 254 字符邮箱 RFC 5322 校验
F17-06 boundary 特殊字符密码 允许/正确存储
F17-07 error 空字段提交 校验提示
F17-08 cross 注册后自动登录 token 存储+模型列表加载
F17-09 cross 注册限流3次/小时) 超限提示
F17-10 cross 注册后立即发消息 全链路正常

F-18 登录12 场景)

ID 类别 场景 验证点
F18-01 normal 正常登录 token 存储+进入聊天
F18-02 normal 错误密码 提示密码错误
F18-03 normal 不存在用户 提示用户不存在
F18-04 boundary 密码错误 5 次 账户锁定 15 分钟
F18-05 boundary 锁定后等待 15 分钟 可重新登录
F18-06 normal 登录后 token 存储 OS keyring 有值
F18-07 normal 登录后模型列表加载 SaaS 白名单模型显示
F18-08 boundary 多设备登录 允许/不互踢
F18-09 cross 登录限流5次/分钟) 超限提示
F18-10 cross 记住登录状态 重启后不需重新登录
F18-11 cross 登录后 UI 状态 模式/主题/设置恢复
F18-12 cross 登录+降级模式切换 SaaS 模式↔本地模式

F-19 Token 刷新10 场景)

ID 类别 场景 验证点
F19-01 normal 正常刷新 新 token 对+旧 token 失效
F19-02 normal access 过期自动刷新 无感刷新+继续对话
F19-03 boundary 刷新时发送消息 不丢失+正确处理
F19-04 boundary refresh token 单次使用 二次使用被拒
F19-05 error 刷新失败 重新登录提示
F19-06 cross 刷新后继续对话 上下文完整
F19-07 cross 并发请求触发刷新 不重复刷新+不竞态
F19-08 cross 刷新+用量统计正确 token 不丢失
F19-09 cross 刷新+旧 token 失效 DB 中旧 token 已撤销
F19-10 cross 刷新+cookie 更新 HttpOnly cookie 更新

Batch 3Hands + 记忆F-10~F-1674 场景)

F-10 触发 Hand11 场景)

ID 类别 场景 验证点
F10-01 normal 触发 Browser Hand HandStart→执行→HandEnd 正确
F10-02 normal 触发 Collector Hand 数据收集+结果返回
F10-03 normal 触发 Researcher Hand 深度研究+结果返回
F10-04 normal LLM 自动触发 Hand 对话中 LLM 决定调用 Hand
F10-05 normal 手动触发 Hand 自动化面板→选择→执行
F10-06 boundary 触发+流式展示 进度指示+结果渲染
F10-07 boundary 触发失败 错误提示+可重试
F10-08 error 无权限触发 提示权限不足
F10-09 error 依赖缺失WebDriver/FFmpeg 明确提示缺什么
F10-10 cross 并发触发 2 个 Hand 队列或并行+不冲突
F10-11 cross 触发+记忆存储 Hand 结果存入记忆

F-11 Hand 审批10 场景)

ID 类别 场景 验证点
F11-01 normal 审批通过 审批→执行→结果返回
F11-02 normal 审批拒绝 拒绝→提示取消
F11-03 boundary 审批超时 超时后自动取消或提示
F11-04 boundary 审批弹窗展示 需求信息完整+操作按钮
F11-05 error 审批后执行失败 错误提示+可重试
F11-06 cross 审批+流式中 不影响当前流
F11-07 cross 多 Hand 同时审批 各自独立
F11-08 cross 审批日志记录 操作日志有记录
F11-09 cross 审批+用量统计 token 正确计入
F11-10 cross 审批+记忆提取 结果触发记忆

F-12 Hand 结果查看10 场景)

ID 类别 场景 验证点
F12-01 normal 正常查看结果 聊天中结果展示
F12-02 normal 结果详情弹窗 完整数据展示
F12-03 boundary 失败结果展示 错误信息清晰
F12-04 boundary 结果含附件 附件可查看/下载
F12-05 boundary 结果含数据表格 表格正确渲染
F12-06 normal 历史 Hand 结果 历史列表可查看
F12-07 error 结果持久化失败 不丢结果+提示
F12-08 cross 结果+重新执行 可重新运行
F12-09 cross 结果+记忆提取 结果触发记忆存储
F12-10 cross 结果+上下文引用 后续对话可引用 Hand 结果

F-13 Browser 自动化10 场景)

ID 类别 场景 验证点
F13-01 normal 打开网页 URL 加载+截图返回
F13-02 normal 截图操作 截图正确+展示
F13-03 normal 点击操作 元素点击+页面变化
F13-04 normal 填表操作 表单填写+提交
F13-05 normal 搜索操作 搜索+结果返回
F13-06 boundary 多步骤操作 步骤链正确执行
F13-07 error 页面超时 超时提示+可重试
F13-08 error WebDriver 未连接 明确提示+连接指引
F13-09 cross 结果在聊天展示 格式正确+可交互
F13-10 cross 结果+记忆存储 浏览器内容存入记忆

F-14 记忆搜索11 场景)

ID 类别 场景 验证点
F14-01 normal 搜索中文关键词 FTS5+TF-IDF 结果正确
F14-02 normal 搜索英文关键词 结果正确
F14-03 normal 搜索代码片段 关键词优先策略
F14-04 boundary 模糊搜索 部分匹配返回
F14-05 boundary 无结果搜索 提示无结果
F14-06 boundary 精确匹配 高分结果排前
F14-07 boundary 排序验证 TF-IDF 权重排序正确
F14-08 normal 分类过滤 Preference/Knowledge/Experience 分开
F14-09 cross Agent 隔离 只返回当前 Agent 记忆
F14-10 cross 分页/大量结果 不崩溃+可翻页
F14-11 cross 搜索性能 <500ms 返回

F-15 记忆自动注入11 场景)

ID 类别 场景 验证点
F15-01 normal 自动提取偏好 "我喜欢深色主题"→偏好记忆
F15-02 normal 自动提取知识 "Python 3.12 新特性是..."→知识记忆
F15-03 normal 自动提取经验 "上次部署失败了因为..."→经验记忆
F15-04 boundary Token 预算控制 不超过 system prompt 预算
F15-05 boundary 注入格式正确 结构化上下文块格式
F15-06 boundary 流式中注入 不影响当前流
F15-07 error 注入溢出 超预算时截断+不崩溃
F15-08 cross 去重 不重复注入相同记忆
F15-09 cross Agent 隔离 各 Agent 独立注入
F15-10 cross 跨会话注入 新会话→检索旧记忆→注入
F15-11 cross 进化引擎联动 积累→模式检测→进化建议

F-16 记忆手动管理11 场景)

ID 类别 场景 验证点
F16-01 normal 查看统计 总数/分类数/容量
F16-02 normal 导出全部 JSON 格式+完整
F16-03 normal 导入记忆 正确导入+去重
F16-04 normal 删除单条 删除后列表更新
F16-05 normal 删除全部 确认→清空+统计归零
F16-06 boundary 查看详情 完整内容+元数据
F16-07 error 编辑记忆 不崩溃
F16-08 cross 批量操作 多选删除
F16-09 cross 存储路径显示 SQLite 路径正确
F16-10 cross 容量限制 大量记忆不崩溃
F16-11 cross 数据完整性 导出→删除→导入→一致

Batch 4SaaS + 管家F-20~F-2564 场景)

F-20 订阅管理10 场景)

ID 类别 场景 验证点
F20-01 normal 查看计划列表 显示所有计费计划
F20-02 normal 查看当前订阅 计划名+到期日+用量
F20-03 normal 升级计划 Free→Pro→配额增加
F20-04 normal 降级计划 Pro→Free→配额减少
F20-05 boundary 免费计划限制 超配额→提示升级
F20-06 boundary 计划对比 功能差异清晰
F20-07 error 订阅过期 提示续费+降级处理
F20-08 cross 订阅+用量展示 用量数据一致
F20-09 cross 订阅+模型限制 低级计划模型受限
F20-10 cross Admin 管理订阅 Admin 可修改用户订阅

F-21 支付计费12 场景)

ID 类别 场景 验证点
F21-01 normal 正常支付流程 选择计划→支付→确认
F21-02 normal 支付宝模拟 mock 路由→回调→成功
F21-03 normal 微信模拟 mock 路由→回调→成功
F21-04 boundary 支付失败 回调失败→提示+可重试
F21-05 normal 支付回调验证 签名/金额校验
F21-06 normal 发票生成 自动生成+可查看
F21-07 normal 发票 PDF 下载 PDF 内容正确
F21-08 cross 用量统计 请求/token 计数正确
F21-09 cross 配额耗尽 超额→提示升级
F21-10 cross 配额实时递增 每次请求+1
F21-11 cross 聚合器数据 aggregate_usage Worker 数据
F21-12 cross 支付+订阅联动 支付成功→订阅状态更新

F-22 Admin 后台10 场景)

ID 类别 场景 验证点
F22-01 normal Dashboard 展示 统计数据正确+图表
F22-02 normal 账号管理 CRUD 列表/创建/编辑/禁用
F22-03 normal 模型服务配置 Provider/模型/Key CRUD
F22-04 normal API 密钥管理 加密存储+启停+删除
F22-05 normal 知识库管理 分类/条目/搜索
F22-06 normal 行业配置 4 内置行业+自定义
F22-07 normal 计费管理 计划/订阅/用量
F22-08 normal 角色权限 RBAC+权限模板
F22-09 normal 操作日志 查询+筛选+分页
F22-10 normal Agent 模板 模板 CRUD+分配

F-23 简洁/专业模式10 场景)

ID 类别 场景 验证点
F23-01 normal 默认简洁模式 隐藏高级功能
F23-02 normal 切换到专业模式 显示完整功能面板
F23-03 normal 切回简洁模式 重新隐藏高级功能
F23-04 boundary 简洁模式功能验证 只展示聊天+基础操作
F23-05 boundary 专业模式功能验证 所有面板可用
F23-06 boundary 聊天中切换 不影响当前对话
F23-07 cross 切换+设置保留 模式切换后设置不变
F23-08 cross 首次启动默认模式 简洁模式为默认
F23-09 cross 模式+行业联动 行业配置在两种模式都生效
F23-10 cross 模式+记忆展示 专业模式显示更多记忆信息

F-24 行业配置10 场景)

ID 类别 场景 验证点
F24-01 normal 选择医疗行业 关键词加载+管家面板更新
F24-02 normal 选择教育行业 关键词加载+模板推荐
F24-03 normal 选择电商行业 关键词加载
F24-04 normal 自定义行业 关键词自定义+保存
F24-05 boundary 行业关键词匹配 ButlerRouter 检测行业关键词
F24-06 cross 行业+管家联动 行业 prompt 注入 system prompt
F24-07 cross 行业+痛点联动 行业相关痛点分类
F24-08 cross 行业+Pipeline 联动 推荐行业相关模板
F24-09 cross 行业切换 切换行业→关键词更新
F24-10 cross 行业+记忆 行业相关记忆优先检索

F-25 痛点积累12 场景)

ID 类别 场景 验证点
F25-01 normal 自动提取痛点 聊天中抱怨→痛点提取
F25-02 normal 痛点列表展示 管家面板显示痛点
F25-03 normal 痛点积累到阈值 多次抱怨→积累计数
F25-04 normal 方案生成 阈值触发→生成解决建议
F25-05 normal 方案状态更新 接受/拒绝/搁置
F25-06 boundary 痛点+行业联动 行业分类痛点
F25-07 cross 痛点跨会话 昨天痛点今天可见
F25-08 cross 痛点+记忆 痛点存入记忆系统
F25-09 cross 痛点去重 相同痛点不重复记录
F25-10 cross 痛点+经验 pain→solution→outcome 链
F25-11 cross 痛点+冷启动 新用户首次痛点提取
F25-12 cross 痛点+用户画像 画像反映痛点偏好

Batch 5Pipeline + 配置 + 安全F-26~F-3383 场景)

F-26 选择模板10 场景)

ID 类别 场景 验证点
F26-01 normal 列出所有模板 18 个 YAML 模板
F26-02 normal 按行业过滤 医疗/教育/电商等
F26-03 normal 模板详情 步骤+依赖+参数
F26-04 normal 模板参数展示 输入/输出定义
F26-05 boundary 模板预览 YAML 解析正确
F26-06 boundary 模板搜索 关键词匹配
F26-07 error YAML 解析错误 不崩溃+提示
F26-08 cross Pipeline 意图匹配 自然语言→模板推荐
F26-09 cross 模板+行业联动 行业模板优先
F26-10 cross 模板收藏 收藏+列表

F-27 参数配置10 场景)

ID 类别 场景 验证点
F27-01 normal 正常配置参数 保存成功
F27-02 normal 必填项校验 空必填→提示
F27-03 normal 参数类型校验 数字/字符串/枚举
F27-04 boundary 默认值填充 预填默认值
F27-05 boundary 参数说明 每个参数有说明
F27-06 error 配置保存失败 不丢原配置
F27-07 cross 配置+预览 预览显示参数效果
F27-08 cross 配置重置 恢复默认
F27-09 cross 配置+验证 提交前验证
F27-10 cross 配置导入导出 JSON/YAML 导出+导入

F-28 执行工作流10 场景)

ID 类别 场景 验证点
F28-01 normal 正常执行 DAG 排序+逐步执行+完成
F28-02 normal DAG 排序正确 依赖关系满足
F28-03 normal 并行步骤 无依赖步骤并行
F28-04 error 步骤失败 失败步骤+后续处理
F28-05 error 步骤超时 超时处理+可重试
F28-06 normal 取消执行 取消+状态更新
F28-07 normal 执行进度 实时进度展示
F28-08 normal 执行结果 结果数据完整
F28-09 cross 执行+Hand 触发 步骤触发 Hand
F28-10 cross 执行+记忆存储 结果存入记忆

F-29 模型设置10 场景)

ID 类别 场景 验证点
F29-01 normal 配置 API Key 8 Provider 配置
F29-02 normal 选择 Provider 下拉选择
F29-03 normal 测试连接 验证 Key 有效
F29-04 normal 模型参数 温度/max_tokens 等
F29-05 boundary 多 Provider 同时配置多个
F29-06 normal 配置持久化 重启后保留
F29-07 normal 配置热重载 不需重启生效
F29-08 cross 配置+降级 Provider 不可用→降级
F29-09 cross 配置校验 无效 Key→提示
F29-10 cross 配置导入导出 TOML 导出+导入

F-30 工作区配置11 场景)

ID 类别 场景 验证点
F30-01 normal 基本配置 工作区路径等
F30-02 normal 环境变量 ${VAR} 插值
F30-03 normal 数据目录 路径设置
F30-04 normal 日志级别 debug/info/warn/error
F30-05 boundary 配置文件路径 正确读写
F30-06 error 配置写入失败 不丢原配置
F30-07 cross TOML 格式 格式一致
F30-08 cross 特殊字符 路径含空格/中文
F30-09 cross 配置同步 多设备同步
F30-10 cross 配置重置 恢复默认
F30-11 cross 配置+环境变量插值 ${VAR_NAME} 解析

F-31 数据隐私10 场景)

ID 类别 场景 验证点
F31-01 normal 清除对话历史 确认→清除+统计归零
F31-02 normal 导出数据 JSON 格式+完整
F31-03 normal 记忆管理 查看/删除/导出
F31-04 boundary 删除确认 二次确认弹窗
F31-05 normal 删除持久化验证 SQLite/IndexedDB 数据清除
F31-06 normal 导出格式 格式正确+可解析
F31-07 cross 导出完整性 消息+记忆+配置完整
F31-08 cross 清除+Agent 联动 清除指定 Agent 数据
F31-09 cross 清除+记忆联动 清除对话+保留/清除记忆
F31-10 cross 数据统计 清除后统计更新

F-32 JWT 认证12 场景)

ID 类别 场景 验证点
F32-01 normal 获取 JWT 登录→token 存储
F32-02 normal JWT 过期处理 自动刷新或提示重新登录
F32-03 normal JWT 刷新 新 token+旧 token 失效
F32-04 normal pwv 失效机制 改密码→旧 JWT 全部失效
F32-05 boundary cookie 双通道 Tauri keyring + HttpOnly cookie
F32-06 normal Keyring 存储 Win DPAPI 存储
F32-07 normal refresh token 单次使用 二次使用被拒
F32-08 normal refresh token 撤销 logout→DB 中标记
F32-09 boundary 并发 JWT 验证 不竞态
F32-10 cross JWT+角色权限 Claims.role 正确
F32-11 cross JWT+限流 超限返回 429
F32-12 cross JWT+多设备 多设备 token 独立

F-33 TOTP 2FA10 场景)

ID 类别 场景 验证点
F33-01 normal 设置 2FA QR 码生成+密钥加密存储
F33-02 normal QR 码生成 可扫描+格式正确
F33-03 normal 验证码验证 正确 TOTP→通过
F33-04 normal 禁用 2FA 需密码确认→禁用
F33-05 boundary 错误验证码 提示错误
F33-06 boundary 过期验证码 提示过期
F33-07 cross 2FA+登录流程 密码→TOTP→进入
F33-08 cross 2FA+密码确认 禁用需密码
F33-09 cross 2FA 密钥加密 AES-256-GCM 加密
F33-10 cross 2FA+多设备 各设备独立密钥

3 角色冒烟测试

角色 1新用户"小王"(首次使用)

步骤 操作 验证点
1 打开应用→看到冷启动引导 引导消息出现+4阶段流程
2 注册账号→登录 token 存储+进入简洁模式
3 第一次发消息"你好" 流式响应正常
4 切换到专业模式 功能面板展示
5 创建新 Agent→和它对话 Agent 独立会话
6 设置>查看记忆 确认自动提取了偏好
7 第二天打开(模拟) 跨会话记忆注入
8 触发一个 Hand 审批流程正常

覆盖: F-17, F-18, F-23, F-01, F-02, F-06, F-14, F-04, F-11

角色 2医院行政"李主任"(管家模式)

步骤 操作 验证点
1 登录→选择"医疗"行业 行业关键词加载
2 "帮我整理本周会议纪要" ButlerRouter 医疗匹配
3 "最近排班总出问题" 痛点提取触发
4 连续几天聊排班 痛点积累→方案建议
5 "上个月讨论的排班方案" 跨会话记忆检索
6 查看管家面板 洞察/方案/记忆展示正确
7 专业模式→选 Pipeline 模板 医疗模板推荐
8 执行 Pipeline DAG 执行+结果

覆盖: F-01, F-02, F-23, F-24, F-25, F-14, F-15, F-26, F-28

角色 3Admin 运维"张工"(后台管理)

步骤 操作 验证点
1 Admin V2 登录 Dashboard 统计正确
2 检查模型服务 Provider+Key 状态
3 检查账号管理 用户列表+CRUD
4 检查知识库 CRUD+搜索+pgvector
5 检查行业配置 4 内置行业
6 检查计费 订阅+用量+支付
7 检查角色权限 RBAC 验证
8 切回桌面端 Admin 操作已生效

覆盖: F-22, F-20, F-21, F-29, F-32, F-33


执行计划

阶段 时长 内容
0 15min 环境检查PostgreSQL + SaaS + 桌面端 + 连通验证
1 2-3h Batch 1 核心聊天52 场景)
2 2-3h Batch 2 Agent+认证72 场景)
3 2-3h Batch 3 Hands+记忆74 场景)
4 2-3h Batch 4 SaaS+管家64 场景)
5 2-3h Batch 5 Pipeline+配置+安全83 场景)
6 2h 复合转换测试(跨 Batch 交互)
7 1.5h 3 角色冒烟测试
8 30min 报告整理+证据归档

总计:~345 个测试场景

每个场景执行流程:

  1. 截图当前状态before
  2. 执行操作click/type/wait
  3. 等待响应wait_for + 超时保护)
  4. 验证结果query_page + execute_js
  5. 截图最终状态after
  6. 记录结果PASS/FAIL/PARTIAL + 证据路径)

结果报告

输出:docs/test-evidence/2026-04-XX/FEATURE_CHAIN_EXHAUSTIVE_TEST.md

报告格式:

  • 转换矩阵报告(状态 × 状态 网格)
  • 每条链路 PASS/FAIL/PARTIAL 统计
  • Bug 密度热力图(按状态)
  • 截图证据目录(按场景 ID 命名)