Skip to content

功能开发与测试流程 ​

配置到实际请求的检查见 路由链路审计。

本文规定开发一个功能时需要检查什么。 测试结果仍按候选和环境分别记录。 功能编号来自 功能清单。 实际命令归属见 脚本入口映射。 Trace 的状态转换见 状态矩阵。

开发前定义结果 ​

先阅读 公开版验收 和 产品要求。 用一组具体操作描述功能。 每组操作都写初始状态、用户动作和最终结果。 最终结果包含界面、文件、运行时和记录。

例如“切换服务后继续对话”需要定义以下结果。

  1. 界面保留最后选择的服务和模型。
  2. 已开始的回答使用原服务快照。
  3. 后续请求使用用户选择的目标。
  4. 原线程的正文和工具结果可续接。
  5. Trace 保留原生身份与实际路由。
  6. 失败后提供对应重试,不自动换服务。

先确定状态,再选脚本。 不能从一个已有脚本反推功能已经完整覆盖。 新增功能沿用稳定编号,必要时新增子场景。 已有历史证据保留,不改成当前候选通过。

实现时保持的约束 ​

后端使用 Rust/Tauri。 前端使用 React、TypeScript、Tailwind CSS 和 Base UI/COSS。 复用现有桥接、文件所有权与样式变量。 新增依赖先核对现有能力和包体积。

异步操作以用户最后一次选择为准。 保存、客户端写入、运行时生效和真实生成分别反馈。 目录和额度查询失败不能撤销本地选择。 切页、取消和迟到结果不得覆盖新状态。 普通切换保留已开始的回答。 失败保留草稿,并提供明确的下一步。

记录按实际请求保存。 客户端原请求与转换后的上游请求分开。 不能补造历史、未知用量、额度或完成事件。 已经输出内容或执行工具的请求不能盲目重放。 日志和验收附件不得包含 Key、令牌或私人正文。

检查资料的实际消费 ​

外部资料字段变化时,沿来源、缓存、配置和客户端检查。 页面关闭和服务目录失败也必须覆盖。 旧值保留时,验证明确配置或兼容策略的依据。 检查方式见 资料消费审计。

按模块选择检查 ​

下表说明脚本的相关断言和验收边界。 完整路径见 自动化映射。 “已有断言”不表示所有列出的子场景都已验收。

模块开发时必须明确已有自动化检查最终补充与缺口
TR 捕获与归类原生线程、尝试、主辅、父子和完成状态native-sessions 检查身份与流;navigation 检查归组摘要;portability 检查原请求与上游分离实际多轮、resume、compact、侧边聊天和 Desktop;HTTP 与 WS 分列
CO 用量与费用字段来源、已知零值、未知值、冻结费率cache-usage 检查缺项和缓存;billing 检查冻结与复算;Viewer 检查零值、小额和重复事件当前包实际 usage 与账单分别核对;失败缺项不增金额,不显示星号
MO 模型与协议真实目录、能力优先级、精确 ID 和协议catalog/protocol 检查目录与转换;models 组件检查乱序、迟到和选择正式授权目录与真实生成分别验;图片、工具、音频不能靠文字通过代验
CL 客户端与续接文件写入范围、旧绑定、模型角色和账号config-merge 检查外部字段;portability 检查多协议续接和活动回答;desktop-routing 检查路由当前 CLI 与 Desktop 各验;原线程 A→B→A、同进程和重开分列
SE 设置与存储原子保存、容量、目录和在途数据settings-write 检查冲突;writer 检查落盘;usage-only 检查 0 GB;index-repair 检查备份与原文实际设置页确认、取消和目录选择;大记录、占用文件及重启分别验
AC 账号与凭据来源绑定、隔离、失效和额度窗口private-files 检查权限与损坏保留;routing/usage 检查账号亲和和迟到读数实际授权、第二账号、系统凭据和额度;正式服务与真实账号分别验收
HI 历史管理分类恢复、正文完整、外部修改分类账本和恢复确认有相关脚本;其他子场景待补用实际测试线程 resume;有无备份、勾选和取消分别操作
UI 共用界面草稿、焦点、滚动、反馈和叠层renderer 检查慢响应、切页和通知;layout 检查单行和窄屏原生 WebView、鼠标悬停、键盘、系统缩放与减少动效
LF 生命周期忙碌停止、强停、退出和重开stop-admission/tool-wait 检查不打断与工具等待;desktop/reset 检查进程和恢复真实停止后直连;托盘、全屏、多屏和异常结束分列
RE 交付与更新来源、版本、哈希、平台和数据保留fingerprint/size 检查来源;update 检查下载与故障;portable/mac-update 检查对应夹具本版未来原生更新与系统安装分别验;不承担旧发行版本兼容
SW 自动切换开关、账号耗尽依据和备用顺序switching/pool 检查全部耗尽、普通错误和已有输出;choices 检查保存真实自然耗尽与同一 CLI 续接待验;不人为换服务凑通过
DG 诊断与修复脱敏、受管字段、外部代理和继续入口diagnostics 检查错误链;repair 检查所有权和冲突同条件有限直连对照;实际修复后监听关闭与直连生成
WE 官网下载产品、平台、未配置与预览身份site-browser 检查尺寸、按钮、下载分支和 iframe实际下载文件版本、架构与哈希;构建和推送不代表部署

自动化分四步执行 ​

检查目录与源码 ​

sh
npm run check:docs
npm run check:test-plan
node tools/checks/report-test-coverage.mjs --check
npm run check:runtime-boundary

这些命令检查文档、入口和运行架构。 它们不执行真实模型请求。 修改目录或命令后,重新生成入口映射。 新增脚本必须说明属于默认门禁、条件入口还是专题。

执行受影响的回归 ​

先编译对应候选,核对源码指纹和二进制哈希。 通过 XWX_NATIVE_TEST_BINARY 指定该二进制。 按编号执行相关脚本,并记录实际断言。 后端套件保持串行,避免端口和配置相互干扰。 每组测试使用独立根和本地故障服务。

组件测试适合慢保存、乱序、切页、取消和重试。 协议测试适合断流、工具配对与明确不可重放。 存储测试适合字节、索引、冻结费用与在途清理。 这三类检查互相补充。 局部开关脚本只检查控件状态与恢复操作。 业务目标是否保留,仍需调用页面的断言。

执行完整工程门禁 ​

sh
npm run check:quality

该入口执行编译、共享合同、Rust 单测与后端清单。 它不包含所有专题脚本。 原生界面、窗口、真实授权和付费请求需单独执行。 平台跳过必须在报告中保留。

验证最终候选 ​

在同一个包上执行原生 WebView 和 Viewer。 界面点击后核对文件、运行时与记录。 再按 Trace 状态矩阵 执行实际链路。 安装和发布遵守当次授权范围。 只构建本地候选时,不替换正常应用。

页面体验能覆盖到哪里 ​

方式可以检查不能据此推断
实际 React 组件与合成桥接表单、草稿、焦点、迟到结果、错误入口、通知队列系统窗口、真实凭据、实际客户端读取
浏览器与实际布局点击命中、滚动、溢出、菜单避让、单行与长文字原生 WebKit 差异、系统拖放、真实授权
候选原生 WebView包内桥接、主题、保存回读、持久偏好和实际叠层实际上游计费、Desktop 缓存、多屏物理体验
真实应用与客户端操作实际重载、续聊、配置恢复、托盘和系统对话框尚未产生的请求类型与其他平台

Toast 测试需先打开配置卡片和嵌套菜单。 检查通知可见、点击可用、退出动画和队列恢复。 只检查样式变量不算实际叠层通过。 列表测试需滚到历史中间,再加入新请求。 检查位置、选中项和分页连续性。 仅截取首屏不能证明阅读过程稳定。

用户任意操作的可重复场景 ​

无法通过有限测试证明所有操作组合。 按状态和风险拆出可重复序列。 每组记录固定顺序;随机探索额外记录种子。 发现新失败后,将原序列转为稳定回归。

操作组合需要保留的结果现有入口与缺口
A→B→A,旧请求晚返回最后选择与草稿;旧结果不污染新连接models、bridge、settings-write;跨模块组合继续补测
保存→切页→关闭卡片→返回草稿和操作归属;不弹过期错误provider-dialog、bridge、configuration-state
回答中切服务或改设置原回答完成;下一轮使用新快照portability;实际 CLI/Desktop 另验
回答中停止→继续等待→结束Gateway 保持可用;结束后安全停止stop-admission、tool-wait;实际页面入口另验
工具等待→切服务→提交结果call ID 与上下文配对;不重复工具tool-wait、portability;真实工具轮次另验
读历史→加载邻页→新请求→刷新不跳到最新;选择、顺序与位置恢复session-reading、Viewer、dashboard-api
改容量→在途结束→重启0 GB 不留完成正文;统计不重复回填usage-only、writer;实际设置页另验
外部改配置→停止或修复保留外部字段;提供冲突处理merge、repair、desktop-lifecycle;真实直连另验
下载→取消→旧下载返回不安装取消的包;可重新检查update、portable-update;实际平台更新另验

当前没有跨全应用的随机操作探索器。 脚本对局部状态有确定性覆盖。 长时间连续操作与跨页组合仍是独立验收任务。

完成一个功能的条件 ​

  1. 当前要求与稳定编号一致。
  2. 正常路径和受影响的异常路径有断言。
  3. 对应界面可以继续操作,最后选择保留。
  4. 当前候选的源码与二进制来源明确。
  5. 实际链路完成对应 R/U 验收。
  6. 未验场景、首次失败和复测分别记录。
  7. 双版共同修复按公开边界吸收。

P 表示程序或合成检查。 R 表示真实授权与正式上游。 U 表示实际应用界面操作。 H 表示用户完成的授权步骤。 真实 CLI 可以由脚本驱动,仍属于 R。 合成原生界面使用 U+P。

报告使用 执行模板。 断言写明预期和实际结果。 同时记录配置恢复、监听关闭和临时目录清理。 不能用测试数量代替功能覆盖率。

公开范围 ​

共同修复覆盖路由、Trace、统计、配置和界面。 公开版保持独立历史、身份和更新渠道。 工具、配置同步与内部能力不进入公开版。 本版没有旧发行版本兼容需求。 不增加内部旧目录、凭据或更新源迁移。 正常重启保留本版数据,未来原生更新按平台验收。

Released under the Apache License 2.0.