kindergarten_java/docs/test-logs/admin/2026-03-16-course-package-test-plan.md

211 lines
5.7 KiB
Markdown
Raw Normal View History

# 课程包创建流程全面测试计划
## 测试概述
本次测试针对课程包创建流程进行全面 E2E 测试,确保从登录到课程包创建成功的整个流程正常工作。
## 测试文件
- `tests/e2e/admin/course-package-comprehensive.spec.ts` - 综合测试用例
## 测试场景
### 1. 完整流程测试
- **测试文件**: `完整流程:填写所有 7 个步骤创建课程包`
- **测试内容**:
- 步骤 1: 基本信息(课程名称、主题、年级、核心内容、绘本名称、领域标签)
- 步骤 2: 课程介绍(课程简介、课程亮点、课程目标)
- 步骤 3: 排课参考(总课时、课时时长、排课建议)
- 步骤 4: 导入课(跳过)
- 步骤 5: 集体课(创建并填写完整信息)
- 步骤 6: 领域课(跳过)
- 步骤 7: 环创建设(填写环境创设内容)
- **预期结果**: 课程包创建成功,列表中显示新课程包
### 2. 最小化测试
- **测试文件**: `最小化流程:只填写必填项创建课程包`
- **测试内容**:
- 步骤 1: 只填写 4 个必填项(课程名称、主题、年级、核心内容)
- 步骤 2-7: 全部跳过
- **预期结果**: 课程包创建成功,验证必填项逻辑正确
### 3. 验证逻辑测试
- **测试文件 1**: `必填项验证:未填必填项时无法进入下一步`
- 不填写任何内容,直接点击下一步
- 验证仍停留在步骤 1
- **测试文件 2**: `部分填写验证:只填部分必填项时无法进入下一步`
- 只填写课程名称,不填写主题和年级
- 验证无法进入下一步
### 4. 数据持久化测试
- **测试文件**: `数据验证:创建后查看详情数据完整`
- **测试内容**:
- 创建课程包
- 进入课程包详情页
- 验证保存的数据完整
- **预期结果**: 详情页显示的数据与填写的一致
## 测试数据
### 完整流程测试数据
```javascript
{
name: '完整测试课程包-{timestamp}',
theme: '社会认知',
grades: ['小班'],
bookName: '折耳兔奇奇',
coreContent: '通过折耳兔奇奇的故事,帮助孩子理解友谊和分享的重要性,培养社交能力。',
domainTags: ['倾听与表达'],
introSummary: '这是一门专为小班幼儿设计的课程...',
introHighlights: '1. 故事情节生动有趣...',
introGoals: '1. 理解故事内容...',
totalHours: '8',
hourDuration: '30',
scheduleAdvice: '建议每周 1-2 课时...',
collectiveName: '集体课——折耳兔奇奇绘本阅读',
collectiveDuration: 25,
collectiveObjectives: '1. 认知:完整观看绘本动画...',
collectivePreparation: '1. 绘本 PPT\n2. 相关图片...',
environmentConstruction: '1. 夸夸卡展示区...',
}
```
### 最小化测试数据
```javascript
{
name: '最小化测试课程包-{timestamp}',
theme: '社会认知',
grades: ['中班'],
coreContent: '最小化测试课程,仅包含必填项。',
domainTags: ['人际交往'],
}
```
## 运行测试
### 前提条件
1. 后端服务运行在 `http://localhost:8080`
2. 前端服务运行在 `http://localhost:5173`
3. 数据库包含测试主题数据
4. 超管账号可用 (admin/123456)
### 启动服务
```bash
# 启动所有服务
./start-all.sh
# 或分别启动
# 后端
cd reading-platform-java
mvn spring-boot:run
# 前端(新终端)
cd reading-platform-frontend
npm run dev
```
### 运行测试
```bash
cd reading-platform-frontend
# 无头模式(快速执行,不显示浏览器)
npm run test:e2e -- --project=chromium course-package-comprehensive.spec.ts
# 有头模式(显示浏览器操作过程)
npm run test:e2e:headed -- --project=chromium course-package-comprehensive.spec.ts
# UI 调试模式(可视化管理测试用例)
npm run test:e2e:ui
```
### 运行单个测试
```bash
# 运行完整流程测试
npm run test:e2e -- --grep "完整流程"
# 运行最小化测试
npm run test:e2e -- --grep "最小化"
# 运行验证逻辑测试
npm run test:e2e -- --grep "必填项验证"
# 运行数据持久化测试
npm run test:e2e -- --grep "数据验证"
```
## 测试通过标准
1. ✅ 超管登录成功
2. ✅ 能进入课程管理页面
3. ✅ 能进入课程创建页面
4. ✅ 7 个步骤能正常切换
5. ✅ 必填项验证生效
6. ✅ 提交后显示成功提示
7. ✅ 跳转到课程列表页
8. ✅ 新课程包在列表中可见
9. ✅ 查看课程包详情,数据完整
## 测试检查清单
### 测试前检查
- [ ] 后端服务已启动
- [ ] 前端服务已启动
- [ ] 数据库连接正常
- [ ] 测试主题数据存在
- [ ] 超管账号可用
### 测试后清理
- [ ] 停止前后端服务
- [ ] 清理测试数据(可选)
- [ ] 查看测试报告
- [ ] 记录测试结果
## 测试报告
测试完成后,查看 HTML 报告:
```bash
# 生成测试报告
npx playwright show-report
# 或打开报告文件
# reading-platform-frontend/playwright-report/index.html
```
## 故障排查
### 常见问题
1. **登录失败**
- 检查超管账号密码是否正确
- 检查后端服务是否运行
- 检查数据库用户表是否有 admin 用户
2. **页面加载超时**
- 检查前端服务是否运行
- 检查端口 5173 是否被占用
- 增加超时时间 `test.setTimeout()`
3. **元素找不到**
- 检查页面结构是否变化
- 检查选择器是否正确
- 使用 `page.waitForTimeout()` 增加等待时间
4. **创建失败**
- 检查后端日志
- 检查请求参数格式
- 检查数据库表结构
## 测试日志
测试执行过程中的关键日志会输出到控制台,包括:
- ✅ 每个步骤完成情况
- 🎉 测试通过确认
- ❌ 错误信息(如有)
## 更新记录
| 日期 | 更新内容 |
|------|----------|
| 2026-03-16 | 创建测试计划和测试用例 |