跳转至

登录功能测试案例

登录是大多数系统的入口,测试时不能只测“账号密码正确能登录”。它还涉及参数校验、错误提示、安全限制、会话状态、权限跳转等内容。

需求背景

用户可以使用手机号和密码登录系统。连续输错 5 次密码后账号锁定 15 分钟。登录成功后进入首页,并保持登录状态。

测试点拆解

维度 测试点
正常流程 正确手机号和密码登录成功
参数校验 手机号为空、密码为空、手机号格式错误
账号状态 未注册、已禁用、已锁定、已注销账号
密码错误 输错 1 次、连续输错 5 次、锁定后再登录
验证码 是否需要验证码、验证码错误、验证码过期
会话 登录后刷新、关闭浏览器再打开、退出登录
安全 密码是否明文传输、错误提示是否泄露账号是否存在
兼容性 Chrome、Edge、移动端浏览器基础验证

用例示例

编号 测试点 步骤 预期结果
LOGIN-001 正常登录 输入已注册手机号和正确密码,点击登录 登录成功,进入首页,显示用户昵称
LOGIN-002 密码错误 输入正确手机号和错误密码 登录失败,提示账号或密码错误
LOGIN-003 手机号格式错误 输入 12345 和任意密码 前端提示手机号格式不正确或接口返回参数错误
LOGIN-004 密码为空 手机号正确,密码为空,点击登录 提示密码不能为空,不进入首页
LOGIN-005 连续输错 5 次 连续提交 5 次错误密码 账号被临时锁定,提示锁定时间
LOGIN-006 锁定期间登录 锁定后输入正确密码登录 不允许登录,提示账号锁定
LOGIN-007 退出登录 登录成功后点击退出,再访问首页 跳转登录页,不能继续访问首页

接口校验

登录接口至少检查:

  • HTTP 状态码和业务码。
  • token 是否返回。
  • token 过期时间是否合理。
  • 错误密码是否不会返回 token。
  • 连续失败次数是否被记录。
  • 锁定状态是否正确写入数据库或缓存。

测试数据准备

数据 用途
正常账号 验证登录成功、刷新页面、退出登录
密码错误账号 验证错误提示和失败次数累计
禁用账号 验证账号状态限制
锁定账号 验证锁定期间不能登录
未注册手机号 验证错误提示是否泄露账号状态

新手练习时至少准备两个账号:一个正常账号,一个用于反复输错密码的账号,避免把正常账号锁住影响后续测试。

执行步骤示例

  1. 先用正常账号登录,确认主流程可用。
  2. 再验证手机号为空、格式错误、密码为空等参数校验。
  3. 连续输入错误密码 5 次,观察页面提示和接口响应。
  4. 锁定后立刻输入正确密码,确认不能绕过锁定。
  5. 退出登录后访问首页或个人中心,确认需要重新登录。
  6. 用 Postman 重放登录接口,检查失败时不会返回 token。

数据校验示例

-- 查看用户状态和失败次数,字段名以实际项目为准
SELECT id, phone, status, login_fail_count, locked_until
FROM users
WHERE phone = '13800138000';

-- 查看登录日志
SELECT user_id, login_result, login_ip, created_at
FROM login_logs
WHERE user_id = 10001
ORDER BY created_at DESC;

缺陷示例

字段 内容
标题 连续输错 5 次密码后账号未被锁定
前置条件 用户账号状态正常,锁定规则为连续输错 5 次锁定 15 分钟
复现步骤 连续 5 次输入错误密码后,再输入正确密码登录
实际结果 正确密码可以登录成功
期望结果 账号被锁定,15 分钟内不能登录
影响 暴力破解风险增加

容易漏测

  • 只测错误密码,不测账号锁定。
  • 只看页面提示,不看接口是否返回敏感信息。
  • 登录后不验证刷新页面和退出登录。
  • 不验证禁用账号、注销账号、未注册账号。
  • 忽略移动端输入法、大小写、空格复制粘贴。

复盘问题

  • 账号不存在时,应该提示“账号不存在”还是“账号或密码错误”?为什么?
  • 登录失败次数应该存数据库还是缓存?各有什么风险?
  • token 过期后,前端应该怎么处理?