peixue-dev/peidu/docs/fixes/2026-01-23-学习记录功能完善/🧪测试指南.md

598 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🧪 学习记录功能完善 - 测试指南
## 📋 测试准备
### 1. 确认修改已完成
- [ ] 前端代码已修改
- [ ] 后端代码已修改
- [ ] 前端已重新编译
- [ ] 后端已重新编译
- [ ] 服务已重启
### 2. 准备测试数据
确保数据库中有以下测试数据:
```sql
-- 检查是否有成长记录
SELECT * FROM growth_record WHERE student_id = 1 LIMIT 5;
-- 检查是否有签到记录
SELECT * FROM check_in_record WHERE order_id IN (
SELECT order_id FROM growth_record WHERE student_id = 1
) LIMIT 5;
-- 检查是否有评价记录
SELECT * FROM review WHERE order_id IN (
SELECT order_id FROM growth_record WHERE student_id = 1
) LIMIT 5;
```
如果没有数据,执行:
```sql
-- 使用之前创建的测试数据脚本
-- peidu/sql/🚀插入成长记录测试数据-2026-01-23.sql
```
## 🧪 测试用例
### 测试1用户中心入口
**目的**:验证入口跳转是否正确
**步骤**
1. 打开微信开发者工具
2. 登录家长端账号
3. 进入"我的"页面
4. 找到"成长记录"菜单项
5. 点击"成长记录"
**预期结果**
- ✅ 菜单项显示为"成长记录"(不是"学习记录"
- ✅ 点击后跳转到成长记录列表页
- ✅ 页面路径为 `/user-package/pages/growth/list`
**实际结果**
```
□ 通过
□ 失败原因_______________
```
---
### 测试2统计数据显示
**目的**:验证统计卡片是否正确显示
**步骤**
1. 在成长记录列表页
2. 查看顶部统计卡片
**预期结果**
- ✅ 显示三个统计项:
- 累计学习(小时)
- 服务次数
- 平均评分
- ✅ 数据为数字格式
- ✅ 样式美观(绿色渐变背景)
**验证数据准确性**
打开浏览器控制台,执行:
```javascript
// 查看API返回的统计数据
// 应该在Network标签中看到
// GET /api/growth-record/parent/stats?studentId=1
// 返回:
{
"code": 200,
"data": {
"totalHours": "12.5",
"totalSessions": 8,
"avgScore": "4.8"
}
}
```
**实际结果**
```
累计学习_____ 小时
服务次数_____ 次
平均评分_____
□ 通过
□ 失败原因_______________
```
---
### 测试3记录列表显示
**目的**:验证记录列表是否正确显示
**步骤**
1. 在成长记录列表页
2. 查看记录列表
**预期结果**
- ✅ 显示成长记录列表
- ✅ 每条记录包含:
- 日期图标和日期
- 记录类型标签(每日反馈/周反馈/月反馈)
- 学生姓名
- 陪伴员姓名
- 服务时长1小时30分钟
- 内容预览
- 照片预览(如果有)
- "查看详情"按钮
**验证数据准确性**
打开浏览器控制台,执行:
```javascript
// 查看API返回的列表数据
// 应该在Network标签中看到
// GET /api/growth-record/parent/list?studentId=1&page=1&size=10
// 返回:
{
"code": 200,
"data": {
"records": [
{
"id": 1,
"recordDate": "2026-01-23",
"recordType": "daily",
"recordTypeName": "每日反馈",
"studentName": "小明",
"teacherName": "张老师",
"durationText": "1小时30分钟",
"content": "今天学习了...",
"imageList": "url1,url2,url3"
}
],
"total": 8
}
}
```
**实际结果**
```
记录数量_____ 条
第一条记录:
- 日期_____
- 类型_____
- 学生_____
- 陪伴员_____
- 时长_____
□ 通过
□ 失败原因_______________
```
---
### 测试4筛选功能
**目的**:验证筛选标签是否正常工作
**步骤**
1. 在成长记录列表页
2. 点击"全部"标签
3. 点击"每日反馈"标签
4. 点击"周反馈"标签
5. 点击"月反馈"标签
**预期结果**
- ✅ 点击不同标签,列表数据会相应变化
- ✅ 当前选中的标签有高亮样式
- ✅ 数据加载正常
**实际结果**
```
全部_____ 条
每日反馈_____ 条
周反馈_____ 条
月反馈_____ 条
□ 通过
□ 失败原因_______________
```
---
### 测试5详情页显示
**目的**:验证详情页是否正确显示
**步骤**
1. 在成长记录列表页
2. 点击任意一条记录
3. 查看详情页内容
**预期结果**
- ✅ 页面正常打开
- ✅ 显示完整信息:
- 服务日期
- 学生姓名
- 陪伴员姓名
- 服务时长
- 学习内容
- 照片记录(可点击预览)
- 视频记录(可播放)
- 学生表现
- 陪伴员建议
**实际结果**
```
□ 页面正常打开
□ 信息显示完整
□ 照片可预览
□ 视频可播放
□ 通过
□ 失败原因_______________
```
---
### 测试6服务时长计算
**目的**:验证服务时长是否计算准确
**步骤**
1. 在数据库中查询签到记录
2. 手动计算服务时长
3. 对比页面显示的时长
**SQL查询**
```sql
-- 查询某个订单的签到记录
SELECT
order_id,
check_type,
check_time
FROM check_in_record
WHERE order_id = 267 -- 替换为实际的order_id
ORDER BY check_time;
-- 应该看到:
-- order_id | check_type | check_time
-- 267 | checkin | 2026-01-23 14:00:00
-- 267 | checkout | 2026-01-23 15:30:00
--
-- 计算15:30 - 14:00 = 1小时30分钟
```
**预期结果**
- ✅ 页面显示的时长与手动计算一致
- ✅ 格式正确1小时30分钟 或 90分钟
**实际结果**
```
数据库时长_____
页面显示_____
□ 通过
□ 失败原因_______________
```
---
### 测试7评分显示
**目的**:验证评分是否正确显示
**步骤**
1. 在数据库中查询评价记录
2. 对比统计卡片中的平均评分
**SQL查询**
```sql
-- 查询学生的所有评价
SELECT
r.order_id,
r.rating,
gr.student_id
FROM review r
JOIN growth_record gr ON r.order_id = gr.order_id
WHERE gr.student_id = 1;
-- 手动计算平均分
-- 例如:(5 + 4 + 5 + 5 + 4 + 5 + 5 + 4) / 8 = 4.625 ≈ 4.6
```
**预期结果**
- ✅ 平均评分计算正确
- ✅ 保留一位小数
**实际结果**
```
数据库评分_____
计算平均分_____
页面显示_____
□ 通过
□ 失败原因_______________
```
---
### 测试8空状态显示
**目的**:验证没有数据时的显示
**步骤**
1. 使用一个没有成长记录的学生账号登录
2. 进入成长记录页面
**预期结果**
- ✅ 显示空状态提示
- ✅ 提示文字:
- "暂无成长记录"
- "陪伴员服务后会提交成长记录"
- ✅ 有空状态图标(📚)
**实际结果**
```
□ 显示空状态
□ 提示文字正确
□ 图标显示正常
□ 通过
□ 失败原因_______________
```
---
### 测试9下拉刷新
**目的**:验证下拉刷新功能
**步骤**
1. 在成长记录列表页
2. 下拉页面
3. 释放触发刷新
**预期结果**
- ✅ 显示刷新动画
- ✅ 数据重新加载
- ✅ 刷新完成后动画消失
**实际结果**
```
□ 通过
□ 失败原因_______________
```
---
### 测试10上拉加载更多
**目的**:验证分页加载功能
**步骤**
1. 在成长记录列表页
2. 滚动到底部
3. 触发加载更多
**预期结果**
- ✅ 显示"加载中..."提示
- ✅ 加载下一页数据
- ✅ 新数据追加到列表末尾
- ✅ 没有更多数据时不再加载
**实际结果**
```
□ 通过
□ 失败原因_______________
```
---
### 测试11照片预览
**目的**:验证照片预览功能
**步骤**
1. 进入有照片的成长记录详情页
2. 点击任意照片
**预期结果**
- ✅ 打开照片预览
- ✅ 可以左右滑动查看其他照片
- ✅ 可以缩放照片
- ✅ 可以关闭预览
**实际结果**
```
□ 通过
□ 失败原因_______________
```
---
### 测试12视频播放
**目的**:验证视频播放功能
**步骤**
1. 进入有视频的成长记录详情页
2. 点击播放按钮
**预期结果**
- ✅ 视频正常播放
- ✅ 可以暂停/继续
- ✅ 可以调整进度
- ✅ 可以全屏播放
**实际结果**
```
□ 通过
□ 失败原因_______________
```
---
## 🔍 后端接口测试
### 接口1获取统计数据
**接口**`GET /api/growth-record/parent/stats`
**参数**
```
studentId: 1
```
**预期响应**
```json
{
"code": 200,
"message": "操作成功",
"data": {
"totalHours": "12.5",
"totalSessions": 8,
"avgScore": "4.8"
}
}
```
**测试命令**
```bash
curl -X GET "http://localhost:8080/api/growth-record/parent/stats?studentId=1" \
-H "Authorization: Bearer YOUR_TOKEN"
```
**实际响应**
```json
// 粘贴实际响应
```
**结果**
```
□ 通过
□ 失败原因_______________
```
---
### 接口2获取记录列表
**接口**`GET /api/growth-record/parent/list`
**参数**
```
studentId: 1
page: 1
size: 10
recordType: all (可选)
```
**预期响应**
```json
{
"code": 200,
"message": "操作成功",
"data": {
"records": [
{
"id": 1,
"recordDate": "2026-01-23",
"recordType": "daily",
"recordTypeName": "每日反馈",
"studentName": "小明",
"teacherName": "张老师",
"durationText": "1小时30分钟",
"content": "今天学习了数学和英语...",
"imageList": "url1,url2,url3",
"videoList": null
}
],
"total": 8,
"current": 1,
"size": 10
}
}
```
**测试命令**
```bash
curl -X GET "http://localhost:8080/api/growth-record/parent/list?studentId=1&page=1&size=10" \
-H "Authorization: Bearer YOUR_TOKEN"
```
**实际响应**
```json
// 粘贴实际响应
```
**结果**
```
□ 通过
□ 失败原因_______________
```
---
## 📊 测试结果汇总
### 前端测试
- [ ] 测试1用户中心入口
- [ ] 测试2统计数据显示
- [ ] 测试3记录列表显示
- [ ] 测试4筛选功能
- [ ] 测试5详情页显示
- [ ] 测试6服务时长计算
- [ ] 测试7评分显示
- [ ] 测试8空状态显示
- [ ] 测试9下拉刷新
- [ ] 测试10上拉加载更多
- [ ] 测试11照片预览
- [ ] 测试12视频播放
### 后端测试
- [ ] 接口1获取统计数据
- [ ] 接口2获取记录列表
### 总体评估
```
通过_____ / 14
失败_____ / 14
通过率_____ %
□ 所有测试通过,可以上线
□ 部分测试失败,需要修复
```
## 🐛 问题记录
如果测试失败,请记录问题:
### 问题1
```
测试用例_____
问题描述_____
错误信息_____
重现步骤_____
```
### 问题2
```
测试用例_____
问题描述_____
错误信息_____
重现步骤_____
```
## ✅ 测试完成确认
- [ ] 所有测试用例已执行
- [ ] 测试结果已记录
- [ ] 问题已记录(如有)
- [ ] 测试报告已提交
**测试人员**_______________
**测试日期**_______________
**测试环境**_______________