Files
martial-master/docs/QUICK_TEST_GUIDE.md
宅房 7aa6545cbb
All checks were successful
continuous-integration/drone/push Build is passing
fix bugs
2025-12-12 05:13:10 +08:00

330 lines
8.5 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. 数据库准备
执行以下SQL脚本按顺序
```bash
# 1. 升级表结构(添加新字段)
mysql -h localhost -P 3306 -u root -proot blade < database/martial-db/upgrade_judge_invite_table.sql
# 2. 插入测试数据(可选)
mysql -h localhost -P 3306 -u root -proot blade < database/martial-db/insert_test_judge_invite_data.sql
```
或者直接在MySQL客户端中执行
```sql
-- 连接数据库
USE blade;
-- 添加新字段
ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS invite_status INT DEFAULT 0 COMMENT '邀请状态(0-待回复,1-已接受,2-已拒绝,3-已取消)';
ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS invite_time DATETIME COMMENT '邀请时间';
ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS reply_time DATETIME COMMENT '回复时间';
ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS reply_note VARCHAR(500) COMMENT '回复备注';
ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS contact_phone VARCHAR(20) COMMENT '联系电话';
ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS contact_email VARCHAR(100) COMMENT '联系邮箱';
ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS invite_message VARCHAR(1000) COMMENT '邀请消息';
ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS cancel_reason VARCHAR(500) COMMENT '取消原因';
-- 添加索引
ALTER TABLE martial_judge_invite ADD INDEX IF NOT EXISTS idx_invite_status (invite_status);
ALTER TABLE martial_judge_invite ADD INDEX IF NOT EXISTS idx_competition_status (competition_id, invite_status);
```
### 2. 后端服务
后端服务已经在运行端口8123如果没有运行执行
```bash
cd martial-master
mvn spring-boot:run
```
### 3. 前端服务
前端服务应该已经在运行,访问:
```
http://localhost:3000/martial/judgeInvite
```
## ✅ 测试步骤
### 测试1: 查看邀请列表
1. 打开浏览器访问评委邀请码管理页面
2. 选择一个赛事(如果有测试数据,会自动选择第一个赛事)
3. 应该能看到:
- ✅ 统计卡片显示数据(总数、待回复、已接受、已拒绝)
- ✅ 表格显示邀请列表
- ✅ 邀请码显示为橙色标签
**预期结果**
- 统计卡片显示正确的数字
- 表格显示5条测试数据
- 邀请码列显示橙色标签
### 测试2: 邀请码复制功能 ⭐
1. 找到表格中的"邀请码"列
2. 点击任意一个橙色的邀请码标签例如INV2025001
3. 应该看到成功提示:"邀请码已复制: INV2025001"
4. 打开记事本,按 Ctrl+V 粘贴
5. 应该能看到邀请码内容
**预期结果**
- ✅ 点击后显示成功提示
- ✅ 剪贴板中有邀请码内容
- ✅ 可以粘贴到其他应用
### 测试3: 搜索和筛选
1. **按姓名搜索**
- 在"评委姓名"输入框输入"张三"
- 点击"搜索"按钮
- 应该只显示张三的邀请记录
2. **按等级筛选**
- 选择"评委等级"为"国家级"
- 点击"搜索"按钮
- 应该只显示国家级评委的邀请
3. **按状态筛选**
- 选择"邀请状态"为"待回复"
- 点击"搜索"按钮
- 应该只显示待回复的邀请
4. **重置**
- 点击"重置"按钮
- 所有筛选条件清空,显示全部数据
**预期结果**
- ✅ 搜索功能正常
- ✅ 筛选功能正常
- ✅ 重置功能正常
### 测试4: 统计卡片
1. 查看统计卡片的数字
2. 切换不同的赛事
3. 统计数字应该随之变化
**预期结果**
- ✅ 总邀请数 = 5
- ✅ 待回复 = 2
- ✅ 已接受 = 2
- ✅ 已拒绝 = 1
### 测试5: 操作按钮
1. **重发按钮**(待回复状态):
- 找到状态为"待回复"的记录
- 点击"重发"按钮
- 应该显示"重发成功"
2. **提醒按钮**(待回复状态):
- 找到状态为"待回复"的记录
- 点击"提醒"按钮
- 应该显示"提醒发送成功"
3. **确认按钮**(已接受状态):
- 找到状态为"已接受"的记录
- 点击"确认"按钮
- 应该弹出确认对话框
- 点击"确认"后显示"确认成功"
**预期结果**
- ✅ 按钮根据状态显示/隐藏
- ✅ 操作成功后显示提示
- ✅ 列表自动刷新
### 测试6: 分页功能
1. 如果数据超过10条应该显示分页器
2. 点击"下一页"按钮
3. 应该显示下一页的数据
4. 修改"每页条数"
5. 数据应该重新加载
**预期结果**
- ✅ 分页器显示正确
- ✅ 翻页功能正常
- ✅ 每页条数切换正常
## 🔍 API测试
### 使用Postman或curl测试
#### 1. 获取邀请列表
```bash
curl -X GET "http://localhost:8123/api/blade-martial/judgeInvite/list?current=1&size=10&competitionId=1"
```
**预期响应**
```json
{
"code": 200,
"success": true,
"data": {
"records": [...],
"total": 5,
"size": 10,
"current": 1
}
}
```
#### 2. 获取统计信息
```bash
curl -X GET "http://localhost:8123/api/blade-martial/judgeInvite/statistics?competitionId=1"
```
**预期响应**
```json
{
"code": 200,
"success": true,
"data": {
"totalInvites": 5,
"pendingCount": 2,
"acceptedCount": 2,
"rejectedCount": 1
}
}
```
## 🐛 常见问题排查
### 问题1: 前端页面报错 "Failed to resolve import"
**解决方案**
- 检查是否有不存在的导入
- 已修复:删除了 `import { getJudgeList } from '@/api/martial/judge'`
### 问题2: 后端启动失败 "Port 8123 was already in use"
**解决方案**
- 端口已被占用,说明服务已经在运行
- 或者杀掉占用端口的进程:
```bash
# Windows
netstat -ano | findstr :8123
taskkill /PID <进程ID> /F
```
### 问题3: 数据库连接失败
**解决方案**
- 检查MySQL服务是否启动
- 检查配置文件中的数据库连接信息
- 确认数据库名称为 `blade`
### 问题4: 表格没有数据
**解决方案**
1. 检查是否执行了数据库升级脚本
2. 检查是否插入了测试数据
3. 检查浏览器控制台是否有错误
4. 检查后端日志是否有异常
### 问题5: 邀请码复制失败
**解决方案**
- 检查浏览器是否支持Clipboard API
- 如果是HTTP环境可能需要HTTPS
- 会自动降级到 document.execCommand('copy')
## 📊 测试数据说明
测试数据包含5条邀请记录
| ID | 评委姓名 | 等级 | 邀请码 | 状态 | 说明 |
|----|---------|------|--------|------|------|
| 1 | 张三 | 国家级 | INV2025001 | 待回复 | 刚发送的邀请 |
| 2 | 李四 | 一级 | INV2025002 | 待回复 | 刚发送的邀请 |
| 3 | 王五 | 二级 | INV2025003 | 已接受 | 已回复接受 |
| 4 | 赵六 | 国家级 | INV2025004 | 已接受 | 裁判长,已接受 |
| 5 | 钱七 | 三级 | INV2025005 | 已拒绝 | 已回复拒绝 |
## ✨ 核心功能验证清单
- [ ] 页面正常加载
- [ ] 统计卡片显示正确
- [ ] 表格数据显示正确
- [ ] **邀请码显示为橙色标签** ⭐
- [ ] **点击邀请码可以复制** ⭐
- [ ] 搜索功能正常
- [ ] 筛选功能正常
- [ ] 分页功能正常
- [ ] 操作按钮显示正确
- [ ] 重发功能正常
- [ ] 提醒功能正常
- [ ] 确认功能正常
## 🎯 重点测试项
### 最重要的功能:邀请码复制 ⭐⭐⭐
这是本次开发的核心功能,必须确保:
1. ✅ 邀请码显示为**橙色深色标签**
2. ✅ 标签使用**等宽粗体字体**monospace, bold
3. ✅ 鼠标悬停时显示**手型光标**cursor: pointer
4. ✅ 点击后**自动复制到剪贴板**
5. ✅ 显示**成功提示消息**"邀请码已复制: XXX"
6. ✅ 支持**现代浏览器和旧浏览器**
### 测试浏览器兼容性
- [ ] Chrome/Edge现代浏览器
- [ ] Firefox现代浏览器
- [ ] Safari现代浏览器
- [ ] IE11旧浏览器降级方案
## 📝 测试报告模板
```
测试日期2025-12-12
测试人员:[姓名]
测试环境:
- 操作系统Windows 10
- 浏览器Chrome 120
- 后端版本4.0.1.RELEASE
- 前端版本Vue 3
测试结果:
✅ 页面加载正常
✅ 邀请码复制功能正常
✅ 统计卡片显示正确
✅ 搜索筛选功能正常
✅ 操作按钮功能正常
问题记录:
建议:
```
## 🎉 测试通过标准
所有以下条件都满足,即可认为测试通过:
1. ✅ 页面无报错,正常加载
2. ✅ 邀请码显示为橙色标签
3. ✅ 点击邀请码可以复制
4. ✅ 统计数据正确
5. ✅ 搜索筛选功能正常
6. ✅ 操作按钮功能正常
7. ✅ 后端接口返回正确数据
---
**祝测试顺利!** 🚀