引入openspec管理
This commit is contained in:
166
测试报告.md
166
测试报告.md
@@ -1,140 +1,50 @@
|
||||
# 问卷调查系统 - 功能测试报告
|
||||
# 问卷/考试系统 - UI 功能测试报告
|
||||
|
||||
## 测试范围
|
||||
- 用户端:`/`、`/subjects`、`/tasks`、`/quiz`、`/result/:id`
|
||||
- 管理端:`/admin/login`、`/admin/dashboard`、`/admin/questions`、`/admin/categories`、`/admin/subjects`、`/admin/tasks`、`/admin/users`(含用户组管理)、`/admin/statistics`、`/admin/backup`、`/admin/config`
|
||||
- 说明:用户组功能(用户组管理、成员关系、考试任务按组分派与混合选择)已实现但目前标记为“未测试”。
|
||||
|
||||
## 测试环境
|
||||
- 操作系统:Windows
|
||||
- 浏览器:Chrome/Edge/Firefox
|
||||
- 测试时间:2024年12月17日
|
||||
- 前端开发地址:`http://localhost:5173/`
|
||||
- 后端开发地址:`http://localhost:3001/api`
|
||||
- 测试时间:2025-12-22
|
||||
|
||||
## 功能测试结果
|
||||
## 测试方法
|
||||
- 静态代码审查:对页面路由、接口调用、关键交互与边界条件进行逐页核对
|
||||
- 冒烟检查:启动开发服务后,验证前后端可启动、接口可访问(以实际执行记录为准)
|
||||
|
||||
### ✅ 用户端功能测试
|
||||
## 结果概览
|
||||
- 管理端:页面路由与菜单整体完整,但存在少量可达性与安全性问题
|
||||
- 用户端:存在多处关键交互链路断裂风险(会导致“无法加载科目/任务/无法开始考试/考试页空白”)
|
||||
- 用户组:实现已落地但缺少覆盖性验证与审计日志能力,需单独做回归测试
|
||||
|
||||
#### 1. 用户注册与验证
|
||||
- [x] 姓名验证(2-20字符,中英文)
|
||||
- [x] 手机号验证(11位,1开头,第二位3-9)
|
||||
- [x] 错误提示显示
|
||||
- [x] 重复手机号处理
|
||||
## 关键缺陷(建议优先级从高到低)
|
||||
|
||||
#### 2. 答题功能
|
||||
- [x] 随机抽题算法
|
||||
- [x] 单选题展示与答题
|
||||
- [x] 多选题展示与答题
|
||||
- [x] 判断题展示与答题
|
||||
- [x] 文字描述题展示与答题
|
||||
- [x] 答题进度显示
|
||||
- [x] 答案提交与评分
|
||||
- [x] 答题结果展示
|
||||
### P0:用户端关键流程可能不可用
|
||||
- 用户信息状态来源不一致:`HomePage` 使用 `UserContext` 写入 `localStorage(survey_user)`,但 `SubjectSelectionPage` 与 `UserTaskPage` 使用 `zustand` 的 `useUserStore` 且未从 `localStorage` 恢复,导致 `user?.id` 可能为空,后续生成试卷/拉取任务会失败(见 `src/pages/HomePage.tsx:18`、`src/stores/userStore.ts:16`、`src/pages/SubjectSelectionPage.tsx:38`、`src/pages/UserTaskPage.tsx:28`)。
|
||||
- API 响应对象使用方式不一致:`src/utils/request.ts` 的响应拦截器会直接返回 `{ success, data }`,但 `SubjectSelectionPage`、`UserTaskPage` 仍按 `axios` 原始响应访问 `response.data.success`,会导致列表不渲染(见 `src/utils/request.ts:14`、`src/pages/SubjectSelectionPage.tsx:55`、`src/pages/UserTaskPage.tsx:39`)。
|
||||
- 考试页初始化逻辑可能清空题目:`QuizPage` 在设置题目后调用 `clearQuiz()`,而 `clearQuiz()` 会清空 `questions`,可能导致考试页无题可答(见 `src/pages/QuizPage.tsx:51`、`src/contexts/QuizContext.tsx:38`)。
|
||||
|
||||
#### 3. 界面与体验
|
||||
- [x] 响应式设计(移动端适配)
|
||||
- [x] 加载状态显示
|
||||
- [x] 错误处理与提示
|
||||
- [x] 页面导航流畅
|
||||
### P1:管理端配置入口可达性问题
|
||||
- 存在 `/admin/config` 路由,但侧边栏菜单未提供入口,用户只能手工输入 URL 访问(见 `src/App.tsx:58`、`src/layouts/AdminLayout.tsx:29`)。
|
||||
|
||||
### ✅ 管理端功能测试
|
||||
### P1:鉴权/敏感信息呈现风险(影响上线)
|
||||
- `adminAuth` 为简化放行逻辑,接口层面的“权限控制”在生产环境不成立(见 `api/middlewares/index.ts` 中 `adminAuth` 实现)。
|
||||
- 用户密码存在明文存储/展示路径(例如用户管理页面有显示/隐藏密码的 UI),属于上线前必须整改的安全项(见 `src/pages/admin/UserManagePage.tsx:36`)。
|
||||
|
||||
#### 1. 管理员登录
|
||||
- [x] 用户名密码验证
|
||||
- [x] 登录状态保持
|
||||
- [x] 权限控制
|
||||
### P2:一致性与可维护性问题(影响后续扩展)
|
||||
- 同一功能域存在两套请求封装(`src/services/api.ts` 与 `src/utils/request.ts`)且返回值约定不同,容易造成新页面复用错误(已在用户端出现)。
|
||||
- 测试脚本与端口配置不一致:`test/*.js` 默认指向 `http://localhost:3000/api`,与当前后端默认端口 `3001` 不一致,直接运行会误判失败(见 `test/test_openspec_features.js:3`)。
|
||||
|
||||
#### 2. 题库管理
|
||||
- [x] Excel文件导入
|
||||
- [x] 题目增删改查
|
||||
- [x] 题型筛选
|
||||
- [x] 数据验证
|
||||
## 建议完善(按收益排序)
|
||||
- 统一用户态管理:用户端统一使用 `UserContext` 或统一使用 `zustand`,并保证从 `localStorage` 恢复与退出清理一致。
|
||||
- 统一请求封装与返回类型:优先减少到一个请求层(或保证两者对外返回形态一致),避免页面端误用。
|
||||
- 修复考试页初始化顺序:确保“清理旧状态”发生在“写入新题目”之前,或仅清理 `answers` 不清理 `questions`。
|
||||
- 管理端补齐菜单入口:为 `/admin/config` 提供侧边栏入口,避免功能“存在但不可见”。
|
||||
- 用户组做专项回归:覆盖“全体用户”系统组约束、成员增删、任务按组分派、混合选择去重、报表导出。
|
||||
|
||||
#### 3. 抽题配置
|
||||
- [x] 题型比例设置
|
||||
- [x] 总分配置
|
||||
- [x] 比例总和验证
|
||||
- [x] 实时预览
|
||||
|
||||
#### 4. 数据统计
|
||||
- [x] 用户统计
|
||||
- [x] 答题记录统计
|
||||
- [x] 题型正确率分析
|
||||
- [x] 数据可视化图表
|
||||
- [x] 数据导出功能
|
||||
|
||||
#### 5. 数据备份与恢复
|
||||
- [x] 数据备份(Excel格式)
|
||||
- [x] 数据恢复
|
||||
- [x] 备份文件下载
|
||||
|
||||
### ✅ 技术功能测试
|
||||
|
||||
#### 1. 数据库
|
||||
- [x] SQLite数据库连接
|
||||
- [x] 数据表创建与初始化
|
||||
- [x] 外键约束
|
||||
- [x] 索引优化
|
||||
|
||||
#### 2. API接口
|
||||
- [x] RESTful API设计
|
||||
- [x] 请求参数验证
|
||||
- [x] 错误处理
|
||||
- [x] 响应格式化
|
||||
|
||||
#### 3. 文件处理
|
||||
- [x] Excel文件读取
|
||||
- [x] 文件上传下载
|
||||
- [x] 文件格式验证
|
||||
- [x] 大文件处理
|
||||
|
||||
## 性能测试结果
|
||||
|
||||
### 响应时间
|
||||
- 页面加载:< 1秒
|
||||
- API响应:< 500ms
|
||||
- 文件上传:< 3秒(10MB文件)
|
||||
|
||||
### 并发处理
|
||||
- 同时在线用户:> 100人
|
||||
- 并发请求处理:正常
|
||||
|
||||
## 兼容性测试
|
||||
|
||||
### 浏览器兼容性
|
||||
- [x] Chrome 120+
|
||||
- [x] Edge 120+
|
||||
- [x] Firefox 120+
|
||||
- [x] Safari 15+
|
||||
|
||||
### 设备兼容性
|
||||
- [x] 桌面端(1920x1080)
|
||||
- [x] 平板端(768x1024)
|
||||
- [x] 手机端(375x667)
|
||||
|
||||
## 安全测试结果
|
||||
|
||||
### 输入验证
|
||||
- [x] SQL注入防护
|
||||
- [x] XSS攻击防护
|
||||
- [x] 文件上传安全检查
|
||||
- [x] 参数类型验证
|
||||
|
||||
### 权限控制
|
||||
- [x] 管理员权限验证
|
||||
- [x] 用户数据隔离
|
||||
- [x] 接口访问控制
|
||||
|
||||
## 测试总结
|
||||
|
||||
### 通过的功能
|
||||
所有核心功能均已通过测试,系统运行稳定,用户体验良好。
|
||||
|
||||
### 发现的问题
|
||||
1. 部分图表在移动端显示需要优化
|
||||
2. 大文件上传时的进度提示可以改进
|
||||
3. 数据恢复时的冲突处理需要完善
|
||||
|
||||
### 建议改进
|
||||
1. 添加更多数据可视化图表
|
||||
2. 支持批量操作功能
|
||||
3. 增加系统日志记录
|
||||
4. 优化移动端交互体验
|
||||
|
||||
## 结论
|
||||
|
||||
问卷调查系统功能完善,性能良好,符合设计要求,可以投入生产使用。建议在生产环境中进行小规模试运行,收集用户反馈后进行进一步优化。
|
||||
## 建议回归用例清单(手工)
|
||||
- 用户端:新用户登录→进入科目页→选择科目→开始考试→答题提交→结果页展示→返回首页→查看我的任务
|
||||
- 管理端:登录→题库(导入/新增/编辑/删除/导出)→类别管理→科目配置→任务创建(选用户+选用户组混合)→查看任务报表→用户管理(分组)→备份导出/恢复
|
||||
|
||||
Reference in New Issue
Block a user