docs: 精简 README 与 docker 部署说明,归档 20260812 文档快照
- 重写根 README 为架构、端口、启动速览,替代原详细开发指南 - 重写 docker/README.md 聚焦跨服务器部署边界与数据安全 - 新增平台测试用例文档,归档 docs/20260812 快照副本 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
99
测试用例.md
Normal file
99
测试用例.md
Normal file
@@ -0,0 +1,99 @@
|
||||
# YG_FT 平台测试用例
|
||||
|
||||
## 测试范围
|
||||
|
||||
覆盖部署、登录会话、权限、租户与项目隔离、算力节点、GPU 分配、数据集、MinIO、训练、权重合并、模型推理、模型评测、审计、日志、异常重试和性能。
|
||||
|
||||
测试地址:前端 `http://localhost:16801`,Backend `http://localhost:17861/modelTF`,Compute `http://localhost:19100/modelTF`,File Gateway `http://localhost:19101/modelTF`,MinIO `http://localhost:19000`。
|
||||
|
||||
## 前置条件
|
||||
|
||||
1. 前端已执行 `npm run build`。
|
||||
2. Backend、Frontend、Redis、MinIO、Compute 容器均为 healthy。
|
||||
3. PostgreSQL 表结构与 `backend/app/db/sql/000_full_init.sql` 一致。
|
||||
4. 准备管理员、普通用户、不同项目和租户测试账号。
|
||||
5. 准备 JSON、JSONL、空文件和非法格式数据集。
|
||||
6. 准备 base model、adapter 和可推理模型。
|
||||
|
||||
## 用例
|
||||
|
||||
| 编号 | 场景 | 操作 | 预期 |
|
||||
| --- | --- | --- | --- |
|
||||
| DEP-001 | 容器启动 | 执行各 compose 的 `up -d` | 所有服务启动并 healthy |
|
||||
| DEP-002 | Backend 健康 | 访问 `/health` | HTTP 200,依赖状态正常 |
|
||||
| DEP-003 | Compute 健康 | 访问 Compute health | 返回节点服务正常 |
|
||||
| DEP-004 | MinIO 健康 | 访问 `/minio/health/live` | 返回存活状态 |
|
||||
| DEP-005 | 前端入口 | 打开 `:16801` | 无白屏、无外部 CDN 请求 |
|
||||
| DEP-006 | 跨服务器 | 配置远程 MinIO/Compute 地址 | Backend 可访问远程服务 |
|
||||
| AUTH-001 | 正常登录 | 输入正确账号密码 | 登录成功并保存 token |
|
||||
| AUTH-002 | 错误密码 | 连续输入错误密码 | 返回 401,达到阈值后限流 |
|
||||
| AUTH-003 | 过期会话 | 使用过期 token 请求接口 | 返回 401 并回登录页 |
|
||||
| AUTH-004 | 退出登录 | 退出后再次请求业务接口 | token 失效 |
|
||||
| AUTH-005 | 管理员 | 访问用户、节点、审计功能 | 可执行授权操作 |
|
||||
| AUTH-006 | 普通用户 | 访问管理员功能 | 按钮隐藏,后端返回 403 |
|
||||
| AUTH-007 | 项目隔离 | 用户 A 访问用户 B 项目 | 列表不显示,接口拒绝 |
|
||||
| AUTH-008 | 租户隔离 | 租户 A 请求租户 B 数据 | 不返回跨租户数据 |
|
||||
| AUTH-009 | ACL | 授予模型 read/execute | read 只能看,execute 才能运行 |
|
||||
| AUTH-010 | 软删除 | 删除模型或数据集 | 列表隐藏,保留删除审计字段 |
|
||||
| NODE-001 | 新增节点 | 填写 API、文件网关和标签 | 节点保存并显示 |
|
||||
| NODE-002 | 节点测试 | 点击测试 | health/GPU 信息同步 |
|
||||
| NODE-003 | 不可达节点 | 使用错误地址测试 | 快速失败并显示原因 |
|
||||
| NODE-004 | 删除节点 | 点击删除 | 节点从可用列表消失 |
|
||||
| NODE-005 | 多 GPU | 节点有多张卡 | 显示编号、显存和状态 |
|
||||
| NODE-006 | 指定 GPU | 训练选择 GPU 0 | 只占用 GPU 0 |
|
||||
| NODE-007 | GPU 冲突 | 两任务申请同卡 | 后者排队或拒绝,不抢占 |
|
||||
| NODE-008 | 剩余 GPU | 节点有空闲卡 | 其他任务可继续选择该节点 |
|
||||
| NODE-009 | 释放 GPU | 停止训练/卸载推理 | GPU 恢复可用 |
|
||||
| DATA-001 | JSON 统计 | 上传 3 条 JSON 数据 | 列表和详情均为 3 条 |
|
||||
| DATA-002 | JSONL 统计 | 上传 3 行 JSONL | 列表和详情均为 3 条 |
|
||||
| DATA-003 | 非法文件 | 上传空或错误格式 | 返回明确错误 |
|
||||
| DATA-004 | MinIO 归档 | 上传数据集 | 产生对象和 checksum |
|
||||
| DATA-005 | 节点同步 | 选择算力节点上传 | 文件进入目标节点缓存 |
|
||||
| DATA-006 | 同步断网 | 同步时阻断节点 | 进入重试或失败,不无限等待 |
|
||||
| DATA-007 | 数据权限 | 用户查看数据集 | 只显示有权限的数据 |
|
||||
| TRAIN-001 | 创建训练 | 选择项目、数据集、节点和 GPU | 任务关联完整 |
|
||||
| TRAIN-002 | 启动训练 | 启动任务 | 进入 queued/running |
|
||||
| TRAIN-003 | 日志轮询 | 打开训练日志 | 约 3 秒更新,不刷屏 |
|
||||
| TRAIN-004 | 训练曲线 | 产生 loss/metric | 页面显示曲线 |
|
||||
| TRAIN-005 | 停止训练 | 点击停止 | 进程停止且资源释放 |
|
||||
| TRAIN-006 | 训练失败 | 模拟引擎失败 | 显示原因和日志 |
|
||||
| MERGE-001 | 自动准备 | 执行权重合并 | 自动准备 base model/adapter |
|
||||
| MERGE-002 | 节点一致 | 权重在训练节点 | 合并请求发往训练节点 |
|
||||
| MERGE-003 | 合并归档 | 合并成功 | 结果上传 MinIO 并登记 |
|
||||
| MERGE-004 | 合并权限 | 无 execute 用户操作 | 返回 403 |
|
||||
| INF-001 | 列表加载 | 点击模型推理 | 列表快速显示,不长时间等待 |
|
||||
| INF-002 | 指定节点 | 多节点时选择节点 B | 模型只在 B 加载 |
|
||||
| INF-003 | 训练节点优先 | 未重新指定节点 | 优先使用训练节点 |
|
||||
| INF-004 | 推理缓存 | 启动未缓存模型 | 从 MinIO 下载到目标节点 |
|
||||
| INF-005 | 加载超时 | 模拟加载超过 15 分钟 | 失败并显示原因 |
|
||||
| INF-006 | 对话推理 | 发送消息 | 返回推理结果 |
|
||||
| INF-007 | 释放推理 | 点击释放 | 卸载模型并释放 GPU |
|
||||
| INF-008 | 删除推理 | 删除任务记录 | 记录删除成功并释放资源 |
|
||||
| EVAL-001 | 创建评测 | 选择模型、数据集、指标 | 任务创建成功 |
|
||||
| EVAL-002 | 数据集权限 | 选择无权数据集 | 不出现在选择列表 |
|
||||
| EVAL-003 | 指标保存 | 选择具体指标 | 结果不错误显示 custom |
|
||||
| EVAL-004 | 评测报告 | 等待任务完成 | 返回非空报告和明细 |
|
||||
| EVAL-005 | 页面轮询 | 打开评测页面 | 不刷屏,loading 可结束 |
|
||||
| OPS-001 | 审计 | 登录、创建、删除、执行资源 | 记录 actor/action/resource/time |
|
||||
| OPS-002 | 轮询日志 | 观察 Backend 日志 | 成功轮询不高频输出 INFO |
|
||||
| OPS-003 | 错误日志 | 模拟依赖异常 | 保留 WARNING/ERROR 和 request_id |
|
||||
| OPS-004 | 推理接口耗时 | 请求 `/model-compare` | 正常环境目标小于 1 秒 |
|
||||
| OPS-005 | 看板耗时 | 请求 `/dashboard/stats` | 有短缓存且不无限等待 |
|
||||
| OPS-006 | 并发访问 | 10 用户同时打开列表 | 无连接池耗尽和 5xx |
|
||||
| OPS-007 | 数据库断开 | 临时阻断 PostgreSQL | 页面明确显示依赖异常 |
|
||||
|
||||
## 回归命令
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
npm run build
|
||||
cd ..
|
||||
python -m compileall backend/app compute
|
||||
git diff --check
|
||||
docker compose -f docker/app/docker-compose.yml ps
|
||||
docker compose -f docker/compute/docker-compose.yml ps
|
||||
curl http://localhost:17861/modelTF/health
|
||||
curl http://localhost:19100/modelTF/health
|
||||
```
|
||||
|
||||
失败用例必须附接口响应、容器日志、request_id 和复现步骤。
|
||||
Reference in New Issue
Block a user