测试用例设计实例:从登录功能看如何写出靠谱的用例

一个常见的登录页面测试场景

开发同事刚提测了一个新的登录页面,界面简单,就两个输入框:用户名和密码,外加一个“登录”按钮。看起来没啥复杂的,但真要写测试用例,很多人就开始犯难了——到底该测哪些点?怎么避免漏掉关键问题?

其实,测试用例设计不是靠拍脑袋,而是有套路可循。拿这个登录功能来说,我们可以从功能逻辑、边界情况、异常输入几个方向入手。

功能正常流程覆盖

最基础的就是验证正确账号密码能否成功登录。比如:

  • 输入已注册的用户名和正确的密码,点击登录,应跳转到首页
  • 登录成功后,检查是否生成了有效的会话(Session)

这类用例虽然简单,但必须写清楚前置条件和预期结果,避免开发理解偏差。

输入校验类测试点

用户不会按你设想的方式操作,他们可能留空、输错、甚至粘贴一堆奇怪字符。所以得考虑各种异常输入:

  • 用户名为空,点击登录,提示“请输入用户名”
  • 密码为空,点击登录,提示“请输入密码”
  • 用户名格式错误(如包含特殊符号 @#%),提示格式不合法
  • 密码长度超过限制(比如系统只允许20位),应截断或报错

这些规则通常在需求文档里有说明,如果没有,就得主动问清楚,别自己猜。

边界值和等价类划分实战

比如密码长度要求是6-20位,那就要测几个关键点:

测试用例1:输入5位密码 → 预期:提示“密码长度需为6-20位”
测试用例2:输入6位密码 → 预期:允许提交
测试用例3:输入20位密码 → 预期:允许提交
测试用例4:输入21位密码 → 预期:提示超长或自动截断

这就是典型的边界值分析法。等价类则把输入分成“有效类”和“无效类”,每类选代表值测试,不用穷举所有可能。

安全与防呆设计也不能少

实际项目中,很多问题出在细节。比如:

  • 连续输错5次密码,账户是否被锁定?
  • 密码框是否隐藏明文显示(用了圆点遮掩)?

  • 是否支持回车键登录?这对键盘党很友好
  • 点击“忘记密码”链接,能否跳转到找回页面?

还有个小细节:用户在密码框粘贴内容时,有些浏览器会弹出钥匙图标,这是正常的,但得确认粘贴后内容没被意外修改。

接口层面的测试思路

如果前端只是个壳,真正验证在后台,那还得考虑接口行为:

场景:发送POST请求 /api/login
参数:username=admin, password=123456
预期:返回 {"code": 0, "msg": "success", "token": "xxx"}
异常:密码错误时,返回 {"code": 401, "msg": "用户名或密码错误"}

这类用例适合用 Postman 或自动化脚本跑,手动测几轮也得覆盖到。

别忘了兼容性和体验问题

同一个页面,在 Chrome 能正常登录,在 Safari 却卡住不动,这种情况并不少见。所以还得列些环境组合:

  • Chrome 最新版 + Windows 11
  • Safari 最新版 + macOS
  • 微信内置浏览器 + Android 手机

特别是移动端,软键盘弹起会不会挡住登录按钮?这也是影响体验的关键点。