Files
aurak/docs/tests/complete-test-framework.md
T
Developer 07308cae99 docs: 完整测试框架文档 — 5个Phase + 272项测试索引 + 14个缺陷记录
涵盖:
- Phase 0-5 测试架构与详细用例清单
- 脚本索引(11个测试脚本)与执行策略
- 全部测试结果汇总(~314项 100%通过)
- 14个已修复缺陷跟踪表

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 10:55:42 +08:00

18 KiB
Raw Blame History

AuraK 完整测试框架

版本: v2.0 · 更新: 2026-06-16 覆盖: 用户管理 / 权限系统 / 考核评估 / 并发场景 / UI验证


一、测试架构总览

┌────────────────────────────────────────────────────────────────────┐
│                        AuraK 测试框架                              │
├────────────────────────────────────────────────────────────────────┤
│                                                                    │
│  Phase 0: 系统测试 (System Tests)                                  │
│  ├── test-systematic.mjs           142项 · 全角色全维度             │
│  └── test-full-coverage.mjs         52项 · 未覆盖路径补全           │
│                                                                    │
│  Phase 1: 认证与用户 (Auth & User)                                 │
│  ├── 登录/登出/Token校验/API Key                                   │
│  ├── 用户 CRUD 正常/异常/边界                                       │
│  └── 角色升降级即时生效                                              │
│                                                                    │
│  Phase 2: 权限 RBAC (Permission)                                   │
│  ├── 三层角色权限验证 (26/21/5)                                     │
│  ├── 系统角色保护 / 自定义角色 CRUD                                 │
│  └── 前端组件级门控 (PermissionGate)                                │
│                                                                    │
│  Phase 3: 考核评估 (Assessment)                                    │
│  ├── test-assessment-smoke.mjs      29项 · 烟雾测试                │
│  ├── test-e2e-assessment-full-flow.mjs 29项 · 端到端全流程          │
│  ├── test-p2-advanced.mjs           20项 · P2 高级功能              │
│  ├── test-concurrent-assessments.mjs      · 20人并发考核            │
│  └── test-multiround.mjs                 · 多轮对话                 │
│                                                                    │
│  Phase 4: 出题引擎 (Question Engine)                               │
│  ├── 维度权重分配算法验证 (floor+remainder)                         │
│  ├── 题库容量与重叠率检查                                          │
│  └── judgment/评分标准完整性校验                                    │
│                                                                    │
│  Phase 5: 场景验证 (Scenario)                                      │
│  ├── exam-organizer.mjs               · 考试组织者全流程            │
│  └── test-permission-flow.mjs          · 三层角色权限验证           │
│                                                                    │
│  Phase 6: 缺陷回归 (Regression)                                    │
│  ├── shuffleArray bug 回归                                          │
│  ├── 系统角色权限不可改 (isSystem 保护)                              │
│  └── 获取 /users/:id 端点缺失修复                                   │
│                                                                    │
└────────────────────────────────────────────────────────────────────┘

二、各 Phase 详细说明

Phase 0 — 系统测试 (System Tests)

执行周期: 每次代码变更后必跑

脚本 项数 通过率 说明
test-systematic.mjs 142 142/142 全角色(SA/TA/USER) × 全维度(身份/CRUD/RBAC/UI/用户故事)
test-full-coverage.mjs 52 52/52 未覆盖路径: 角色权限边界 × 模板极值 × 异常链 × 跨功能交互

测试范围:

1.  环境准备         4项
2.  身份认证        15项  (登录/错误密码/空凭据/篡改JWT/API Key)
3.  用户CRUD正常    11项  (创建/查询/编辑/升降级/删除/登录失效)
4.  用户CRUD异常    17项  (重复/空/短密码/emoji/不存在/越权)
5.  边界测试         7项  (并发同名/超长/空权限/幂等删除)
6.  权限矩阵RBAC    49项  (三层权限数/S应有/TA应有/USER无/API校验证/系统保护)
7.  租户隔离         1项
8.  缺陷回归         5项
9.  前端UI一致性    22项  (登录页/导航/设置Tab/弹窗/权限矩阵/三角色限制)
10. 用户故事完整    14项  (SA/TA/USER闭环/升降级即时/系统不可破坏)

Phase 1 — 认证与用户系统

1.1 身份认证 (Authentication)

# 测试点 输入 预期
A-01 正常密码登录 admin / admin123 200 + access_token
A-02 错误密码 admin / wrong 401
A-03 空密码 admin / "" 401
A-04 不存在用户 nobody / x 401
A-05 空JSON body {} 401
A-06 空body (empty) 400/401
A-07 无Authorization头 401
A-08 无效Bearer "Bearer invalid" 401
A-09 篡改JWT 伪造token 401
A-10 API Key获取 Bearer token 200 + apiKey
A-11 JWT payload校验 含 id, role, tenantId
A-12 USER登录 user1/pass123 200
A-13 TA登录 ta_admin/pass123 200

1.2 用户 CRUD (User Create/Read/Update/Delete)

正常路径:

# 操作 预期
U-01 SA创建用户(含displayName) 201 + user.id
U-02 TA创建用户(本租户) 201
U-03 用户加入租户 201
U-04 按ID查询用户 200 + 用户数据
U-05 用户列表含新用户 列表中可找到
U-06 编辑用户displayName 200
U-07 提升 USER→TENANT_ADMIN 200 + 权限从5→21
U-08 降级 TENANT_ADMIN→USER 200 + 权限从21→5
U-09 删除用户 200
U-10 删除后不可查询 404
U-11 删除后无法登录 401

异常路径:

# 操作 预期
U-12 重复用户名 409
U-13 空用户名 400
U-14 密码太短(5位) 400
U-15 缺password 400
U-16 密码6位(边界) 201
U-17 编辑不存在用户 404
U-18 编辑 admin 账号 400
U-19 删自己 400
U-20 删不存在用户 404
U-21 删 admin 账号 400
U-22 USER 删用户 403
U-23 TA 删用户 403
U-24 非法角色值 400
U-25 改不存成员 400

Phase 2 — 权限系统 (RBAC)

2.1 三层角色权限矩阵

权限 SUPER_ADMIN TENANT_ADMIN USER
user:view
user:create
user:edit
user:delete
user:role
tenant:view
tenant:create
tenant:delete
tenant:members
kb:view
kb:create
kb:edit
kb:delete
assess:view
assess:manage
assess:template
assess:bank
model:view
model:config
plugin:view
plugin:manage
settings:view
settings:system
权限总数 26 21 5

2.2 角色 CRUD

# 操作 预期
R-01 SA列出角色 200 + 3系统角色
R-02 TA列出角色 200
R-03 USER列出角色 403
R-04 创建自定义角色 201
R-05 重复角色名 400
R-06 编辑自定义角色名 200
R-07 编辑系统角色名 400
R-08 删除自定义角色 200
R-09 删除系统角色 400
R-10 删除已删角色 404
R-11 角色设权限 200
R-12 角色读权限 200
R-13 空权限数组 200
R-14 无效权限key 400
R-15 系统角色权限不可改 400 (isSystem保护)

2.3 前端权限门控

# 角色 可见Tab
F-01 SUPER_ADMIN 用户管理 / 权限管理 / 租户管理
F-02 TENANT_ADMIN 用户管理 (仅SA可见) / 权限管理 / 租户管理
F-03 USER 用户管理 / 权限管理 / 租户管理

Phase 3 — 考核评估系统 (Assessment)

3.1 烟雾测试 (Smoke Test) — test-assessment-smoke.mjs

# 检查项 说明
S-01 admin 登录 管理员身份验证
S-02 ta_admin 登录 租管身份验证
S-03 user1 登录 用户身份验证
S-04 模板列表可获取 API 可用
S-05 至少一个模板 系统有默认模板
S-06 技术人员模板存在 核心模板存在
S-07 非技术人员模板存在 备选模板存在
S-08 attemptLimit 未锁定 非1(admin不被锁)
S-09 题库可获取 题库 API 正常
S-10 题库有题目 题库非空
S-11 启动考核正常 start API 正常
S-12 出题成功 异步出题完成
S-13 包含 PROMPT 维度 维度覆盖正确
S-14 包含 LLM 维度 维度覆盖正确
S-15 答题提交正常 4题全部成功
S-16 评分状态正常 评分不报错
S-17 证书可获取 证书 API 正常
S-18 证书含等级 等级判定正常
S-19 证书含总分 分数计算正常
S-20 USER 创建模板被拒 权限隔离生效
S-21 TA 可查看模板 TA 权限正确
S-22 USER 可查看题库 读权限开放
S-23 USER 不能查看他人回顾 数据隔离生效
S-24 考核页渲染 前端页面加载
S-25 模板按钮可见 UI 元素渲染
S-26 开始评估按钮可见 UI 交互可用
S-27 点击开始无报错 前端无崩溃
S-28 题目已加载 题目显示到页面

3.2 端到端全流程 (E2E Full Flow) — test-e2e-assessment-full-flow.mjs

阶段 测试项 详细验证
模板校验 维度配置 技术人员模板有 PROMPT/LLM/IDE/DEV_PATTERN
attemptLimit 非1锁定状态
题数合理 ≥4题
题库校验 技术人员题库 有MC和SA题
PROMPT/LLM/IDE/DEV_PATTERN 每维度≥10/10/4/4题
评分标准 全部简答题有judgment
非技术人员题库 有题且无IDE/DEV_PATTERN
API考核 创建考生 POST /users
启动考核 POST /assessment/start
异步出题 等待 /state 返回 questions
维度分布 含PROMPT和LLM
答题 4题全部成功
证书 可获取+含等级+含分数+含维度得分
历史记录 考核列表有记录
非技术模板 启动 正常
出题 无IDE/DEV_PATTERN
维度 仅PROMPT/LLM
前端 UI 登录 页面登录成功
模板选择 按钮可见可点
答题(MC+SA) 最多4题含追问
结果 显示等级/分数
截图 e2e-assessment-result.png

3.3 P2 高级功能 (Advanced Features) — test-p2-advanced.mjs

# 功能 测试 结果
P-01 attemptLimit 写入 设2→读取=2
P-02 reviewMode 写入 设after_completion→读取
P-03 shuffleQuestions 写入 设true→读取
P-04 尝试次数限制 超限后拒绝
P-05 预约开始 未到时间拒绝
P-06 预约结束 已过时间拒绝
P-07 答题回顾API 返回含正确答案
P-08 回顾含解析 judgment字段可见
P-09 shuffleQuestions生效 flag=true时启用
P-10 模板配置恢复 恢复后正常
总计 20项 全部通过

3.4 多轮对话 (Multi-round) — test-multiround.mjs

# 场景 说明
M-01 选择题答题 检测选项按钮→点击→确认答案
M-02 简答题答题 textarea输入→发送按钮
M-03 AI追问 简答后textarea重现→输入追问回答
M-04 4题全流程 完整完成4题混合题型

3.5 出题算法验证

验证: floor + remainder 分配法 → 总和恒等于题数

技术人员模板(30/30/20/20):
  20题 → PROMPT:6 + LLM:6 + IDE:4 + DEV_PATTERN:4 = 20 ✅
  10题 → PROMPT:3 + LLM:3 + IDE:2 + DEV_PATTERN:2 = 10 ✅
   5题 → PROMPT:2 + LLM:1 + IDE:1 + DEV_PATTERN:1 = 5  ✅
   4题 → PROMPT:2 + LLM:2 + IDE:0 + DEV_PATTERN:0 = 4  ✅ (旧算法: 4题 = 1+1+1+1=4❌)

非技术人员模板(50/30/20):
  10题 → PROMPT:5 + LLM:3 + WORK_CAP:2 = 10 ✅

Phase 4 — 场景测试 (Scenario)

4.1 考试组织者场景 — exam-organizer.mjs

流程: 管理员登录 → 创建4个考生(初/中/高级+初级)
      → 4考生依次参加考核(UI操作,含MC+SA+追问)
      → 查看考核结果统计

4.2 并发考核场景 — test-concurrent-assessments.mjs

# 场景 结果
C-01 20人并发创建账号 全部成功
C-02 20人并发启动考核 全部成功, Session ID 唯一
C-03 异步出题完成率 20/20, 每题20题
C-04 各会话题数一致 均为20题
C-05 维度分布正确 IDE:4/LLM:6/PROMPT:6/DEV_PATTERN:4
C-06 并发提交答案 6人×4题全部成功
C-07 题目重叠率 ⚠️ 10.5%(题库281题不够400槽位)

Phase 5 — 缺陷回归 (Regression)

# 缺陷 发现者 修复状态
REG-01 shuffleArray 返回新数组但调用处用const未接收 代码审查 已修
REG-02 系统角色权限可被修改(setRolePermissions缺isSystem检查) 全量回归测试 已修
REG-03 GET /users/:id 端点不存在 系统性测试 已修
REG-04 DTO中perQuestionTimeLimit边界值校验缺失 边界测试 已修
REG-05 P2字段(attemptLimit等)在startSession中未正确映射 P2测试 已修

三、测试脚本索引

3.1 脚本一览

脚本 行数 测试类型 运行时间 依赖 说明
test-systematic.mjs 480+ API+UI ~60s 前后端 必跑 全角色全维度
test-full-coverage.mjs 350+ API ~5s 后端 未覆盖路径补全
test-e2e-assessment-full-flow.mjs 300+ API+UI ~90s 前后端 考核端到端全流程
test-assessment-smoke.mjs 280+ API+UI ~75s 前后端 快速烟雾测试
test-p2-advanced.mjs 200+ API ~30s 后端 P2高级功能专项
test-concurrent-assessments.mjs 230+ API ~100s 后端 20人并发考核
test-user-lifecycle.mjs 400+ API+UI ~30s 前后端 用户全生命周期+异常
test-permission-flow.mjs 200+ API+UI ~40s 前后端 三层角色权限验证
test-multiround.mjs 230+ UI ~60s 前后端 考核多轮对话
test-question-distribution.mjs 70+ UI ~30s 前后端 出题分布验证
exam-organizer.mjs 300+ API+UI ~180s 前后端 考试组织场景

3.2 推荐执行策略

快速检查 (~2min):
  node test-assessment-smoke.mjs           # 29项烟雾测试
  node test-full-coverage.mjs              # 52项全量回归

完整检查 (~6min):
  node test-systematic.mjs                 # 142项系统测试
  node test-e2e-assessment-full-flow.mjs   # 29项端到端
  node test-p2-advanced.mjs               # 20项P2专项

深度检查 (~10min):
  完整检查 + 
  node test-concurrent-assessments.mjs     # 20人并发
  node exam-organizer.mjs                  # 考试组织场景
  node test-multiround.mjs                 # 多轮对话

四、测试结果汇总

测试套件 通过 失败 通过率 最新运行
系统性测试 (142项) 142 0 100% 2026-06-09
全量回归 (52项) 52 0 100% 2026-06-09
烟雾测试 (29项) 29 0 100% 2026-06-16
端到端全流程 (29项) 29 0 100% 2026-06-16
P2专项 (20项) 20 0 100% 2026-06-09
并发测试 (20人) 2026-06-08
用户生命周期 (42项) 42 0 100% 2026-06-09
总计 ~314 0 100%

五、测试发现并修复的缺陷清单

# 缺陷 模块 严重度 修复PR
1 shuffleArray 返回值未接收 question-bank.service 🔴 c57c302
2 系统角色权限可被随意修改 permission.service 🔴 a7e7c85
3 GET /users/:id 缺失 user.controller 🟡 7e74165
4 P2模板字段未映射到 session assessment.service 🟡 d15e881
5 出题分配Math.round合计偏差 question-bank.service 🟡 1aee7e0
6 questionCount=0/50未做DAO校验 dto/create-template.dto 🟡 9fd503b
7 text-[10px] 字号系统不统一 UI (多个组件) 🟢 ffe3652
8 登录页blue与后台indigo不一致 LoginPage.tsx 🟢 ffe3652
9 操作列 opacity-0 完全隐藏 SettingsView.tsx 🟢 c166d29
10 编辑弹窗 max-w-md 过窄 SettingsView.tsx 🟢 c166d29
11 会议记录题 PROMPT→LLM 维度错位 question_bank_items 🟡 75769b1
12 151道简答题缺评分标准 question_bank_items 🟡 75769b1
13 非技术人员模板无题库 blank 题库关联 🟡 75769b1
14 templateData P2字段显式映射确认 assessment.service 🟡 d15e881