fix: 验收对照表按子项记结果不再虚报通过

This commit is contained in:
Nixevol
2026-09-30 16:24:56 +08:00
parent c72d1f0427
commit cb9512fe11
11 changed files with 1138 additions and 93 deletions
+11 -1
View File
@@ -1447,7 +1447,7 @@
- 实际做法:`test/accept/rest_accept_test.go` 用随机端口与临时目录;`grace_seconds`/`ack_timeout_seconds` 调到数秒;`record_retention_days=0` 另起进程;F19 对照表改为通过并写明四套 SDK checklist 证据路径,本波不重跑全量。
- 原因:短时可测项应收口;长时/环境限制项不假装通过。
- 备选方案:专用压测机与 Linux 宿主再补长时项。
- 影响:`ACCEPTANCE.md` 汇总通过 23 / 失败 0 / 未测 0;长时子项仍写在备注。
- 影响:当时 `ACCEPTANCE.md` 汇总写成通过 23 / 失败 0 / 未测 0;已被 T-02(#63)按子项更正。
2. **harness MQTT 握手后清除 SetDeadline**
- 原条款:`test/harness` 属总控;Dial 时 `SetDeadline(now+timeout)`。
@@ -1708,3 +1708,13 @@ issue #3 未关闭,`feat/fix-3-downlink-deadlock` 未合入 `main`。下面是
- 原因:原工具只发 MQTT 3.1.1 CONNECT、无用户名密码、无 hello/收发,连不上 NixMsg,也测不出 PRD 第 8 节任何指标。
- 备选方案:直接用四套 SDK 压测(否决:工具需覆盖裸设备路径,且不改 sdk)。
- 影响:仅 `test/load/*` 与本文本节;不改 broker/message/sdk。本地验收为 50 连接、每秒 20 条、1 分钟出报告。
### 复审修复 T-02
1. **验收对照表不再把部分覆盖标成整项通过**
- 日期:2026-09-30
- 原条款:PRD §10;issue #63。
- 实际做法:`test/report` 增加 `partial` 与子项;整项仅在全部子项通过时写「通过」,否则「部分通过 (x/y)」。未覆盖子项三选一:引用已有单元/集成测试作证据、保持未测并写原因。本波不新编端到端用例去「补绿」,不把未跑的长时/环境项标通过。同步 `ACCEPTANCE.md`、`q2_results.json`、`docs/RELEASE.md`、`docs/OPS.md`、`README.md`。
- 原因:原先 12 项备注写着未穷尽仍标通过,交付说明写成「通过 23」。
- 备选方案:为每个未测子项补验收用例(本波不做,避免为变绿放松断言)。
- 影响:汇总改为通过 19、部分通过 4(F03/F08/F21/F22)、失败 0。F19 仍引用仓库内 SDK 清单、本波不重跑。
+4 -4
View File
@@ -127,10 +127,10 @@ curl -sS -H "Authorization: Bearer $NIXMSG_METRICS_TOKEN" http://127.0.0.1:7443/
## 9. 验收与仍跳过的长时项
F01–F23 短时间验收对照表见 [test/accept/ACCEPTANCE.md](../test/accept/ACCEPTANCE.md)(汇总通过 23,失败 0,未测 0)。下列因环境或时长限制**未测**,不得宣称已通过:
F01–F23 验收对照表见 [test/accept/ACCEPTANCE.md](../test/accept/ACCEPTANCE.md)(汇总通过 19,部分通过 4,失败 0,未测 0)。整项通过要求该行子项都有证据。下列子项**未测**,不得宣称已通过:
- F03:1000 端全表 1 秒内返回、真拔网线后心跳超时离线
- F08 / Q3:Linux netem 20% 丢包(本机 Windows)
- F08:Linux netem 20% 丢包(本机 Windows)
- F21:裸 TCP MQTT 登录收发(验收只走 WebSocket)
- F22:Docker 全量冒烟
- 压测:1000 连接保持 10 分钟、每秒 200 条
F22 通过的子集仅覆盖 init + 健康检查等;备份恢复、升级迁移、证书重载、Docker 全量、`/metrics` 抓取等仍见对照表备注。
+13 -16
View File
@@ -17,13 +17,7 @@
## 2. F01–F23 验收结果
来源:[test/accept/ACCEPTANCE.md](../test/accept/ACCEPTANCE.md)(生成时间 2026-09-30T02:16:46Z)。对照表汇总:通过 23,失败 0,未测 0。
长时/环境限制项在对照表备注中保留「未测子项」说明,不单独占「未测」行:
- F03:未跑 1000 端全表 1s、真拔网线心跳超时(关连接模拟断线)
- F08:Linux netem 20% 丢包未测(本机 Windows)
- 压测:未跑 1000 连接保持 10 分钟
来源:[test/accept/ACCEPTANCE.md](../test/accept/ACCEPTANCE.md)(T-02 按子项重写,见 issue #63)。对照表汇总:**通过 19,部分通过 4,失败 0,未测 0**。整项「通过」要求该行 PRD 一句话里的子项都有测试证据;不得把部分覆盖标成通过。
### 通过
@@ -31,12 +25,10 @@
|---|---|
| F01 | 批量开通整批校验、停用、删除群主转让、删除后同编号重开不串数据 |
| F02 | 新设备登录后旧设备自动退出、换 IP 用令牌重连、两种密码锁定、重置密码后被踢、服务器故障不误报密码错误 |
| F03 | 断开后状态及时变离线,全表可列出 |
| F04 | 只通知订阅了的端 |
| F05 | 崩溃不丢已提交消息,消息号去重和冲突,密码门生效,配额生效 |
| F06 | 群成员收到同一份,入群前不补,发送者不收到自己的 |
| F07 | 256 KiB 通过,超出拒绝,接收上限生效 |
| F08 | 弱网最终送达且应用层不重复,重启后续传 |
| F09 | 保留时间从发送时刻起算,超时过期 |
| F10 | 短断线送到,长断线丢弃,服务器重启后宽限内重连送到 |
| F11 | 发送方离线后到点仍发送 |
@@ -47,15 +39,20 @@
| F16 | 群主权限、退出后不再收到、解散后同编号新群不收旧消息 |
| F17 | 后台管端、管注册、管群、查记录,响应里没有正文;API 令牌可用且不能越权 |
| F18 | 送达后正文消失;记录天数 0 时连记录消失;防重仍在 |
| F19 | 四种 SDK 通过同一清单 |
| F20 | 裸 MQTT 能登录、收、确认、发 |
| F21 | 默认一个端口提供后台、WebSocket、TCP、注册;后台可分到单独端口 |
| F22 | 初始化后单文件或 Docker 启动、备份恢复、升级迁移、证书自动重载、指标可抓取 |
| F19 | 四种 SDK 通过同一清单(仓库内清单测试,本波未重跑全量) |
| F20 | 裸 MQTT WebSocket 能登录、收、确认、发 |
| F23 | 注册开关、安全码校验、换码不影响已注册、输错锁定 |
### 未测
### 部分通过
无整行未测项。子项因长时间或环境限制未测的见上「长时/环境限制」与对照表备注。
| 编号 | 已覆盖 | 仍未测 |
|---|---|---|
| F03 | 断开后变离线、目录可列出 | 1000 端全表 1s、真拔网线心跳超时 |
| F08 | 重启续传、应用层同号去重、toxiproxy 弱网 | Linux netem 20% 丢包 |
| F21 | 单端口 HTTP/WS/注册、后台分离端口 | 裸 TCP MQTT 登录收发 |
| F22 | init/健康检查、备份、迁移前备份、证书重载、/metrics | Docker 全量冒烟 |
压测 1000 连接保持 10 分钟、每秒 200 条仍未跑(见 OPS 第 9 节)。
### 失败
@@ -122,7 +119,7 @@
| 项 | 结果 |
|---|---|
| `go test ./test/accept/ -count=1`(含 F03/F04/F07/F10/F11/F14/F15/F18,F19 引用既有 SDK 清单) | 通过(约 24–27s) |
| 写入 `ACCEPTANCE.md` / `q2_results.json` | 通过 23,失败 0,未测 0 |
| 写入 `ACCEPTANCE.md` / `q2_results.json` | 当时写成通过 23;已被 T-02(#63)按子项更正为通过 19 / 部分通过 4 |
跳过:1000 连接 10 分钟浸泡、Linux netem 20% 丢包、F03 的 1000 端全表 1s 与真拔网线心跳超时。