docs: 建立 devdocs 开发文档集(13 份模块文档)

This commit is contained in:
AskaEth committed 2026-09-09 16:10:40 +08:00
1 parent 3e9592b006
commit 3b3496559b
15 files changed
+1685 -2

No files matched your search

+100
View File
@@ -0,0 +1,100 @@
# 09 · 测试策略
> 所属:运动会积分榜系统 · 开发文档集
> 版本:v0.1(讨论稿) · 2026-09-09
> 上游:[README](./README.md) · 相关:[02-积分与排名规则](./02-积分与排名规则.md)
---
## 1. 测试分层
| 层次 | 范围 | 工具 | 要求 |
| --- | --- | --- | --- |
| 单元测试 ★ | 积分引擎、排名、tie-break、并列、双倍、破纪录、撤销重算 | Vitest | 覆盖所有规则分支,≥60 用例,**必过** |
| 集成测试 | API + 权限 + 事务 + 审计 | Vitest + Fastify inject | 关键路径全覆盖 |
| 实时测试 | 快照/增量/重连/乱序/重复/心跳 | Vitest + socket.io-client | 模拟断线重连 |
| E2E | 录入 → 发布 → 大屏更新 | Playwright | 至少 3 条主流程 |
| 压测 | 50 大屏 + 5 管理端并发 | autocannon / 自写脚本 | 延迟 <100ms,无内存增长 |
| 彩排 | 真实数据全流程 | 人工 | 赛前必做 |
---
## 2. 积分引擎测试用例矩阵
> 引擎是纯函数,输入「成绩集合 + 积分模板」,输出「流水 + 排名」。以下用例必须在 M2 阶段全部通过。
| # | 用例 | 期望 |
| --- | --- | --- |
| 1 | 8 人参赛正常排名 | 9/7/6/5/4/3/2/1 |
| 2 | 两人并列第 2(skip) | 7/7/-/5/4/3/2/1 |
| 3 | 两人并列第 2(average) | 6.5/6.5/-/5/4/3/2/1 |
| 4 | 三人并列第 3(skip) | 6/6/6/-/-/3/2/1 |
| 5 | 团体项目双倍 | 18/14/12/… |
| 6 | 破纪录 + 双倍 | 成绩分双倍,破纪录加分**不**双倍 |
| 7 | 并列第一的奖牌计数 | 2 金 0 银 1 铜 |
| 8 | 发布后撤销 | 流水作废,总分回退 |
| 9 | 修改已发布成绩 | 旧流水作废 + 新流水,审计可查 |
| 10 | 弃权者不占名次 | 名次顺延 |
| 11 | 报名不足 8 人 | 按实际名次取分 |
| 12 | 人工扣分后排名变化 | tie-break 正确重排 |
| 13 | 同分 tie-break | 金牌 → 银牌 → 铜牌 → 编码 |
| 14 | 破纪录多级别 | 取最高档(max 模式) |
| 15 | 破纪录多级别(sum 模式) | 累加 |
| 16 | 一条成绩归属两个单位(联队) | 按配置拆分或整体归属 |
| 17 | 重复发布同一组 | 幂等,不产生重复流水 |
| 18 | 乱序应用增量 | 最终状态一致 |
---
## 3. 集成测试重点
| 场景 | 断言 |
| --- | --- |
| 未登录调写接口 | 401 / `AUTH_REQUIRED` |
| `recorder` 尝试发布 | 403 / `FORBIDDEN` |
| 发布触发推送 | 大屏客户端收到 `change` 且 version 递增 |
| 撤销发布 | 流水作废、大屏回退、审计有记录 |
| 并发修改同一项目 | 后者收到 `CONFLICT` |
| 重复提交同一 `requestId` | 返回首次结果,不重复写 |
---
## 4. 实时同步测试
- 连接 → `hello` → 收到 `snapshot`。
- 断开 10 秒期间产生 3 次变更 → 重连收到 `catchup` 且最终状态一致。
- 重复投递同一 `change` → 客户端忽略。
- 服务端重启 → 客户端重连后 version 不回退。
- 心跳超时 → 客户端显示离线角标。
---
## 5. E2E 主流程
1. 登录 → 选择项目 → 录入成绩 → 存草稿 → 发布 → 大屏出现新成绩与积分变化。
2. 撤销发布 → 大屏回退 → 重新录入并发布。
3. 登记破纪录 → 确认 → 大屏播放破纪录动效 → 积分榜加分正确。
---
## 6. 压测指标
| 指标 | 目标 |
| --- | --- |
| 大屏客户端数 | 50 并发长连接 |
| 管理端 | 5 并发操作 |
| 发布接口 P95 | < 100ms |
| 推送延迟 P95 | < 500ms |
| 连续运行 24h | 内存增长 < 10% |
---
## 7. 彩排清单(赛前必做)
- [ ] 导入真实单位 / 项目 / 报名数据
- [ ] 全流程录入 + 发布 + 大屏验证
- [ ] 断网 1 分钟后恢复,验证增量补发
- [ ] 拔电重启,验证自动拉起与数据完整
- [ ] 从备份恢复演练
- [ ] 大屏在真实分辨率与投影下检查可读性
- [ ] 裁判长实操培训(30 分钟)