5.4 KiB
5.4 KiB
评分标准JSON迁移验证测试计划
🎯 测试目标
验证评分标准从 instructions 字段的字符串格式迁移到 scoring_criteria 字段的JSON格式后,所有功能正常工作。
📋 测试清单
Phase 1: 前端功能验证
1.1 教师端 - 项目创建页面 (project-create.uvue)
-
新建项目保存
- 填写项目基本信息
- 添加评分标准(多个等级)
- 验证保存后数据库中
scoring_criteria字段为JSON格式 - 验证包含
criteria,scoring_method,weight_distribution字段
-
草稿保存功能
- 保存为草稿(
is_active: false) - 验证数据正确保存
- 验证JSON结构完整
- 保存为草稿(
1.2 教师端 - 项目编辑页面 (project-edit.uvue)
- 编辑现有项目
- 加载项目数据
- 验证新JSON格式正确解析
- 验证旧格式兼容性(如果有legacy数据)
- 修改评分标准并保存
- 验证更新后JSON结构正确
1.3 教师端 - 项目详情页面 (project-detail.uvue)
- 评分标准显示
- 查看项目详情
- 验证评分标准正确显示
- 验证分数范围、描述信息完整
- 测试新旧数据格式兼容性
1.4 教师端 - 创建作业页面 (create-assignment.uvue)
- 项目选择功能
- 项目列表正确加载(使用
is_active: true过滤) - 项目信息正确显示
- 难度等级样式正确应用 (
getDifficultyClass)
- 项目列表正确加载(使用
1.5 学生端 - 作业详情页面 (assignment-detail.uvue)
- 评分标准显示
- 查看作业详情
- 验证评分标准正确解析和显示
- 测试新JSON格式解析
- 测试旧格式兼容性
Phase 2: 数据库验证
2.1 数据结构验证
-- 验证字段类型
SELECT
column_name,
data_type,
is_nullable
FROM information_schema.columns
WHERE table_name = 'ak_training_projects'
AND column_name IN ('scoring_criteria', 'title', 'sport_type', 'difficulty_level', 'is_active');
2.2 JSON数据验证
-- 验证JSON结构
SELECT
id,
title,
scoring_criteria,
jsonb_typeof(scoring_criteria) as type,
scoring_criteria ? 'criteria' as has_criteria,
scoring_criteria ? 'scoring_method' as has_method,
scoring_criteria ? 'weight_distribution' as has_weights,
jsonb_array_length(scoring_criteria->'criteria') as criteria_count
FROM ak_training_projects
WHERE scoring_criteria IS NOT NULL
LIMIT 5;
2.3 数据完整性验证
-- 检查所有项目都有评分标准
SELECT
COUNT(*) as total_projects,
COUNT(scoring_criteria) as projects_with_criteria,
COUNT(*) - COUNT(scoring_criteria) as missing_criteria
FROM ak_training_projects;
Phase 3: 兼容性测试
3.1 新旧数据共存测试
- 创建包含新JSON格式的项目
- 确保legacy数据(如果存在)仍能正常显示
- 验证前端代码能同时处理两种格式
3.2 边界条件测试
- 空的评分标准数组
- 单个评分标准
- 最大数量评分标准(5-10个)
- 特殊字符在描述中
- 极值分数(0, 100)
Phase 4: 性能测试
4.1 查询性能
-- 测试JSON查询性能
EXPLAIN ANALYZE
SELECT * FROM ak_training_projects
WHERE scoring_criteria ? 'criteria'
AND jsonb_array_length(scoring_criteria->'criteria') > 3;
4.2 页面加载性能
- 项目列表页面加载时间
- 项目详情页面加载时间
- 大量数据情况下的响应时间
🚀 测试执行步骤
Step 1: 环境准备
- 确保开发环境数据库连接正常
- 备份当前数据库(可选)
- 准备测试数据
Step 2: 前端测试
- 启动开发服务器
- 按照上述清单逐项测试
- 记录任何异常或错误
Step 3: 数据库验证
- 连接数据库
- 执行验证SQL语句
- 检查数据结构和内容
Step 4: 集成测试
- 完整的创建-编辑-查看流程
- 跨页面数据一致性验证
- 用户体验测试
📊 测试结果记录
功能测试结果
| 功能项 | 状态 | 备注 |
|---|---|---|
| 项目创建 | ⏳ | 待测试 |
| 项目编辑 | ⏳ | 待测试 |
| 项目详情 | ⏳ | 待测试 |
| 作业创建 | ⏳ | 待测试 |
| 作业详情 | ⏳ | 待测试 |
数据验证结果
| 验证项 | 状态 | 备注 |
|---|---|---|
| 字段类型 | ⏳ | 待验证 |
| JSON结构 | ⏳ | 待验证 |
| 数据完整性 | ⏳ | 待验证 |
问题记录
- 问题1:[描述]
- 问题2:[描述]
🔧 调试工具
浏览器控制台命令
// 检查页面数据
console.log('评分标准数据:', this.getScoringCriteria());
// 检查表单数据
console.log('表单数据:', this.formData);
数据库调试SQL
-- 查看最近创建的项目
SELECT * FROM ak_training_projects
ORDER BY created_at DESC LIMIT 5;
-- 查看特定项目的评分标准
SELECT title, scoring_criteria
FROM ak_training_projects
WHERE id = '[项目ID]';
✅ 完成标准
所有测试项都通过,包括:
- 前端功能正常
- 数据正确保存和加载
- 新旧格式兼容
- 性能满足要求
- 用户体验良好
🚨 问题升级标准
如果遇到以下情况,需要立即反馈:
- 数据丢失或损坏
- 功能完全无法使用
- 严重性能问题
- 安全相关问题
测试负责人: [填写]
测试时间: [填写]
版本信息: 评分标准JSON迁移 v1.0