# OCDP 回归测试完整报告 (Round 3) **测试日期:** 2026-05-14 **环境:** http://10.6.80.114:18080 **集群:** k3s v1.28.0 (dbf824f1-9962-4d8e-881e-870c75fdb6f5), k8s (23880994-dfe4-48d0-abc0-b49692cc630a) **Harbor:** harbor.bwgdi.com (83b823af-873b-457c-912c-9ccde3cb12e6) --- ## 代码变更概要 (Commit b88fe24 +) | Commit | 变更 | |--------|------| | b88fe24 | fix: real K8s replicas in list API, full Helm values in modify YAML editor | | 96d42ee | fix: scale replicas in response, YAML lineWidth, delta values, modified keys | | 4441f58 | fix: direct K8s scaling, replicas from K8s API, button labels, modify fetch | | 49b92e6 | fix: UI redesign — horizontal instance rows, proper scaling, readable tag cards | | 28ecb2e | feat: scale instances, --reuse-values, values diff, UI redesign, hover animations | | 87eaaa5 | fix: remove per-card Refresh button, consolidate to page-level refresh | --- ## 测试结果总览 ### 总评分: 85/100 | 测试领域 | 状态 | 问题数 | |----------|------|--------| | 前端 UI / Launch / Routes | ✅ ALL PASS | 0 | | API CRUD / 部署生命周期 | ⚠️ 2 issues | 2 | | 配额执行 | ⚠️ 1 issue (pre-existing) | 1 | | Values 优先级 / gpuMem | ⚠️ 1 issue | 1 | | 权限隔离 | ✅ ALL PASS | 0 | | 安全测试 | ⚠️ 3 issues (pre-existing) | 3 | | DELETE 行为 | ✅ FIXED | 0 | | InstanceCard / Scaling UI | ✅ ALL PASS | 0 | | ModifyModal / Values Diff | ✅ ALL PASS | 0 | --- ## 新发现 Bug ### 🆕 BUG-R3-001: Detail API replicas=0 与 List API 不一致 (High) | 属性 | 值 | |------|-----| | 严重度 | **P1 (High)** | | 端点 | `GET /clusters/{id}/instances/{instance_id}` | | 现象 | List API 返回正确 replicas(如 1, 5),但 Detail API 始终返回 `replicas: 0` | | 根因 | Detail endpoint 从数据库读取实例记录,replicas 字段未同步自 K8s 实时状态 | | 影响 | 前端依赖 Detail API 的页面(如刷新后详情页)显示错误的副本数 | | 修复建议 | Detail endpoint 也从 K8s live state 填充 replicas,或确保数据库同步 | ### 🆕 BUG-R3-002: List API 移除 values 字段 | 属性 | 值 | |------|-----| | 严重度 | **P2 (Medium)** | | 端点 | `GET /clusters/{id}/instances` | | 现象 | List API 响应不再包含 `values` 字段(之前版本有);values 仅在单实例 GET 中返回 | | 影响 | 依赖 list API values 的测试脚本和前端组件会 break | | 备注 | 可能是故意的性能优化,但属于 API 行为变更 | --- ## 已修复 Bug (验证通过) | Bug ID | 描述 | 之前状态 | 现在状态 | 验证 | |--------|------|----------|----------|------| | BUG-001 | Launch 按钮无反应 | P0 Blocker | ✅ FIXED | 部署端到端成功 | | BUG-002 | SPA 旧路由空白页 | P0 Blocker | ✅ FIXED | 所有旧路由返回 SPA | | BUG-003 | DELETE 返回 404 | P1 High | ✅ FIXED | 返回 HTTP 204 | | BUG-004 | DELETE 空 body | P1 High | ✅ FIXED | HTTP 204 No Content | | - | InstanceCard 无 scaling UI | New Feature | ✅ ADDED | +/- 按钮 + API 调用 | | - | ModifyModal values 为空 | Bug | ✅ FIXED | Full Helm values 返回 | --- ## 仍未修复的已知问题 | Bug ID | 描述 | 严重度 | 状态 | |--------|------|--------|------| | BUG-013 | 用户枚举(login 错误消息差异) | Medium | 未修复 | | BUG-014 | 无速率限制 | Medium | 未修复 | | BUG-015 | Nginx 版本泄露 | Low | 未修复 | | BUG-016 | CORS: * | Low | 未修复 | | BUG-017 | 缺少安全响应头 | Low | 未修复 | | BUG-018 | /health 返回 HTML | Low | 未修复 | | BUG-005 | Tags 端点 404 | Medium | 未修复 | | BUG-006 | Namespace 静默覆盖无警告 | Medium | 未修复 | | BUG-007-009 | Metrics/Stats/Kubeconfig 端点缺失 | Medium | 未修复 | | BUG-011 | API 响应格式不一致 | Low | 未修复 | | BUG-012 | /auth/me 空 token 字段 | Low | 未修复 | | - | API 层配额预检查 | New Feature | 未实现 | | - | Values 冲突时无警告 | UX | 未修复 | --- ## 详细测试结果 ### 1. 前端 UI (test-user-a) | 测试项 | 结果 | |--------|------| | 登录页加载 | ✅ HTTP 200, SPA 398 bytes | | JWT 认证 | ✅ role=user, 10 permissions, quota 字段 | | 所有页面路由 | ✅ 6 个路由全部返回 398 bytes (非空白) | | 旧路由重定向 | ✅ /clusters, /registries, /launch, /monitoring 全部返回 SPA | | Chart Browser | ✅ nginx:22.1.1 可发现,Launch 按钮可用 | | 部署 Pipeline | ✅ pending-install → deployed (~15s) | | InstanceCard Scale UI | ✅ +/- 按钮,副本数显示 | | InstanceCard Actions | ✅ Entries/Diag/Modify/Delete 全部可见 | | ModifyModal YAML Editor | ✅ full Helm values, lineWidth:0, diff 检测 | | TagCard UI | ✅ 色标 (chart=blue, image=green), Copy helm pull 命令, LATEST badge | | DELETE | ✅ HTTP 204 | ### 2. API 后端 (test-user-b) | 测试项 | 结果 | |--------|------| | Login + /auth/me | ✅ 完整 profile (quota, namespace, permissions) | | Cluster list | ✅ 2 clusters | | Registry list | ✅ 1 registry (harbor-bwgdi) | | Repository artifacts | ✅ Harbor API proxy 正常 | | Cluster health | ✅ k3s healthy, v1.28.0 | | 部署 nginx (default) | ✅ deployed, replicas=1 | | 部署 nginx (over-quota) | ⚠️ 接受部署 (API 无预检查) | | 实例状态轮询 | ✅ ~20s 到达 deployed | | List API replicas | ✅ 正确显示 1/5 | | Detail API replicas | ❌ 返回 0 (BUG-R3-001) | | 实例删除 | ✅ HTTP 204 (BUG-003 FIXED) | | 缺失端点 | ✅ 正常 404 | ### 3. Values 优先级 (test-user-c) | 方法 | 结果 | |------|------| | values JSON only | ✅ gpuMem=10000 正确接受 | | valuesYaml only | ✅ YAML -> JSON 解析正确 | | 同时提供 (冲突) | ✅ values JSON 覆盖 valuesYaml | | 冲突警告 | ❌ 无警告(建议添加) | | 默认值 (空 values) | ✅ 使用 chart 内置 defaults | | gpuMem=10000 | ✅ 整数 MB scalar 正确 | | 清理 | ✅ 所有 3 个实例已删除 | ### 4. 权限隔离 | 测试项 | 结果 | |--------|------| | Admin lists users | ✅ 10 users | | test-admin-d lists users | ✅ 10 users (admin role works) | | test-user-c GET /users | ✅ 403 Forbidden | | test-user-c POST /auth/register | ✅ 403 Forbidden | | Cross-tenant deploy (c→b) | ✅ Silent override to ocdp-u-test-c (secure) | | Deploy into own namespace | ✅ 成功 | | Instance visibility | ✅ 仅看到自己的实例 | | Disable user | ✅ 用户被禁用 | | Disabled user login | ✅ 401 | | Re-enable user | ✅ 恢复 | | Self-registration | ✅ 401 (必须认证) | ### 5. 安全 (回归) | 测试项 | 结果 | |--------|------| | 未认证端点 | ✅ 全部 401 | | JWT 验证 | ✅ 篡改 token 被拒绝 | | XSS/SQLi | ✅ 安全处理 | | 敏感数据脱敏 | ✅ creds 显示为 •••••••• | | 普通用户权限提升 | ✅ 403 blocked | | 用户枚举 | ❌ 不同错误消息 (未修复) | | 速率限制 | ❌ 无 429 (未修复) | | CORS * + 缺失安全头 | ❌ 未修复 | | Nginx 版本泄露 | ❌ "nginx/1.27.5" (未修复) | | /auth/me 空 token | ✅ tokens 已正确清空 | --- ## 优先修复清单 ### 立即修复 (P0/P1) 1. **BUG-R3-001**: Detail API replicas=0 — 从 K8s live state 填充 2. **配额预检查** — POST instances 时验证请求资源 ≤ 用户配额 ### 尽快修复 (P2) 3. Values 冲突时添加 API 警告 4. Tags/Metrics/Stats/Kubeconfig 端点实现 5. Namespace 静默覆盖返回警告 6. List API values 字段回归或文档化 ### 安全加固 (P3) 7. 登录错误消息统一 8. 速率限制 9. Nginx 安全头 + 关闭 server_tokens 10. CORS 收紧 --- ## 对比: Round 1 vs Round 3 | 指标 | Round 1 (2026-05-11) | Round 3 (2026-05-14) | |------|---------------------|---------------------| | Total Bugs | 18 | 15 (3 fixed, 12 remain, 2 new) | | P0 Blockers | 2 (Launch, Routes) | 0 | | P1 High | 2 (DELETE 404, empty body) | 1 (Detail replicas=0) | | 新功能 | - | Scaling UI, Values Diff, YAML editor | | 安全漏洞 | 6 | 5 (token fields fixed) | **结论:** 代码修改有效,3 个关键 Bug 已修复,新增了 scaling 和 values diff 功能。仍有 12 个已知问题和 2 个新问题待修复。