TESTING-CHECKLIST.md 15 KB

🧪 测试验证清单 - 员工信息面板组件复用

📋 测试目标

验证以下方面是否正常工作:

  1. ✅ 编译通过,无错误
  2. 🧪 功能完整,无缺失
  3. 🎨 样式一致,无差异
  4. ⚡ 性能良好,无闪烁

1️⃣ 编译测试

✅ 已完成

$ ng lint employee-info-panel.component.html
✅ No linter errors found.

$ ng lint employee-info-panel.component.ts
✅ No linter errors found.

$ ng lint employee-info-panel.component.scss
✅ No linter errors found.

状态: ✅ 通过


2️⃣ 功能测试

测试环境

  • URL: http://localhost:4200/admin/employees
  • 用户角色: 管理员
  • 测试账号: (使用项目现有管理员账号)

测试步骤

2.1 基本打开流程

  • 步骤 1: 访问 http://localhost:4200/admin/employees
  • 步骤 2: 点击列表中的任意员工
  • 验证: 员工信息面板从右侧滑入
  • 验证: 面板显示员工头像、姓名、角色
  • 验证: 默认显示"基本信息"标签页

预期结果:

✅ 面板正确打开
✅ 头部信息正确显示
✅ 默认标签页为"基本信息"

2.2 基本信息标签页

  • 验证: 员工头像正确显示
  • 验证: 真实姓名和昵称正确显示
  • 验证: 联系方式(手机号、邮箱、企微ID)正确显示
  • 验证: 组织信息(身份、部门、职级)正确显示
  • 验证: 技能标签正确显示(如果有)
  • 验证: 工作量统计正确显示(如果有)
  • 点击: "编辑基本信息"按钮
  • 验证: 进入编辑模式
  • 修改: 真实姓名或手机号
  • 点击: "保存更新"按钮
  • 验证: 数据保存成功,返回查看模式

预期结果:

✅ 所有基本信息字段正确显示
✅ 编辑模式正常工作
✅ 数据保存成功

2.3 项目负载标签页 - 关键测试

  • 点击: "项目负载"标签页
  • 验证: 立即看到加载状态(如果数据未准备好)
    • 显示旋转的加载图标
    • 显示"正在加载项目数据..."文字
  • 等待: 数据加载完成(应该很快,因为数据已预加载)
  • 验证: 加载完成后显示完整的员工详情面板

预期结果:

✅ 切换标签页流畅
✅ 加载状态正确显示
✅ 数据快速加载完成(预加载生效)

2.4 负载概况验证(复用组件)

  • 验证: 显示"负载概况"区块
  • 验证: 显示"当前负责项目数"
  • 验证: 项目数量与实际一致
  • 验证: 如果项目数 >= 3,显示为高负载样式(红色或橙色)
  • 验证: 如果项目数 < 3,显示为正常负载样式(绿色或蓝色)
  • 验证: 显示"核心项目"列表(最多 3 个)
  • 点击: 任意项目名称
  • 验证: 跳转到项目详情页

预期结果:

✅ 负载概况正确显示
✅ 项目数量准确
✅ 负载样式正确(高负载/正常)
✅ 项目点击跳转正常

2.5 项目日历验证(复用组件)

  • 验证: 显示"项目日历"区块
  • 验证: 日历显示当前月份(格式:yyyy年MM月)
  • 验证: 日历有"上一月"和"下一月"按钮
  • 验证: 日历显示完整的月份网格(42 个格子,6 行 × 7 列)
  • 验证: 日历包含上个月末尾几天(灰色显示)
  • 验证: 日历包含下个月开头几天(灰色显示)
  • 验证: 今天的日期有特殊标记(边框或背景色)
  • 验证: 有项目的日期显示项目数量徽章(小圆点或数字)
  • 验证: 项目日期覆盖整个生命周期(从 createdAt 到 deadline)
    • 关键测试: 找一个跨度多天的项目,验证日历是否在整个期间都显示该项目
    • 例如: 项目 A 的 createdAt 是 11月1日,deadline 是 11月30日
    • 验证: 日历在 11月1日到11月30日的每一天都应该显示该项目
  • 点击: "上一月"按钮
  • 验证: 日历切换到上个月
  • 点击: "下一月"按钮(两次)
  • 验证: 日历切换到下个月
  • 点击: 任意有项目的日期
  • 验证: 显示该日期的项目详情(弹窗或提示)

预期结果:

✅ 日历正确显示当前月份
✅ 日历网格完整(42 格)
✅ 上月/下月日期正确填充
✅ 今天日期正确标记
✅ 项目日期覆盖整个生命周期 ⭐ 关键
✅ 月份切换正常工作
✅ 日期点击交互正常

2.6 请假记录验证(复用组件)

  • 验证: 显示"请假明细"区块
  • 验证: 显示"未来7天请假安排"
  • 验证: 如果有请假记录,显示列表
    • 显示请假日期
    • 显示请假类型(病假、事假等)
    • 显示请假时长
  • 验证: 如果没有请假记录,显示"未来7天无请假安排"

预期结果:

✅ 请假记录区块正确显示
✅ 请假数据准确
✅ 空状态正确显示

2.7 能力问卷验证(复用组件)

  • 验证: 显示"能力问卷"区块
  • 验证: 显示问卷完成状态
    • 如果已完成:显示"该员工已完成能力问卷"
    • 如果未完成:显示"该员工尚未完成能力问卷"
  • 验证: 如果已完成,显示问卷统计数据
    • 问卷得分
    • 完成时间
    • 其他统计信息
  • 点击: "刷新"按钮
  • 验证: 问卷数据重新加载

预期结果:

✅ 问卷状态正确显示
✅ 问卷数据准确
✅ 刷新功能正常

2.8 多员工测试

  • 关闭: 当前员工信息面板
  • 点击: 另一个员工(选择不同角色)
  • 验证: 面板显示新员工的信息
  • 切换: 到"项目负载"标签页
  • 验证: 数据正确切换,无缓存问题
  • 重复: 测试 3-5 个不同的员工

预期结果:

✅ 员工切换流畅
✅ 数据正确更新
✅ 无数据混淆或缓存问题

3️⃣ 样式一致性测试

3.1 与组长端对比

步骤

  1. 打开两个浏览器窗口:

    • 窗口 A:管理端 http://localhost:4200/admin/employees
    • 窗口 B:组长端 http://localhost:4200/wxwork/{cid}/team-leader/dashboard
  2. 同时打开同一个员工的详情面板:

    • 在管理端:点击员工 → 切换到"项目负载"
    • 在组长端:点击员工卡片 → 查看员工详情
  3. 逐一对比以下内容:

3.1.1 负载概况对比

  • 布局: 两边的布局是否一致?
  • 字体: 字体大小、粗细、颜色是否一致?
  • 间距: 元素之间的间距是否一致?
  • 图标: SVG 图标样式是否一致?
  • 颜色: 高负载/正常负载的颜色是否一致?

3.1.2 日历样式对比

  • 网格: 日历网格布局是否一致?
  • 日期: 日期数字样式是否一致?
  • 今天: 今天日期的标记样式是否一致?
  • 项目标记: 有项目日期的徽章样式是否一致?
  • 上月/下月: 灰色日期样式是否一致?
  • 按钮: "上一月"/"下一月"按钮样式是否一致?

3.1.3 请假和问卷对比

  • 请假列表: 样式是否一致?
  • 问卷卡片: 样式是否一致?
  • 图标: 图标样式是否一致?
  • 状态标记: 状态标记样式是否一致?

预期结果:

✅ 所有样式 100% 一致
✅ 无视觉差异
✅ 使用同一组件,自动保证一致性

3.2 响应式测试

  • 缩小浏览器窗口到 1366px 宽度
  • 验证: 面板布局正常,无溢出
  • 缩小浏览器窗口到 1280px 宽度
  • 验证: 面板布局正常,无溢出
  • 放大浏览器窗口到 1920px 宽度
  • 验证: 面板布局正常,不过于宽松

预期结果:

✅ 响应式布局正常
✅ 各种屏幕尺寸下都显示良好

4️⃣ 性能测试

4.1 数据加载速度

测试步骤

  1. 打开浏览器开发者工具 → Performance 标签页
  2. 开始录制
  3. 点击员工 → 切换到"项目负载"标签页
  4. 停止录制
  5. 分析性能数据

关键指标

  • 数据加载时间: < 1 秒(因为数据已预加载)
  • 组件渲染时间: < 500ms
  • 总交互时间: < 1.5 秒

预期结果:

✅ 数据加载快速(预加载生效)
✅ 组件渲染流畅
✅ 用户体验良好

4.2 数据闪烁测试

测试步骤

  1. 点击员工
  2. 立即切换到"项目负载"标签页
  3. 观察数据显示过程

验证点

  • 是否显示空数据? 应该显示加载状态,而非空数据
  • 是否有数据跳动? 应该一次性加载完成,无跳动
  • 是否有布局抖动? 应该布局稳定,无抖动

预期结果:

✅ 无空数据显示
✅ 无数据闪烁或跳动
✅ 布局稳定,无抖动

4.3 内存泄漏测试

测试步骤

  1. 打开浏览器开发者工具 → Memory 标签页
  2. 记录初始内存使用量
  3. 重复以下操作 10 次:
    • 打开员工面板
    • 切换到"项目负载"
    • 关闭面板
  4. 记录最终内存使用量
  5. 对比内存增长

验证点

  • 内存增长 < 10MB? 应该没有明显的内存泄漏
  • 内存是否会回收? 关闭面板后内存应该释放

预期结果:

✅ 无明显内存泄漏
✅ 内存正常回收

5️⃣ 错误处理测试

5.1 数据加载失败

模拟步骤

  1. 打开浏览器开发者工具 → Network 标签页
  2. 设置网络为 "Offline"
  3. 点击员工 → 切换到"项目负载"
  4. 观察错误处理

验证点

  • 是否有友好的错误提示?
  • 是否有重试按钮?
  • 错误是否被正确处理?(不崩溃)

预期结果:

✅ 错误被捕获并正确处理
✅ 显示友好的错误提示
✅ 应用不崩溃

5.2 数据不完整

模拟步骤

  1. 选择一个没有项目的员工(如客服或管理员)
  2. 切换到"项目负载"标签页
  3. 观察空状态显示

验证点

  • 是否显示空状态提示?
  • 提示文案是否清晰?(如:"暂无项目负载数据")
  • 是否显示默认值?(如:项目数为 0)

预期结果:

✅ 空状态正确显示
✅ 提示文案清晰
✅ 无 undefined 或 null 错误

6️⃣ 浏览器兼容性测试

测试浏览器

  • Chrome 最新版
  • Edge 最新版
  • Firefox 最新版(可选)
  • Safari 最新版(可选,Mac 环境)

验证点

  • 功能正常
  • 样式一致
  • 性能良好

预期结果:

✅ 主流浏览器全部兼容
✅ 无明显差异

7️⃣ 控制台日志验证

预期日志顺序

打开浏览器控制台(F12),点击员工并切换到"项目负载",应该看到:

// 1️⃣ 打开面板
🚀 [Employees] 开始打开员工信息面板: 张三 (xxxxxxxx)

// 2️⃣ 预加载数据
🔄 [Employees] 预加载员工 xxxxxxxx 的完整数据...

// 3️⃣ 项目数据加载完成
✅ [Employees] 项目数据加载完成: {
  currentProjects: 3,
  ongoingProjects: 3,
  项目列表: ["项目A", "项目B", "项目C"]
}

// 4️⃣ 日历数据生成完成
📅 [Employees] 日历数据生成完成: {
  days: 42,
  有项目的天数: 15
}

// 5️⃣ 问卷数据加载完成
📝 [Employees] 问卷数据加载完成: {
  completed: true,
  answers: 12
}

// 6️⃣ 完整数据准备完成
🎯 [Employees] 完整数据准备完成,打开面板: {
  currentProjects: 3,
  projectData: 3,
  calendarData: '✅',
  surveyData: '✅'
}

// 7️⃣ 面板已显示
✅ [Employees] 面板已显示

// 8️⃣ 切换到项目负载标签页
🔍 [employeeDetailForTeamLeader] 开始转换: {
  有employee: true,
  activeTab: 'workload',
  visible: true
}

// 9️⃣ 数据转换完成
✅ [employeeDetailForTeamLeader] 转换完成: {
  name: '张三',
  currentProjects: 3,
  hasCalendarData: true,
  hasSurveyData: true
}

验证点

  • 日志顺序正确
  • 数据完整
  • 无错误日志
  • 无警告日志

预期结果:

✅ 日志输出完整
✅ 数据流程清晰
✅ 无错误或警告

📊 测试结果汇总

功能测试

测试项 状态 备注
基本打开流程
基本信息标签页
项目负载标签页
负载概况显示
项目日历显示 ⭐ 关键测试
请假记录显示
能力问卷显示
多员工切换

样式测试

测试项 状态 备注
与组长端样式一致性
响应式布局
浏览器兼容性

性能测试

测试项 状态 备注
数据加载速度 目标: < 1s
数据闪烁测试 无闪烁
内存泄漏测试 增长 < 10MB

错误处理测试

测试项 状态 备注
数据加载失败
数据不完整

✅ 测试通过标准

必须通过(P0)

  • ✅ 所有编译错误已修复
  • ✅ 基本功能正常工作
  • ✅ 项目日历显示整个生命周期(关键)
  • ✅ 与组长端样式 100% 一致
  • ✅ 无数据闪烁
  • ✅ 无明显性能问题

应该通过(P1)

  • ✅ 错误处理友好
  • ✅ 空状态显示正确
  • ✅ 响应式布局良好
  • ✅ 浏览器兼容性好

可以通过(P2)

  • ✅ 性能优化到极致
  • ✅ 内存使用最优
  • ✅ 所有浏览器完美兼容

🎯 快速验证命令

# 1. 编译检查
cd yss-project
ng lint

# 2. 启动开发服务器
npm start

# 3. 打开浏览器
# 访问: http://localhost:4200/admin/employees

# 4. 打开控制台(F12)
# 查看日志输出

# 5. 测试流程
# - 点击任意员工
# - 切换到"项目负载"标签页
# - 验证数据显示
# - 对比组长端显示

📝 测试报告模板

测试人员

  • 姓名:
  • 日期:
  • 环境:

测试结果

  • ✅ 所有测试通过
  • ⚠️ 部分测试通过(需说明)
  • ❌ 测试未通过(需说明)

发现的问题

改进建议

总体评价

  • 功能完整性:⭐⭐⭐⭐⭐
  • 样式一致性:⭐⭐⭐⭐⭐
  • 性能表现:⭐⭐⭐⭐⭐
  • 用户体验:⭐⭐⭐⭐⭐

📌 建议:按照此清单逐项测试,确保所有 P0 和 P1 项目通过后再投入生产使用!