用户登录需求分析:
显式功能性需求(Functional requirement)的含义从字面上就可以很好地理解,指的是软件本身需要实现的具体功能, 比如“正常用户使用正确的用户名和密码可以成功登录”、“非注册用户无法登录”等,这都是属于典型的显式功能性需求描述。
非功能性需求:从软件测试的维度来看,非功能性需求主要涉及安全性、性能以及兼容性三大方面。
以下具体分析:
一、界面测试
1、布局是否合理,TextBox和按钮是否对齐
2、TextBox和按钮的长度,高度是否符合要求
3、界面的设计风格是否与UI的设计风格统一
4、界面中的文字简洁易懂,没有错别字
5、默认鼠标焦点定位
二、功能测试
(1)输入正确的用户名和正确的密码
(2)输入正确的用户名和错误的密码
(3)输入错误的用户名
PS:用户名和密码的组合可以使用决策表,以下2表格式都可以
逻辑功能模型的决策表
1 | 2 | 3 | 4 | |
---|---|---|---|---|
输入 | 正确的用户名 | 正确的用户名 | 错误的用户名 | 错误的用户名 |
错误的密码 | 正确的密码 | 错误的密码 | 正确的密码 | |
输出 | 登录失败 | 登录成功 | 登录失败 | 登录失败 |
结合初始化的决策表分析,用户名错误不受密码影响,3和4可以合并
序号 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|
条件 | 用户名正确吗 | Y | Y | N | N |
条件 | 密码正确吗 | N | Y | N | Y |
动作 | 登录失败 | Y | Y | Y | |
动作 | 登录成功 | Y |
(4)用户名和密码含前中后空格
(5)用户名和密码都不输入
(6)只输入用户名,密码为空:提示密码不能为空,焦点定位到密码输入框
(7)用户名为空,只输入密码:返回登录页面,焦点定位到用户名输入框
(8)输入正确的用户名和密码,不区分大小写(是否大小写敏感)
(9)用户名和密码包括特殊字符,尤其是单引号、双引号
(10)用户名和密码输入框长度校验(前后端并行):输入太短或者太长
(11)已删除/已停用/未激活的用户名和密码登录
(12)光标在密码行时,大写锁定是否有提示
(13)显示和隐藏密码(密码文本框上有个眼睛的图标)
(14)登录时,当页面刷新或重新输入数据时,验证码是否更新
1)牵扯到验证码的,考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用
2)如果验证码具有时效性,需要分别验证时效内和时效外验证码的有效性;
(15)记住用户名
(16)登录成功后能否能否跳转到正确的页面
(17)登录页面中的注册、忘记密码,登出用另一帐号登录等链接是否正确
(18)页面默认焦点是否定位在用户名的输入框中,是否支持Tab键(从左往右、从上到下顺序)、回车键功能,依次切换焦点(用户名---密码---登录)
(19)后台系统创建的用户第一次登录成功时,是否提示修改密码
待讨论:
(1)用户名很长,但不超过字段限制,是否有问题?
(2)口令超过长度,是否有效
三、安全测试
1、密码框显示*,密码是否都可以在页面源码模式下被查看,以及密码强弱性校验
2、是否支持复制粘贴
3、在后台存储与网络传输中是否加密
4、不登录直接输入后台页面地址能否访问(登录后访问内部网页,复制网址到别的浏览器进行访问),验证是否会重新定向到用户登录界面
5、允许登录失败次数(密码错误次数是否有限制)
超过最大次数限制后
(1)需要对该账号或者该IP进行临时锁定,到达解锁条件后再进行解锁。
(2)分别输入正确的密码和错误的密码再次登录
6、浏览器前进后退,是否需要重新登录
7、是否可记住密码
(1)登录失败后,不能记录密码的功能
(2)登录成功后,记住的密码,在保存是否加密 ,是否有有效期,过期之后是否会清空密码
8、用户名或密码输入错误的提示语,避免单独提示用户名错误、密码错误,建议使用模糊提示
见下图,假设黑客用1000个用户名先去尝试登录,结果999个都提示不存在,有1个没提示了,那就知道用这1个用户名是有效的,剩下的就是暴力破解密码了
9、登录超时时间(登录后在一段时间内没有进行任何操作,是否需要重新登录),尤其是一些购物网站、金融网站等涉及金额方面的
10、用户名进行SQL注入,验证系统的返回页面
如输入 ' or 1=1 or '=,提示登录失败,弹出错误提示信息
11、输入特殊字符串:
null,NULL,javascript,<script>,</script>,<title>,<html>,<td>
12、XSS跨网站脚本攻击(输入脚本函数),验证系统行为是否被篡改
<script>alert("abc")</script>,document.write("abc"),<b>hello</b>
13、登录互斥性:
(1)同一个用户不同电脑或者多个终端登录,前一个登录是否失效?---如QQ、支付宝
(2)同一用户多个浏览器登录
(3)多个浏览器登录,用户是否串号
14、用户登录过程中log中是否有个人信息明文打印
15、是否可以用抓包工具抓到的请求包直接登录
16、截取到的token等信息,是否可以在其他终端上直接使用,绕开登录。token过期时间校验
17、登录后输入登录URL,是否还能再次登录?如果能,原登录用户是否变得无效
18、登录用户限制:
比如同时支持10个用户登录,同时9个或者11个用户登录是否正常或者提示信息正确
比如不允许用户同时登录
19、数据库设计和数据操时候合理
四、性能测试
1、单用户登录
(1)响应时间是否小于 3 秒
(2)后台请求数量是否过多
2、高并发场景下
(1)用户登录的响应时间是否小于 5 秒
(2)服务端的监控指标是否符合预期
3、高集合点并发场景下,是否存在资源死锁和不合理的资源等待
4、长时间大量用户连续登录和登出,服务器端是否存在内存泄漏
五、兼容性测试
验证登录页面的显示以及功能正确性
1、不同浏览器
2、相同浏览器的不同版本
3、不同移动设备终端的不同浏览器
4、不同分辨率的界面
最后,欢迎各位补充