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