4.5 KiB
4.5 KiB
12 测试、回归与验收
模块职责
定义后台 Vue 化的测试层次、跨后端契约回归、版本接口保护和最终删除验收。该 spec 不实现测试代码,只规定后续任务必须覆盖的行为。
依赖关系
上游:所有模块 spec;现有 backend-java Maven 测试体系;新 admin-frontend-vue 构建和测试命令。
相关现有测试/工具:
backend-java/src/test/java下的权限、控制器和契约测试。frontend-vue/tests仅作为客户端工程参考,不得把后台测试混入客户端测试目录。- 新后台测试放在
admin-frontend-vue/tests,Java 契约测试放在backend-java/src/test/java。
核心接口\n\n测试对象包括菜单树、用户/权限 API、业务 API、公开版本接口、Nginx History 路由和 Flask 删除后的流量边界。\n\n## 内部结构\n\n验收分为前端静态检查、前端契约测试、Java API 契约测试、数据库迁移测试、真实 HTTP 验收和最终删除验收六层。\n\n## 类型映射\n\n测试夹具需要覆盖 AdminMenuNode、AdminUser、分页结果、任务状态、版本公开响应和空值响应。\n\n## 迁移/实现注意事项\n\n先冻结旧快照,再执行迁移和新实现回归;任何客户端版本接口差异都阻断 Flask 删除和 /admin 正式切换。\n\n## 测试层次
前端静态和类型检查
- Vue/TypeScript 类型检查零错误。
- Vite 构建成功,产出
dist/index.html和所有 assets。 - 构建产物中的 base 路径全部为
/admin-vue/。 - 页面模块按路由拆 chunk。
- 工程不引用客户端
frontend-vue/new_web_source。
前端单元/契约测试
至少覆盖:
- 菜单树扁平节点组装为树。
- 分组节点无 route 时不可作为页面进入。
- 当前用户无菜单时展示空状态。
- 非超级管理员访问无权限 route 时跳到第一个有权限页面。
- 超级管理员可访问有效 admin 菜单。
- 401 跳转登录。
- API
{data}、{item}、{items}归一化。 - 分页字段边界、空列表、请求失败。
- 退出登录清理 Pinia 状态。
- 上传/导入/下载终态和重复点击保护。
Java API 契约测试
至少覆盖:
/api/admin/current-user返回当前用户的item。/api/admin/current-user/menus只返回有效 admin 菜单树。- 树节点
key、route、name和 parent-child 关系正确。 - 普通用户、管理员、超级管理员菜单不同且不越权。
/api/version字段为version/desc/url。/api/version/latest字段为version/file_url。web_config无记录返回两个 null。- 多条版本记录按创建时间和 id 稳定取最新。
- 不带登录态访问需鉴权的 admin API 被拒绝。
Flyway/数据库测试
- 迁移后所有 admin 菜单 route_path 唯一。
column_key不被改写。- 用户直接授权记录数量不减少。
- 父菜单授权的有效子菜单展开语义保持一致。
- 重复执行迁移不会产生重复菜单或重复授权。
Nginx/真实 HTTP 验收
/admin返回 302 到/admin-vue/。/admin-vue/返回 HTML。/admin-vue/account/users刷新仍返回 HTML。- assets 正常返回正确 MIME。
- 不存在 assets 返回 404。
/api/admin/current-userCookie 能透传到 Java。/api/version/latest在 Flask 停止后仍可访问。
迁移前后对比
必须保存以下快照:
- 旧后台每个角色可见菜单 key。
- 新菜单树每个角色可见菜单 key。
- 版本公开接口响应。
- 每个业务面板主要列表字段和分页语义。
- 关键导入/导出/下载错误场景。
允许变化:
- 菜单显示分组。
- Vue route path。
- 页面布局和交互流程。
- 前端组件实现。
不允许变化:
- 客户端版本接口路径和字段。
- 后端业务 API 路径,除非另有独立迁移决策。
- 用户菜单权限的实际范围。
- 数据删除、导入、导出和任务终态语义。
最终验收清单
admin-frontend-vue构建和测试通过。- Java 编译、单测、契约测试通过。
- Flyway 在测试库执行成功。
- 17 个后台业务页面均有 Vue 对应页面或明确的验收记录。
/admin已稳定重定向/admin-vue/。- Nginx History 刷新和 assets 404 语义正确。
/api/version/latest已完成真实客户端兼容验证。- Flask 管理页面和管理 API 已无生产流量。
- 旧
admin.html、admin.js、admin-interactions.js已删除。 - 客户端
frontend-vue和new_web_source未被后台工程污染。