跳转至

资源状态条测试指南

测试前准备

1. 启动开发环境

# 启动 Hugo 开发服务器
make server

# 或使用基础服务器
hugo server

2. 访问测试页面

访问任意包含 GitHub 仓库链接的 AI 资源详情页,例如:

  • http://localhost:1313/zh/ai/kubernetes/
  • http://localhost:1313/en/ai/tensorflow/

功能测试清单

✅ 基础渲染测试

测试项 1: 容器加载

  • 页面加载时显示 loading 动画
  • 数据加载完成后 loading 消失
  • 三行内容正确展示(桌面端)

测试项 2: 综合状态行

  • 显示"综合状态"标签(中文)或"Overall Status"(英文)
  • 状态标签正确映射(优秀/良好/一般/风险)
  • 评分数值正确显示(整数)
  • Info 图标显示在最右侧

测试项 3: 子评分行

  • 四个子评分按顺序展示:活跃度、社区、影响力、持续性
  • 使用 · 分隔符
  • 所有子评分在同一行(不换行)
  • 字号和颜色统一

测试项 4: 更新时间行

  • 显示相对时间(今天/昨天/X 天前/X 周前/X 个月前/X 年前)
  • 时间格式中英文正确
  • 字号最小,视觉权重最低

✅ 状态映射测试

创建或找到不同评分的项目进行测试:

综合评分 预期状态标签 标签颜色
85 优秀 / Excellent 绿色系
72 良好 / Good 蓝色系
55 一般 / Fair 黄色系
35 风险 / Poor 红色系

测试步骤:

  1. 查看不同项目的综合评分
  2. 确认状态标签与评分区间匹配
  3. 验证标签颜色符合设计规范

✅ 交互测试

测试项 5: Info 图标 Tooltip

  • Hover info 图标时显示 tooltip
  • Tooltip 包含评分维度说明
  • Tooltip 不影响布局高度
  • Tooltip 位置合理(不遮挡内容)
  • 点击图标触发全局说明弹窗

测试项 6: 数据错误处理

  • 网络错误时显示"Data unavailable"
  • 错误提示样式正确
  • 不影响页面其他内容展示

✅ 响应式测试

桌面端 (≥ 1024px)

  • 三行完整展示
  • 子评分不换行
  • 更新时间显示
  • 高度 ≤ 96px

平板端 (768px - 1023px)

  • 综合状态行正常
  • 子评分行正常
  • 更新时间隐藏

移动端 (380px - 767px)

  • 综合状态行正常
  • 子评分行正常
  • 更新时间隐藏

小屏幕 (< 380px)

  • 仅显示综合状态行
  • 子评分行和更新时间行隐藏
  • 布局不破坏

测试工具:

  • Chrome DevTools 设备模拟器
  • 实际移动设备测试

✅ 视觉规范测试

禁止元素检查:

  • ✅ 无卡片背景
  • ✅ 无阴影效果
  • ✅ 无圆角容器
  • ✅ 无大号数字展示
  • ✅ 无 Emoji(除 info 图标外)
  • ✅ 无雷达图
  • ✅ 无进度条
  • ✅ 无仪表盘

样式一致性检查:

  • 状态标签使用淡色背景
  • 字号层级清晰(状态 > 子评分 > 更新)
  • 颜色符合浅色/深色模式适配
  • 分隔符样式统一

✅ 双语测试

中文环境 (/zh/ai/...)

  • 综合状态标签显示中文
  • 子评分名称显示中文
  • 更新时间显示中文格式
  • Tooltip 内容为中文

英文环境 (/en/ai/...)

  • 综合状态标签显示英文
  • 子评分名称显示英文
  • 更新时间显示英文格式
  • Tooltip 内容为英文

✅ 性能测试

测试项 7: 加载性能

  • 首屏渲染时间 < 2 秒
  • 数据加载完成后渲染流畅
  • 无布局抖动(layout shift)

测试项 8: 缓存机制

  • 相同项目数据使用缓存(30 分钟内)
  • 缓存过期后重新请求
  • LocalStorage 中有缓存记录

性能指标:

// 在浏览器控制台执行
performance.mark('resource-status-start');
// 等待渲染完成
performance.mark('resource-status-end');
performance.measure('resource-status', 'resource-status-start', 'resource-status-end');
console.table(performance.getEntriesByType('measure'));

✅ 无障碍测试

测试项 9: 键盘导航

  • Tab 键可聚焦 info 图标
  • Enter/Space 键可触发 tooltip
  • Esc 键可关闭 tooltip

测试项 10: 屏幕阅读器

  • Info 图标有 aria-label
  • 状态标签语义清晰
  • 评分数值可被正确朗读

测试工具:

  • macOS VoiceOver
  • Chrome Lighthouse Accessibility 审计

边界测试

数据异常场景

场景 预期行为
scores.health 为 null 显示"Data unavailable"
scores.health 为 0 显示"风险 0"
scores.health 为 100 显示"优秀 100"
daysSinceLastCommit 为 null 显示"最近更新:?"
daysSinceLastCommit 为 0 显示"最近更新:今天"
daysSinceLastCommit > 365 显示"最近更新:X 年前"

极端情况

测试项 11: 超长文本

  • 项目名称超长时不影响布局
  • 子评分行溢出时整体隐藏
  • 不出现横向滚动条

测试项 12: 网络环境

  • 慢速网络下 loading 提示正常
  • 网络断开时错误提示清晰
  • 重新连接后可正常加载

回归测试

确保其他功能不受影响:

  • Smart badges 正常显示
  • 相关资源推荐正常
  • 页面其他健康指标展示不变(列表页等)
  • 原有的 data-ai-health-bars 仍可正常工作
  • JavaScript 缓存机制正常
  • 深色模式切换正常

浏览器兼容性测试

浏览器 版本 状态
Chrome Latest ⬜ 待测试
Firefox Latest ⬜ 待测试
Safari Latest ⬜ 待测试
Edge Latest ⬜ 待测试
Mobile Safari iOS 15+ ⬜ 待测试
Chrome Mobile Android ⬜ 待测试

问题记录模板

发现问题时请记录:

**问题标题**: [简短描述]

**复现步骤**:
1. 访问页面 [URL]
2. 执行操作 [具体步骤]
3. 观察结果

**预期结果**: [应该显示什么]

**实际结果**: [实际显示什么]

**环境信息**:
- 浏览器:[Chrome 120 / Safari 17.2]
- 设备:[Desktop / iPhone 14]
- 屏幕尺寸:[1920x1080 / 390x844]
- 语言:[zh / en]

**截图**: [如有必要]

**严重程度**: [高 / 中 / 低]

验收标准

所有测试项通过后,确认:

功能完整性

  • 所有三行内容正确展示
  • 状态映射准确无误
  • 交互功能正常

视觉规范

  • 无禁止元素
  • 样式符合设计规格
  • 响应式布局完美

性能指标

  • 页面首屏可同时看到标题、简介、综合状态
  • 资源信息模块高度 ≤ 原实现的 30%
  • 用户在 1 秒内可判断项目健康状态

用户体验

  • 信息层级清晰
  • 决策效率提升
  • 无学习成本

测试报告模板

# 资源状态条测试报告

**测试日期**: YYYY-MM-DD
**测试人**: [姓名]
**测试环境**: [环境描述]

## 测试摘要
- 总测试项:X
- 通过:Y
- 失败:Z
- 阻塞:0

## 详细结果
[按测试清单逐项填写]

## 问题汇总
[列出所有发现的问题]

## 结论
[通过 / 需要修复后重测]

## 建议
[可选的改进建议]

测试完成后: 请将测试报告提交至项目管理系统或与开发团队分享。