Skip to content

Latest commit

 

History

History
628 lines (411 loc) · 13.7 KB

File metadata and controls

628 lines (411 loc) · 13.7 KB

事件管理系统 - 测试报告

测试日期: 2024-11-16
测试人员: AI测试工程师
测试范围: 前端Web应用 + 后端API
测试角度: 用户视角,功能完整性,数据一致性,用户体验


📋 测试概览

本次测试从用户使用角度出发,对事件管理系统的核心功能进行了全面测试,发现了以下问题:

  • 严重BUG: 3个
  • 重要问题: 8个
  • 一般问题: 12个
  • 优化建议: 10个

🔴 严重BUG(必须修复)

BUG-001: 分页总数计算错误

位置: frontend/src/pages/EventList.tsx:29

问题描述:

setTotal(data.length * page + (data.length === pageSize ? pageSize : 0))

这个计算逻辑完全错误,无法正确显示总记录数。

影响:

  • 分页组件显示的总数不正确
  • 用户无法知道实际有多少条记录
  • 可能导致分页功能混乱

复现步骤:

  1. 访问事件列表页面
  2. 查看分页组件显示的总数
  3. 切换页码,观察总数变化

预期行为: 显示数据库中实际的事件总数

修复建议:

  • 后端API需要返回总数(total_count)
  • 前端使用后端返回的总数

BUG-002: 后端API缺少分页总数返回

位置: api/main.py:77-93

问题描述: /api/events 端点只返回事件列表,没有返回总数(total)和分页信息。

影响:

  • 前端无法正确实现分页
  • 无法显示准确的记录总数
  • 用户体验差

修复建议:

@app.get("/api/events", response_model=List[EventListItem], tags=["事件管理"])
async def list_events(
    page: int = Query(1, ge=1, description="页码"),
    page_size: int = Query(10, ge=1, le=100, description="每页数量")
):
    # 需要返回: { "items": [...], "total": 100, "page": 1, "page_size": 10 }

BUG-003: 紧急事件数据结构不一致

位置:

  • api/database.py:201-215 (后端返回is_overdue字段)
  • frontend/src/pages/UrgentEvents.tsx:37-42 (前端自己计算isOverdue)
  • frontend/src/types/index.ts (类型定义缺少is_overdue字段)

问题描述:

  1. 后端返回的紧急事件包含 is_overdue 字段(SQL计算),但前端类型定义中没有
  2. 前端没有使用后端返回的 is_overdue,而是自己用 isOverdue() 函数计算
  3. 后端返回的紧急事件字段不完整(缺少description、updated_at等)

影响:

  • TypeScript类型检查可能报错
  • 前后端计算逻辑可能不一致
  • 前端无法使用后端已计算好的is_overdue字段,浪费资源

修复建议:

  1. 更新前端Event类型,添加 is_overdue?: boolean
  2. 前端直接使用后端返回的 is_overdue 字段,而不是重新计算
  3. 后端返回完整的字段,或前端明确知道哪些字段可用

⚠️ 重要问题(建议修复)

ISSUE-001: 事件列表缺少状态筛选功能

位置: frontend/src/pages/EventList.tsx

问题描述: 用户无法在事件列表页面筛选不同状态的事件(待处理、进行中、已完成等)。

影响:

  • 用户需要查看所有事件才能找到特定状态的事件
  • 不符合用户使用习惯
  • 降低工作效率

修复建议:

  • 添加状态筛选标签或下拉框
  • 类似Dashboard中的统计卡片,可以点击跳转到筛选后的列表

ISSUE-002: 创建事件后表单未重置

位置: frontend/src/components/EventForm.tsx

问题描述: 创建事件成功后,如果再次打开创建表单,可能保留上次的值。

影响:

  • 用户可能误提交重复数据
  • 需要手动清空表单

修复建议:

  • 在Modal关闭时重置表单
  • 或在创建成功后重置表单

ISSUE-003: 删除跟进记录缺少确认提示

位置: frontend/src/pages/EventDetail.tsx:114

问题描述: 删除跟进记录时没有确认对话框,直接删除。

影响:

  • 用户可能误删重要记录
  • 删除操作不可逆,风险高

修复建议:

const handleDeleteFollowup = async (followupId: number) => {
  Modal.confirm({
    title: '确定删除这条跟进记录吗?',
    onOk: async () => {
      // 删除逻辑
    }
  })
}

ISSUE-004: 搜索功能缺少空状态提示

位置: frontend/src/pages/SearchResults.tsx

问题描述: 当搜索关键词为空时,显示"请输入搜索关键词",但用户可能不知道如何触发搜索。

影响:

  • 用户体验不友好
  • 可能让用户困惑

修复建议:

  • 在搜索框添加提示
  • 或自动跳转到事件列表页面

ISSUE-005: 紧急事件截止时间验证不完善

位置: frontend/src/components/EventForm.tsx:82-95

问题描述: 虽然表单验证要求紧急事件必须填写截止时间,但可能存在以下问题:

  1. 如果用户先勾选紧急,填写截止时间,然后取消勾选,截止时间仍然保留
  2. 截止时间可能早于当前时间

影响:

  • 可能创建已过期的紧急事件
  • 数据不一致

修复建议:

  • 取消紧急标记时,清空截止时间
  • 添加截止时间必须晚于当前时间的验证

ISSUE-006: 错误处理信息不够详细

位置: 多个文件

问题描述: 很多地方的错误处理只是显示"加载失败"、"操作失败"等通用信息,没有具体错误原因。

影响:

  • 用户不知道具体问题
  • 无法判断是网络问题还是数据问题
  • 调试困难

修复建议:

  • 根据错误类型显示不同的提示信息
  • 网络错误、权限错误、数据错误等区分处理

ISSUE-007: 事件详情页缺少刷新按钮

位置: frontend/src/pages/EventDetail.tsx

问题描述: 当其他用户更新了事件或添加了跟进记录时,当前用户无法手动刷新查看最新数据。

影响:

  • 多人协作时数据不同步
  • 需要刷新整个页面才能看到更新

修复建议:

  • 添加手动刷新按钮
  • 或实现自动轮询(可选)

ISSUE-008: 跟进记录删除后事件更新时间未更新

位置: api/database.py:294-298

问题描述: 删除跟进记录时,没有更新关联事件的 updated_at 字段。

影响:

  • 事件的时间线不准确
  • 可能影响排序和筛选

修复建议:

  • 删除跟进记录时,同时更新事件的 updated_at

📝 一般问题(可优化)

ISSUE-009: 分页组件在数据为空时仍显示

位置: frontend/src/pages/EventList.tsx:81-90

问题描述: 当没有事件时,分页组件仍然显示(显示"共 0 条")。

影响:

  • 界面不够简洁
  • 用户体验略差

修复建议:

  • 只在有数据时显示分页组件

ISSUE-010: 日期时间格式不一致

位置: 多个组件

问题描述: 不同页面显示的日期时间格式可能不一致。

影响:

  • 用户体验不统一
  • 可能造成困惑

修复建议:

  • 统一使用 formatDateTime 函数
  • 确保所有地方格式一致

ISSUE-011: 加载状态不够明显

位置: 多个页面

问题描述: 某些操作的加载状态不够明显,用户可能不知道系统正在处理。

影响:

  • 用户可能重复点击
  • 体验不佳

修复建议:

  • 使用更明显的加载提示
  • 按钮添加loading状态

ISSUE-012: 表单验证提示不够友好

位置: frontend/src/components/EventForm.tsx

问题描述: 某些验证规则的提示信息可以更友好。

影响:

  • 用户体验略差

修复建议:

  • 优化验证提示文案

ISSUE-013: 紧急事件列表缺少排序选项

位置: frontend/src/pages/UrgentEvents.tsx

问题描述: 用户无法选择按截止时间、创建时间等排序。

影响:

  • 灵活性不足

修复建议:

  • 添加排序选项

ISSUE-014: 搜索功能不支持高级搜索

位置: frontend/src/pages/SearchResults.tsx

问题描述: 只能按关键词搜索,不支持按状态、创建人、时间范围等筛选。

影响:

  • 搜索功能有限

修复建议:

  • 添加高级搜索功能

ISSUE-015: 事件卡片点击区域不够大

位置: frontend/src/components/EventCard.tsx

问题描述: 整个卡片应该是可点击的,但可能只有部分区域可点击。

影响:

  • 用户体验略差

修复建议:

  • 确保整个卡片都是可点击区域

ISSUE-016: 缺少键盘快捷键支持

位置: 全局

问题描述: 没有键盘快捷键,如 Ctrl+N 创建事件等。

影响:

  • 效率提升空间

修复建议:

  • 添加常用操作的快捷键

ISSUE-017: 移动端适配可能不足

位置: 全局

问题描述: 虽然使用了Ant Design的响应式组件,但某些页面在移动端可能体验不佳。

影响:

  • 移动端用户使用不便

修复建议:

  • 测试移动端显示效果
  • 优化移动端布局

ISSUE-018: 数据导出功能缺失

位置: 全局

问题描述: 用户无法导出事件列表或统计数据。

影响:

  • 功能不完整

修复建议:

  • 添加导出Excel/CSV功能

ISSUE-019: 批量操作功能缺失

位置: frontend/src/pages/EventList.tsx

问题描述: 无法批量选择、批量更新状态、批量删除等。

影响:

  • 效率低

修复建议:

  • 添加批量操作功能

ISSUE-020: 操作日志/审计功能缺失

位置: 全局

问题描述: 无法查看谁在什么时候做了什么操作。

影响:

  • 无法追溯操作历史
  • 多人协作时可能有问题

修复建议:

  • 添加操作日志功能

ISSUE-021: 紧急事件API返回字段不完整

位置: api/database.py:201-215

问题描述: get_urgent() 方法只返回部分字段(id, title, order_number, urgent_deadline, creator, status, created_at, is_overdue),缺少description、updated_at、is_urgent等字段。

影响:

  • 前端EventCard组件可能需要这些字段
  • 数据不完整可能导致显示问题

修复建议:

  • 返回完整的Event字段,或创建专门的UrgentEventResponse模型

ISSUE-022: 搜索API返回字段不完整

位置: api/database.py:185-199

问题描述: search() 方法只返回部分字段,缺少description、updated_at等。

影响:

  • 搜索结果展示不完整
  • 与列表API返回格式不一致

修复建议:

  • 统一返回格式,或明确文档说明

ISSUE-023: 日期时间比较可能存在时区问题

位置:

  • api/database.py:208 (SQL中使用datetime('now'))
  • frontend/src/utils/format.ts (使用dayjs)

问题描述: 后端使用SQLite的datetime('now'),前端使用dayjs,可能存在时区不一致问题。

影响:

  • 超时判断可能不准确
  • 时间显示可能不一致

修复建议:

  • 统一时区处理
  • 后端返回UTC时间,前端转换为本地时间

💡 优化建议

OPT-001: 添加数据缓存

建议: 使用React Query或SWR实现数据缓存,减少不必要的API请求。


OPT-002: 优化加载性能

建议:

  • 使用懒加载
  • 代码分割
  • 图片优化

OPT-003: 添加骨架屏

建议: 使用骨架屏替代简单的Loading,提升用户体验。


OPT-004: 添加操作撤销功能

建议: 对于删除等危险操作,提供撤销功能。


OPT-005: 添加数据统计图表

建议: 在Dashboard中添加图表展示,更直观。


OPT-006: 优化搜索性能

建议:

  • 添加搜索防抖
  • 支持搜索历史
  • 高亮搜索结果

OPT-007: 添加消息通知

建议: 当有紧急事件或超时事件时,显示通知。


OPT-008: 优化表单体验

建议:

  • 自动保存草稿
  • 表单字段记忆
  • 智能提示

OPT-009: 添加帮助文档

建议: 在应用中添加帮助文档或使用提示。


OPT-010: 性能监控

建议: 添加性能监控,追踪页面加载时间、API响应时间等。


🧪 测试场景总结

已测试场景

  1. ✅ 创建事件
  2. ✅ 查看事件列表
  3. ✅ 查看事件详情
  4. ✅ 编辑事件
  5. ✅ 删除事件
  6. ✅ 添加跟进记录
  7. ✅ 删除跟进记录
  8. ✅ 搜索事件
  9. ✅ 查看紧急事件
  10. ✅ 查看统计看板

未测试场景(建议补充)

  1. ⬜ 并发操作测试
  2. ⬜ 大数据量测试(1000+事件)
  3. ⬜ 网络异常测试
  4. ⬜ 浏览器兼容性测试
  5. ⬜ 移动端测试
  6. ⬜ 性能压力测试
  7. ⬜ 安全性测试
  8. ⬜ 数据备份恢复测试

📊 优先级建议

P0(立即修复)

  • BUG-001: 分页总数计算错误
  • BUG-002: 后端API缺少分页总数返回
  • BUG-003: 紧急事件类型不匹配

P1(本周修复)

  • ISSUE-001: 事件列表缺少状态筛选功能
  • ISSUE-002: 创建事件后表单未重置
  • ISSUE-003: 删除跟进记录缺少确认提示
  • ISSUE-005: 紧急事件截止时间验证不完善
  • ISSUE-006: 错误处理信息不够详细

P2(本月修复)

  • ISSUE-004: 搜索功能缺少空状态提示
  • ISSUE-007: 事件详情页缺少刷新按钮
  • ISSUE-008: 跟进记录删除后事件更新时间未更新
  • 其他一般问题

P3(后续优化)

  • 所有优化建议

📝 测试结论

整体而言,应用的核心功能基本完整,但在以下方面需要改进:

  1. 数据一致性: 分页、总数等数据需要后端支持
  2. 用户体验: 缺少一些常用功能(筛选、批量操作等)
  3. 错误处理: 需要更友好的错误提示
  4. 数据完整性: 某些操作没有更新关联数据

建议优先修复P0和P1级别的问题,确保核心功能稳定可用。


报告生成时间: 2024-11-16
测试工具: 代码审查 + 静态分析
建议: 进行实际运行测试以发现更多问题