软件测试之登录功能测试
梳理一下验证登录的流程判断逻辑
前端
- 用户名,密码,验证码是否为空
- 密码是否符合规则(特殊字符,长度,大小写,数字)
- 验证码是否是随机生成
服务端
- 验证码是否正确(对应的时间戳是否过期)
- 账户是否存在(已经注册,已经注销)
- 密码是否正确(并且要记录下来,密码连续输入错达几次,就会被锁住,锁住的时长,这样会有两种情况:等待锁住时长完毕,再次输入,或者提高验证等级,账号+密码+验证码+手机号+短信等的方法)
基本的功能测试点
- 输入正确的用户名和密码,登录成功
- 输入错误的用户名和密码,登录失败
- 输入正确的用户名,错误的密码,是否提示密码错误
- 输入错误的用户名,正确的密码,是否提示用户名错误
- 输入用户名和密码都有错误,是否有提示
- 输入用户名和密码为空时,是否有提示
- 输入未注册的用户名和密码,是否提示先注册,再登录
- 输入已经注销的用户名和密码,是否提示,提示是否友好
- 密码框是否加密显示
- 用户名是否支持数字,中文,英文,特殊字符
- 用户名是否有长度限制
- 密码是否支持数字,中文,英文,特殊字符
- 密码是否长度限制
- 密码是否大小写区分
- 密码设置过于简单时(比如123456)是否提示,等级不够,建议修改密码
- 密码存储方式,是否加密
- 登录功能是否需要输入验证码
- 验证码的有效时间
- 验证码有效时间外是否还有效,还能否登录成功
- 验证码输入错误,是否提示,提示是否友好
- 验证码是否容易识别
- 验证码的换一个或刷新的功能是否可以用
用户角度
是否是不同人登录不同的权限
页面测试
- 登录页面显示是否正常,是否高度还原设计图
- 文字和图片是否显示正常
- 相应的提示信息是否正确
- 按钮的设置和排列是否正确
- 页面是否简洁,是否符合用户的使用规则
- 点击用户名的输入框,焦点是否定位正确
- 首次登录相应的输入框是否为空
- 首次登录输入框有默认文案,点击输入框,文案是否消失
- 二次登录,并且首次登录的时候选择记住密码,输入框是否有内容
- 登录按钮是否可用
- 重置按钮是否可用
- 页面的前进按钮是否可用
- 页面的退出按钮是否可用
- 页面的刷新按钮是否可用
兼容性测试:不同的浏览器,不同的操作系统,不同的分辨率下界面是否正常显示
安全测试
- 不登录:浏览器中直接输入登录后的地址,是否可以进入 登录成功后生成的Cookie,多久失效
- 用户名和密码是否通过加密的方式,发给web服务器
- 用户名和密码的验证,不仅仅是客户端JavaScript验证,而且要服务器端验证
- 用户名和密码的输入框,应当防止SQL注入(就是通过利用一些查询语句的漏洞,将sql语句传递到服务器解析并执行的一种攻击手段)
用户登录时执行的sql语句
Select user_id,user_type,email From users Where user_id=‘用户名’ And password=‘密码’
由于网站后台数据库查询未对单引号‘’进行过滤,当输入用户名admin和密码‘1’or‘1’时,执行的SQL语句为:
Select user_id,user_type,email From users Where user_id=’admin’ And password=‘1’or‘1’
那么就意味着输入用户名admin,输入密码‘1’or‘1’都可登录成功
这就是SQL注入
性能测试
- 单用户登录系统的响应时间是否符合“3-5-8”原则 (3-5-8:小于3秒是很好,3-5是好,超过8秒用户就容易流失)
- 大量并发用户登录,响应时间是多少,是否会宕机,无法登录
其他测试
- 用户的session过期后,返回重新登录,是否还能返回前session过期的页面/还是重新从登录开始
- 用户名和密码的输入框是否支持快捷键,复制,粘贴等
- 如果有web和app,是否同一用户名可以同时登录 app登录,是否判断网络