Files
aurak/docs/tests/assessment-test-plan.md
T
Developer 3d41f0dfcb test: 端到端全流程测试 + 烟雾测试 + 测试方案文档
新增:
1. test-e2e-assessment-full-flow.mjs — 完整端到端流程
   登录→模板校验→题库校验→API考核→非技术模板→UI端到端
   覆盖7个阶段29项检查,全部通过

2. test-assessment-smoke.mjs — 快速烟雾测试(29项)

3. docs/tests/assessment-test-plan.md — 完整测试方案文档
   5个Phase: 核心流程/评分证书/权限隔离/压力异常/回归测试

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

5.5 KiB

人才测评系统 — 自动化测试方案

测试策略

分层测试 + 渐进覆盖:先测核心流程 → 再测边界异常 → 最后全回归

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

实施计划

Step 1: 跑一轮快速烟雾测试 → 发现当前故障
Step 2: 修复 Phase 1 中的阻断性问题
Step 3: 编写自动化测试脚本(分阶段)
Step 4: 执行完整测试 → 修复剩余问题
Step 5: 纳入 CI/手动定期运行