-
Notifications
You must be signed in to change notification settings - Fork 0
04 roadmap 04 test strategy
← 返回 Wiki 首页 | 四、项目排期 · 04 测试与验收策略 | 上一篇:迭代计划 P0–P4 | 下一篇:文档维护规范 →
每个里程碑的验收条件已在迭代计划中给出,本节定义支撑这些条件的测试分层与长期回归资产。
测试分为五层,各层职责不重叠:
| 层次 | 覆盖对象 | 要求 |
|---|---|---|
| 单元 | 状态机、权限纯函数、schema、错误码映射 | 每个状态转换与每条拒绝路径都有聚焦用例;封闭联合类型用 assertNever 保证穷尽 |
| 契约 |
@dsh-chat/contract 的命令、事件与版本协商 |
跨包共享的编解码与兼容窗口行为,含旧版本 host 连新 relay |
| 集成 | 单 relay + 多 host 的真实流程 | P0 两实例、P1 起三实例;使用真实数据库而非内存替身 |
| 恢复 | 崩溃、重启、回滚、分叉 | ACK 前崩溃、relay 重启、备份回滚后的水位对账、sync_diverged 处置 |
| 安全 | 越权、注入、隔离、供应链 | 见下,且必须随版本长期保留为回归资产 |
安全回归用例库是交付物而不是一次性验证,至少覆盖:跨组织读写尝试、角色越权与 ACL 绕过、成员移除后的访问拒绝、缓存过期授权、历史授权范围外读取、消息撤回后的索引残留、搜索结果计数推断、附件授权绕过、跨源与 CSRF 缺失、凭证与签名重放、时间偏移滥用、私网与 DNS rebinding 的 SSRF、确认挑战重放与刷新绕过、命令注入与富文本二次解析、Bot 与 AI 输出中的指令注入、插件撤销后的迟到结果、沙箱逃逸尝试(文件系统、环境变量、网络、Docker socket)、秘密泄漏到日志与产物、E2EE 模式下服务端正文访问尝试。
每个安全用例断言的是拒绝行为与错误码,而不仅是“未崩溃”;新增功能若触及授权、内容授权、出站或执行路径,必须同时补充对应的拒绝用例才能合入。
性能与容量测试对照 SLO 表执行,至少覆盖:大群日志写入不随成员数线性扇出、队列深度与游标滞后在目标内、限流在各维度按最严格者生效、大文件分块上传与断点续传、长连接背压下不丢已接收消息与授权变更。
迁移测试使用真实历史数据库快照,验证五步迁移的每一步可暂停、可重试、可回滚读路径,并在双读/双写期间校验计数、摘要与外键一致。
用户可见的 DSH 集成通过可运行 profile 提供无密钥 replay/snapshot 覆盖,使界面与事件流变更可在无外部依赖时回归。测试数据不得包含真实凭证、真实组织数据或可用密钥。
安全回归用例库对应的强制条目,见安全与合规 §39 安全规范清单。 性能测试对照的 SLO 表,见可观测性与运维 §40.1。 迁移五步定义,见消息投递与持久化 §29.1。