AuraK 完整测试框架
版本: v2.0 · 更新: 2026-06-16
覆盖: 用户管理 / 权限系统 / 考核评估 / 并发场景 / UI验证
一、测试架构总览
二、各 Phase 详细说明
Phase 0 — 系统测试 (System Tests)
执行周期: 每次代码变更后必跑
| 脚本 |
项数 |
通过率 |
说明 |
test-systematic.mjs |
142 |
✅ 142/142 |
全角色(SA/TA/USER) × 全维度(身份/CRUD/RBAC/UI/用户故事) |
test-full-coverage.mjs |
52 |
✅ 52/52 |
未覆盖路径: 角色权限边界 × 模板极值 × 异常链 × 跨功能交互 |
测试范围:
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 出题算法验证
Phase 4 — 场景测试 (Scenario)
4.1 考试组织者场景 — exam-organizer.mjs
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 推荐执行策略
四、测试结果汇总
| 测试套件 |
通过 |
失败 |
通过率 |
最新运行 |
| 系统性测试 (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 |