Releases · 验收与测试规格
- Asset
- ADP-DLV-DOC-DOC-0009
- Feature
- releases
- 领域
- delivery-integrations
- 文档状态
- draft
- 文档 Owner
- DOC
- 事实源
- canonical-docs
- 更新
- 2026/10/14
本页是 Releases PRD 的验收基线与验证计划草案。它不是已执行的
TEST evidence:本文档仓当前没有登记 Releases 的原子 REQ / AC 资产,PLN 资产清单也没有登记 Releases 的
实现或测试定位,因此不能据此宣称 Verification Ready。所有引用按 PLN ·
75c4f1c80ac12f1322fe7bac2132d49a875f3291 固定修订核验。
现有正式测试定位
以下测试在同一修订下存在,是当前可用的正式验证入口;它们尚未登记为文档资产关系,因此不构成文档侧的证据链。
| 范围 | 定位 | 当前覆盖 |
|---|---|---|
| 后端契约 | apps/api/plane/tests/contract/api/test_project_releases.py | 创建幂等与幂等冲突、状态与日期更新、陈旧版本冲突、负责人设置与清空、同名 Milestone/Release 独立、范围加入/移出与重放、跨 Project 工作项拒绝、双向 Milestone 关联与解除、删除后关联收敛与重放、Milestone 路由跨 Project 拒绝、Project Member 只读 403 |
| 项目 profile | apps/api/plane/tests/contract/app/test_project_profile.py | game profile 默认启用 release_view |
| Web 工具函数 | apps/web/core/components/project-releases/helpers.test.ts | 状态分组与关系 ID 解析 |
| Web 状态库 | apps/web/core/store/project-release.store.test.ts | 发布状态库读写与版本更新路径 |
| 导航帮助函数 | apps/web/core/components/workspace/sidebar/project-navigation.helpers.test.ts | 导航项可见性与 release_view 关系 |
核心用户旅程
- 启用 → 创建:Admin 在 Project Settings 启用 Releases,创建一条带名称、状态、标签、目标日期与变更日志的 条目,并在列表页看到它。
- 维护 → 更新:Admin 以当前
version修改状态、实际发布日期与变更日志,条目版本增加且列表同步刷新。 - 范围 → 收敛:Admin 批量加入工作项、移出其中一个,范围随之变化且不出现重复关联。
- 关联 → 对照:Admin 关联一个 Milestone,Release 侧与 Milestone 侧读到同一关联,Milestone 状态不变。
- 重复提交 → 重放:同一幂等键与相同内容重复提交返回与首次一致的结果,不产生第二条条目或关联。
- 删除 → 收敛:Admin 删除条目后,列表与两侧关联都不再返回该条目。
负向矩阵
| 场景 | 期望结果 |
|---|---|
| Project 未启用 Releases 时提交写入 | 稳定“功能未启用”错误,且不写入 |
| Project Member 提交创建、更新、删除或关联 | 权限错误,且不写入 |
| 请求中的 Project 不属于该 Workspace | 范围错误,且不写入 |
| 名称空白、日期或负责人格式非法 | 校验错误,且不写入 |
| 同一幂等键用于不同内容 | 幂等冲突,且不写入第二次结果 |
以陈旧 version 提交更新、删除或关联 | 版本冲突,且不覆盖既有内容 |
| 关联集合包含其它 Project、已删除或不存在的对象 | 整批拒绝,且不产生部分关联 |
| 从 Milestone 路由提交与 URL 不一致的 ID 集合 | 范围错误,且不建立关联 |
| 读取已删除或超出范围的条目 | 稳定“已删除或超出范围”错误,且不返回内容 |
所有负向场景都必须整体回滚,不得留下部分范围、部分关联或半更新条目。
测试规格草案
| 编号 | 规格 | 层级 | 状态 |
|---|---|---|---|
| TEST-DLV-REL-01 | 启用、权限与租户边界:未启用、非成员、跨 Project 请求的拒绝与零副作用 | API 契约 | 待登记为文档测试资产 |
| TEST-DLV-REL-02 | 幂等矩阵:相同内容重放、不同内容冲突、跨 Release 复用同键 | API 契约 | 待登记 |
| TEST-DLV-REL-03 | 并发矩阵:并发更新、并发关联与陈旧 version 收敛 | API 契约与并发 | 待登记 |
| TEST-DLV-REL-04 | 范围与关联完整性:重复加入、重复移出、删除后重放与关联收敛 | API 契约 | 待登记 |
| TEST-DLV-REL-05 | 用户闭环:启用、创建、编辑、范围、关联、删除与冲突反馈 | 浏览器端到端 | 待登记 |
| TEST-DLV-REL-06 | 边界声明:Release 条目与 Harbor sealed release artifact、部署 evidence 不产生共享状态 | 文档与数据边界复核 | 待登记 |
验收基线
- 上述核心旅程在目标环境中全部可完成,负向矩阵全部 fail closed 且无部分写入。
- 幂等重放、权限矩阵、跨 Project 拒绝和版本冲突由正式自动化测试覆盖,并有受保护运行结果可核对。
- Release 与 Milestone 状态的独立性、Release 条目与交付制品/环境事实的边界可被逐条核对。
- 每项成功指标具备口径、目标、观察窗口、事实来源和环境边界;未冻结前不得把指标写成已达成。
证据边界与停止条件
- 本文档仓的 catalog、navigation、contract、deployment、build 与 experience 验证只证明文档可构建、可导航、 关系自洽,不证明任何 Feature 已实现或已验收。
- 正式证据必须来自 owning Plane revision、测试定位与目标环境结果;缺少其中任一项时结论保持 unknown。
- 出现以下任一情况时停止推进并交由 PLN owner 修复:跨 Project 关联被持久化、越权写入成功、陈旧版本覆盖成功、 重复请求产生第二条副作用、删除后仍可读到条目或关联、Release 状态被用于推导部署或验收结论。
- 状态转换约束、权限粒度、receipt 不可篡改性和跨 Project 探测响应一致性未决定前,不得把对应能力宣称为已验收。