Files
zyt/TEST_CHECKLIST.md
T
2026-03-27 18:06:12 +08:00

5.0 KiB
Raw Blame History

首次登录修改密码功能 - 测试清单

测试前准备

  1. 执行安装脚本或 SQL,添加 is_paw 字段
  2. 设置测试账号:UPDATE la_admin SET is_paw = 0 WHERE id = 1;
  3. 确认前后端代码已更新

测试场景

场景 1:正常登录流程

步骤:

  1. 使用 is_paw = 0 的账号登录
  2. 观察是否自动跳转到修改密码页面
  3. 输入新密码(至少 6 位)
  4. 点击"确认修改"
  5. 观察是否提示"密码修改成功,请重新登录"
  6. 使用新密码重新登录
  7. 观察是否能正常进入系统

预期结果:

  • 登录后自动跳转到修改密码页面
  • 修改密码成功
  • 使用新密码能正常登录
  • 数据库中 is_paw 已更新为 1

场景 2URL 防护测试(重要!)

步骤:

  1. 使用 is_paw = 0 的账号登录
  2. 登录后会跳转到修改密码页面
  3. 在浏览器地址栏直接输入其他页面 URL(如:/workbench/index
  4. 按回车访问

预期结果:

  • 无论输入什么 URL,都会被强制跳转回修改密码页面
  • 无法绕过修改密码页面访问其他页面

场景 3:密码验证测试

步骤:

  1. 在修改密码页面输入少于 6 位的密码
  2. 点击"确认修改"

预期结果:

  • 提示"密码长度不能少于6位"

步骤:

  1. 两次输入不同的密码
  2. 点击"确认修改"

预期结果:

  • 提示"两次输入的密码不一致"

场景 4:已修改密码的用户

步骤:

  1. 使用 is_paw = 1 的账号登录
  2. 观察是否直接进入系统

预期结果:

  • 直接进入系统,不跳转到修改密码页面

步骤:

  1. 在浏览器地址栏输入 /change-password
  2. 按回车访问

预期结果:

  • 自动跳转到首页,无法访问修改密码页面

场景 5:未登录用户

步骤:

  1. 退出登录
  2. 在浏览器地址栏输入 /change-password
  3. 按回车访问

预期结果:

  • 自动跳转到登录页面

场景 6:企业微信登录

步骤:

  1. 设置企业微信绑定的管理员 is_paw = 0
  2. 使用企业微信登录
  3. 观察是否跳转到修改密码页面

预期结果:

  • 登录后自动跳转到修改密码页面
  • 修改密码流程与账号密码登录一致

场景 7:页面刷新测试(重要!)

步骤:

  1. 使用 is_paw = 0 的账号登录
  2. 跳转到修改密码页面后,刷新浏览器(F5 或 Ctrl+R)
  3. 观察页面状态

预期结果:

  • 刷新后仍然停留在修改密码页面
  • 不会跳转到其他页面

步骤(进阶测试):

  1. 使用 is_paw = 0 的账号登录
  2. 跳转到修改密码页面
  3. 在地址栏输入其他页面 URL(如 /workbench/index
  4. 按回车
  5. 观察是否跳转回修改密码页面
  6. 刷新浏览器
  7. 观察是否仍然在修改密码页面

预期结果:

  • 输入其他 URL 后被拦截,跳转回修改密码页面
  • 刷新后仍然在修改密码页面
  • 无法通过任何方式绕过

场景 8:多标签页测试

步骤:

  1. 使用 is_paw = 0 的账号登录
  2. 跳转到修改密码页面
  3. 打开新标签页,访问系统其他页面

预期结果:

  • 新标签页也会被强制跳转到修改密码页面

数据库验证

修改前

SELECT id, account, is_paw FROM la_admin WHERE id = 1;
-- 应该显示 is_paw = 0

修改后

SELECT id, account, is_paw FROM la_admin WHERE id = 1;
-- 应该显示 is_paw = 1

常见问题排查

问题 1:登录后没有跳转到修改密码页面

检查:

  • 数据库中 is_paw 字段是否为 0
  • 前端代码是否正确判断 is_paw 字段
  • 浏览器控制台是否有错误

问题 2:刷新后可以进入系统

检查:

  • 后端 AdminLogic::detail() 方法是否返回 is_paw 字段
  • 前端 getUserInfo() 方法是否更新 isPaw 状态
  • 路由守卫是否在获取用户信息后检查 isPaw
  • 浏览器控制台查看 API 返回的数据是否包含 is_paw

问题 3:可以通过 URL 绕过修改密码页面

检查:

  • permission.ts 路由守卫是否正确配置
  • userStore.isPaw 状态是否正确存储
  • 浏览器控制台查看路由守卫是否执行

问题 4:修改密码后 is_paw 没有更新

检查:

  • 后端 changeFirstPassword 方法是否正确更新数据库
  • 查看数据库确认字段值
  • 检查后端日志是否有错误

问题 5:修改密码后无法登录

检查:

  • 密码加密方式是否正确(应使用 create_password 函数)
  • 检查后端日志
  • 尝试重置密码

测试完成标准

  • 所有 8 个测试场景都通过
  • 数据库字段正确更新
  • 无法通过任何方式绕过修改密码页面
  • 密码验证规则正常工作
  • 修改密码后能正常登录使用系统

性能测试

  • 路由守卫不影响正常用户的访问速度
  • 登录流程响应时间正常(< 2 秒)
  • 修改密码操作响应时间正常(< 1 秒)