人才测评系统 — 自动化测试方案
测试策略
Phase 1: 核心考核流程(优先级 P0)
1.1 正常考核全流程
| # |
测试场景 |
步骤 |
预期结果 |
| 1.1.1 |
技术人员模板完整答题 |
登录 → 考核页 → 选模板 → 开始 → 答4题(MC+SA) → 提交 → 查看结果 |
全部题目可答,最终显示等级和分数 |
| 1.1.2 |
非技术人员模板完整答题 |
同上,选非技术模板 |
可正常完成 |
| 1.1.3 |
选择题答题 |
检测到选择题选项 → 选一个 → 确认答案 |
选项正确显示,确认成功 |
| 1.1.4 |
简答题答题 |
检测到 textarea → 输入文字 → 发送 |
文字发送成功 |
| 1.1.5 |
AI 追问流程 |
简答提交后检测 textarea 是否重现 → 输入追问回答 |
追问正常触发,回答后继续 |
| 1.1.6 |
结果页验证 |
完成考核后检测页面 |
显示分数、等级、合格/不合格 |
1.2 考核模板配置
| # |
测试场景 |
步骤 |
预期结果 |
| 1.2.1 |
两个模板均可见 |
登录后进入考核页 |
技术人员模板 + 非技术人员模板都显示 |
| 1.2.2 |
题数指示器正确 |
出题后检查页面的题数指示 |
显示 "问题 1/4" 或 "问题 1/10" |
| 1.2.3 |
维度分布正确 |
启动考核后检查各维度题目数 |
技术人员: PROMPT/LLM/IDE/DEV_PATTERN各至少1题; 非技术: 无IDE/DEV_PATTERN |
1.3 P2 新功能验证
| # |
测试场景 |
步骤 |
预期结果 |
| 1.3.1 |
标记回头检查 |
答题中点击🏷️按钮 |
导航点变黄色 |
| 1.3.2 |
提交确认弹窗 |
答部分题后点提交 |
弹出确认弹窗 |
| 1.3.3 |
进度导航点 |
观察题号指示 |
当前题蓝色,其他灰色 |
Phase 2: 评分与证书(优先级 P1)
2.1 评分正确性
| # |
测试场景 |
步骤 |
预期结果 |
| 2.1.1 |
考核完成有分数 |
走完完整考核 |
finalScore ≠ undefined, 为 0-10 之间的数字 |
| 2.1.2 |
等级判定 |
检查结果页等级字段 |
Proficient / Novice / Advanced / Expert |
| 2.1.3 |
合格/不合格判定 |
根据 passingScore 判断 |
分数≥及格线 → passed=true |
2.2 证书
| # |
测试场景 |
步骤 |
预期结果 |
| 2.2.1 |
查看证书 |
完成页点击"查看证书" |
弹窗显示等级、总分、维度得分 |
| 2.2.2 |
证书 API |
GET /api/assessment/:id/certificate |
返回 certificate 对象 |
| 2.2.3 |
历史记录 |
完成考核后查看历史侧栏 |
新纪录出现在列表 |
2.3 导出
| # |
测试场景 |
步骤 |
预期结果 |
| 2.3.1 |
PDF 导出 |
完成页下载 PDF |
触发文件下载或新窗口 |
| 2.3.2 |
Excel 导出 |
完成页导出 |
触发文件下载 |
Phase 3: 权限隔离(优先级 P1)
3.1 角色级权限
| # |
测试场景 |
步骤 |
预期结果 |
| 3.1.1 |
USER 查看考核页 |
user1 登录 → 进入考核 |
能看到模板,能参加考核 |
| 3.1.2 |
USER 不能管理模板 |
user1 → 设置页 |
没有"测评模板" Tab |
| 3.1.3 |
TA 管理模板 |
ta_admin → 设置页 |
有"测评模板" Tab |
| 3.1.4 |
TA 创建模板 |
ta_admin API 调用 |
POST /api/assessment/templates 成功 |
3.2 会话隔离
| # |
测试场景 |
步骤 |
预期结果 |
| 3.2.1 |
不可查看他人会话 |
USER 查他人的 session/state |
404 或 Forbidden |
| 3.2.2 |
不可强制结束他人会话 |
USER 调 force-end 他人 session |
403 或 404 |
Phase 4: 压力与异常(优先级 P2)
4.1 并发
| # |
测试场景 |
步骤 |
预期结果 |
| 4.1.1 |
10人同时开启考核 |
并发 POST /assessment/start |
Session ID 全部唯一 |
| 4.1.2 |
10人同时提交答案 |
并发 POST /assessment/:id/answer |
全部成功,无数据竞争 |
4.2 异常输入
| # |
测试场景 |
步骤 |
预期结果 |
| 4.2.1 |
空模板 ID 启动 |
POST /assessment/start 不带 templateId |
400 Bad Request |
| 4.2.2 |
不存在的模板 ID |
POST /assessment/start 用假 templateId |
400 或 404 |
| 4.2.3 |
不存在的 Session 答题 |
POST /assessment/fake/answer |
404 |
| 4.2.4 |
用已完成的 Session 答题 |
完成后再次 POST answer |
400 或适当错误 |
4.3 状态冲突
| # |
测试场景 |
步骤 |
预期结果 |
| 4.3.1 |
重复开始考核(同一用户同一模板) |
连续2次 start |
第二次可能失败或开新会话 |
| 4.3.2 |
强制结束不存在的会话 |
POST /assessment/fake/force-end |
404 |
Phase 5: 完整回归测试(优先级 P2)
合并已有的 3 个测试脚本,确保不重复:
| 脚本 |
说明 |
是否纳入 |
| test-systematic.mjs |
142 项系统测试 |
✅ 保留,不重复 |
| test-p2-advanced.mjs |
P2 高级功能 20 项 |
✅ 合并入本方案的 Phase 1.3 |
| test-full-coverage.mjs |
全量回归 52 项 |
✅ 保留,不重复 |
| test-concurrent-assessments.mjs |
并发测试 |
✅ 合并入 Phase 4.1 |
实施计划