测试报告.md 5.6 KB

AI 有声书应用页面测试报告

测试时间: 2026-03-27
测试范围: 所有前端页面(首页、登录页、历史页、会员页、我的页、播放器页)
问题总数: 31 个


🔴 严重 Bug(优先级:高)

1. 首页 (index.vue)

  • 音频列表未登录时显示问题:第 18-22 行,未登录时显示空状态,但实际应该引导用户登录
  • 生成按钮逻辑错误:第 180-182 行,handleGenerate 函数跳转到历史记录页面,但首页的"新建生成"按钮应该直接创建新音频而非跳转
  • ⚠️ 音色封面映射不完整:第 76-87 行,只定义了 10 种音色的颜色,如果服务端返回其他音色会显示默认紫色

2. 登录页 (login.vue)

  • ⚠️ 验证码输入非必需:第 105 行,开发环境使用 '123456' 作为默认验证码,但生产环境可能导致安全问题
  • ⚠️ 缺少表单验证反馈:手机号格式错误时没有明确的错误提示
  • ⚠️ 倒计时 timer 未清理:第 69 行定义的 timer 在组件卸载时可能未清除(缺少 onUnmounted

3. 历史页/生成页 (history.vue)

  • 🔴 滑块参数绑定错误
    • 第 57 行:speed 范围是 0.5-2.0,但 slider 使用 25-100 的范围计算错误
    • 第 69 行:pitch 范围是 -500 到 500,但 slider 值域计算可能导致精度丢失
  • ⚠️ 文本清空和粘贴按钮无样式:第 26-28 行的按钮缺少视觉反馈
  • ⚠️ 生成后未刷新音频列表:第 164-169 行,生成成功后只跳转播放,未通知首页更新列表

4. 会员页 (member.vue)

  • 🔴 支付逻辑问题:第 117 行使用 process.env.NODE_ENV,但在 uni-app 中应使用 uni.getSystemInfoSync().platform 判断环境
  • ⚠️ 会员等级数据过滤:第 90 行 filter((l: any) => l.level > 0) 可能过滤掉免费用户等级
  • ⚠️ 缺少加载状态:获取权益信息时没有 loading 提示

5. 我的页 (mine.vue)

  • ⚠️ 统计数据显示问题:第 26 行,当 wordLimit 为 0 时显示 ,但 0 可能表示无限而非限制为 0
  • ⚠️ 退出登录后未清理页面栈:第 125 行,退出登录后可能仍可返回到其他页面

6. 播放器页 (player.vue)

  • 🔴 音频上下文初始化时机错误:第 123-130 行,页面加载时才初始化 audioContext,应该在 store 的 play 方法中已初始化
  • 🔴 播放列表管理缺失:没有从服务端获取完整播放列表的逻辑,导致上一首/下一首功能可能不可用
  • ⚠️ 进度条更新延迟:依赖 onTimeUpdate 事件可能有延迟,用户体验不佳
  • ⚠️ 分享功能不完善:第 238-247 行,H5 使用 Web Share API,但其他平台仅提示截图,体验不一致
  • ⚠️ 下载功能缺少权限处理:第 217-234 行,保存文件到相册可能需要用户授权

🟡 功能和体验问题(优先级:中)

7. 全局状态管理 (store)

  • ⚠️ user.ts 第 18-27 行initUser 函数未在页面中调用,用户刷新后可能丢失状态
  • ⚠️ audio.ts 第 89-95 行play 方法每次都会重新创建 audioContext,可能导致内存泄漏
  • ⚠️ 缺少错误边界处理:API 请求失败时没有重试机制

8. 请求封装 (request.ts)

  • ⚠️ 统一错误处理不足:第 42-47 行,401 错误只跳转登录,未考虑其他认证失败场景
  • ⚠️ 缺少请求取消机制:长耗时请求无法取消
  • ⚠️ BASE_URL 硬编码:第 2 行,应该从环境变量读取

9. 类型定义 (types/index.ts)

  • ⚠️ AudioItem 字段不完整:缺少 userIdtags 等字段定义
  • ⚠️ MemberStatus 配额计算dailyRemaining 应该由后端计算而非前端

10. UI/UX 问题

  • 🎨 响应式设计不足:所有页面使用固定 rpx 单位,在不同屏幕尺寸下可能显示不佳
  • 🎨 缺少骨架屏:所有加载状态仅显示"加载中..."
  • 🎨 无障碍访问支持弱:缺少 aria-label 等辅助功能属性
  • 🎨 动画过渡生硬:页面切换、列表项出现等缺少平滑过渡效果

🟢 建议优化项(优先级:低)

11. 性能优化

  • 💡 图片懒加载:音频封面图应使用 lazy-load
  • 💡 虚拟列表:音频列表较长时应使用虚拟滚动
  • 💡 防抖节流:搜索、滑块拖动等操作应添加防抖

12. 代码规范

  • 📝 任意类型使用:多处使用 any,如 member.vue 第 65 行、89 行
  • 📝 魔法数字:音量、语速等参数应提取为常量
  • 📝 重复代码:多个页面的导航栏、底部按钮可抽取为组件

13. 测试覆盖

  • ✅ 缺少单元测试
  • ✅ 缺少 E2E 测试
  • ✅ 缺少边界条件测试(网络异常、空数据等)

📊 问题优先级汇总

优先级 数量 主要影响
🔴 高 6 功能不可用、逻辑错误
🟡 中 15 体验问题、潜在风险
🟢 低 10 优化建议、代码质量

总计发现问题:31 个


修复计划

第一阶段:修复严重 Bug(1-2 天)

  1. 修复首页生成按钮逻辑
  2. 修复历史页滑块参数绑定
  3. 修复会员页支付环境判断
  4. 修复播放器音频上下文初始化
  5. 完善登录页定时器清理
  6. 优化未登录状态显示

第二阶段:修复功能问题(2-3 天)

  1. 完善全局状态管理
  2. 优化请求封装
  3. 补充类型定义
  4. 改进 UI/UX 体验

第三阶段:代码优化(1-2 天)

  1. 性能优化
  2. 代码规范化
  3. 添加测试用例