Files
YG_FT/docs/20260812/测试用例.md
wuyongtao de9c8e4ffe docs: 精简 README 与 docker 部署说明,归档 20260812 文档快照
- 重写根 README 为架构、端口、启动速览,替代原详细开发指南
- 重写 docker/README.md 聚焦跨服务器部署边界与数据安全
- 新增平台测试用例文档,归档 docs/20260812 快照副本

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-12 15:38:34 +08:00

100 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 和复现步骤。