- 修复冲突检测API测试参数错误(使用正确的classId/scheduledDate/scheduledTime) - 新增全面API测试脚本 (test_all_apis.sh) - 新增Python Playwright浏览器自动化测试 (test_schedule_page.py) - 新增前端E2E测试用例 (schedule-comprehensive.spec.ts, schedule-real.spec.ts) - 更新测试报告,所有API测试通过 测试覆盖: - 登录认证 ✅ - 课程套餐列表(两层结构)✅ - 排课列表/课表/日历视图 ✅ - 班级/教师列表 ✅ - 冲突检测API ✅ (已修复) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
185 lines
4.3 KiB
Markdown
185 lines
4.3 KiB
Markdown
# 学校端排课功能完整测试报告
|
||
|
||
**测试日期**: 2026-03-17
|
||
**测试人员**: Claude Code
|
||
**测试范围**: 前端UI、后端API、端到端测试
|
||
|
||
---
|
||
|
||
## 一、测试环境
|
||
|
||
| 组件 | 状态 | 地址/端口 |
|
||
|------|------|-----------|
|
||
| 后端服务 | ✅ 运行中 | http://localhost:8080 |
|
||
| 前端服务 | ✅ 运行中 | http://localhost:5174 |
|
||
| 测试账号 | ✅ 有效 | school1 / 123456 |
|
||
|
||
---
|
||
|
||
## 二、前端UI测试结果
|
||
|
||
### 2.1 登录流程 ✅
|
||
|
||
| 测试项 | 结果 | 说明 |
|
||
|--------|------|------|
|
||
| 角色选择 | ✅ 通过 | 成功点击"学校"角色按钮 |
|
||
| 表单填写 | ✅ 通过 | 账号密码自动填充 |
|
||
| 登录跳转 | ✅ 通过 | 成功跳转到 /school/dashboard |
|
||
|
||
### 2.2 页面导航 ✅
|
||
|
||
| 测试项 | 结果 | 说明 |
|
||
|--------|------|------|
|
||
| 访问排课页面 | ✅ 通过 | /school/schedule 正常加载 |
|
||
| 页面标题 | ✅ 通过 | 显示"课程排期" |
|
||
| 新建排课按钮 | ✅ 通过 | 按钮存在并可点击 |
|
||
|
||
### 2.3 Tab导航切换 ✅
|
||
|
||
| Tab名称 | 结果 | 说明 |
|
||
|---------|------|------|
|
||
| 列表视图 | ✅ 通过 | 表格正常显示,有数据 |
|
||
| 课表视图 | ✅ 通过 | 时间轴和星期列正确显示 |
|
||
| 日历视图 | ✅ 通过 | 月份和日期网格正常 |
|
||
|
||
### 2.4 新建排课弹窗 ✅
|
||
|
||
| 测试项 | 结果 | 说明 |
|
||
|--------|------|------|
|
||
| 弹窗打开 | ✅ 通过 | 点击按钮后弹窗正常打开 |
|
||
| 两层结构 | ✅ 通过 | 课程套餐→课程包结构正确 |
|
||
|
||
**两层结构验证**:
|
||
```
|
||
课程套餐: 完整阅读能力培养套餐
|
||
└─ 课程包: 完整阅读能力培养套餐 (10门课程)
|
||
```
|
||
|
||
---
|
||
|
||
## 三、后端API测试结果
|
||
|
||
### 3.1 认证API ✅
|
||
|
||
| API | 状态码 | 说明 |
|
||
|-----|--------|------|
|
||
| POST /api/v1/auth/login | 200 | Token正确返回 |
|
||
|
||
### 3.2 课程套餐API ✅
|
||
|
||
| API | 状态 | 数据量 |
|
||
|-----|------|--------|
|
||
| GET /api/v1/school/packages | 200 | 1个套餐 |
|
||
|
||
**两层结构响应**:
|
||
```json
|
||
{
|
||
"id": "5",
|
||
"name": "完整阅读能力培养套餐",
|
||
"packageCount": 1,
|
||
"packages": [{
|
||
"name": "完整阅读能力培养套餐",
|
||
"courseCount": 10
|
||
}]
|
||
}
|
||
```
|
||
|
||
### 3.3 排课管理API ✅
|
||
|
||
| API | 状态码 | 数据量 |
|
||
|-----|--------|--------|
|
||
| GET /api/v1/school/schedules | 200 | 9条记录 |
|
||
| GET /api/v1/school/schedules/timetable | 200 | 5条记录 |
|
||
| GET /api/v1/school/schedules/calendar | 200 | 日历数据 |
|
||
|
||
### 3.4 基础数据API ✅
|
||
|
||
| API | 状态码 | 数据量 |
|
||
|-----|--------|--------|
|
||
| GET /api/v1/school/classes | 200 | 5个班级 |
|
||
| GET /api/v1/school/teachers | 200 | 10位教师 |
|
||
|
||
### 3.5 冲突检测API ✅ (已修复)
|
||
|
||
| API | 方法 | 状态码 | 说明 |
|
||
|-----|------|--------|------|
|
||
| /api/v1/school/schedules/check-conflict | POST | 200 | 冲突检测正常工作 |
|
||
|
||
**请求参数**:
|
||
- `classId` (必填): 班级ID
|
||
- `teacherId` (可选): 教师ID
|
||
- `scheduledDate` (必填): 排课日期 (格式: YYYY-MM-DD)
|
||
- `scheduledTime` (必填): 时间段 (格式: HH:mm-HH:mm)
|
||
|
||
**响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"data": {
|
||
"hasConflict": false,
|
||
"conflicts": [],
|
||
"message": "无时间冲突"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 四、问题汇总
|
||
|
||
### 4.1 已修复问题 ✅
|
||
|
||
| 问题描述 | 原因 | 解决方案 |
|
||
|----------|------|----------|
|
||
| 冲突检测API返回500错误 | 测试参数不正确 | 修正API请求参数 |
|
||
|
||
---
|
||
|
||
## 五、测试结论
|
||
|
||
### 功能完整性 ✅
|
||
|
||
- ✅ 排课页面访问正常
|
||
- ✅ Tab导航切换正常
|
||
- ✅ 三种视图都正常显示
|
||
- ✅ 新建排课弹窗正常
|
||
- ✅ 两层结构正确显示
|
||
|
||
### 后端稳定性 ✅
|
||
|
||
- ✅ 所有主要API正常工作
|
||
- ✅ 两层结构数据正确返回
|
||
- ✅ 冲突检测API正常工作
|
||
|
||
**总体评价**: 排课功能完整,前端UI与后端API联调正常,所有API测试通过。
|
||
|
||
---
|
||
|
||
## 六、测试截图
|
||
|
||
| 截图 | 描述 |
|
||
|------|------|
|
||
| schedule-page-test.png | 排课页面主视图 |
|
||
| schedule-列表-test.png | 列表视图 |
|
||
| schedule-课表-test.png | 课表视图 |
|
||
| schedule-日历-test.png | 日历视图 |
|
||
| schedule-create-modal-test.png | 新建排课弹窗 |
|
||
| schedule-dropdown-test.png | 课程套餐下拉框 |
|
||
|
||
---
|
||
|
||
## 七、测试命令
|
||
|
||
```bash
|
||
# 后端API测试
|
||
./test_all_apis.sh
|
||
|
||
# 前端浏览器测试
|
||
python3 test_schedule_page.py
|
||
```
|
||
|
||
---
|
||
|
||
**报告生成时间**: 2026-03-17
|
||
**测试状态**: ✅ 全部通过
|