登录页面测试
在面试测试工程师相关的岗位时,一般面试官都会使用用户登录页面的测试来考察面试者的测试用例设计能力以及测试思维。
初级
一个看似简单的测试用例设计题,从你的回答就能得出你的测试用例设计功底。
初级的测试工程师可能会想到以下测试用例:
(1)什么都不输入,验证是否登录失败,并且提示信息正确;
(2)输入正确的用户名,正确的密码,验证是否登录成功;
(3)输入正确的用户名和错误的密码,验证是否登录失败并且提示信息正确;
(4)输入错误的用户名和任意密码,验证是否登录失败并且提示信息正确;
(5)用户名和密码两者之一为空,验证是否登录失败并且提示信息正确;
(6)若启用了验证码功能,在用户名和密码都正确的情况下,输入正确的验证码,验证是否登录成功;
(7)若启用了验证码功能,在用户名和密码都正确的情况下,输入错误的验证码,验证是否登录失败并且提示信息正确;
有经验
嗯,以上这些测试用例已经覆盖了主要的功能测试场景,但是若要做的更好,还可以对以上测试用例进行扩充,一个有经验的测试工程师还会考虑以下测试用例:
(1)用户名和密码是否大小写敏感;
(2)用户名和密码是否有字符长度和字符内容限制;
(3)页面上的密码框是否加密显示;
(4)后台系统创建的用户第一次登录成功后,是否提示记住密码;
(5)忘记用户名和忘记密码的功能是否可用;
(6)若登录功能需要验证码,点击验证码图片是否更换验证码,更换后的验证码是否可用;
(7)刷新页面是否会刷新验证码;
(8)若验证码有时效性,需要分别验证时效内和时效外的有效性;
(9)用户登录成功但会话超时后,继续操作是否重定向到用户登录界面;
(10)不同级别的用户,登录系统后的权限是否正确;
(11)页面默认的焦点是否定位在用户输入框中;
(12)快捷键是否可以正常使用;
虽然添加这些测试用例之后,测试覆盖了提高了很多,但你可以发现,以上这些测试用例的设计都是围绕显示功能性需求的验证展开的,即直接针对用户登录这一功能进行验证和测试的。
进阶
除了显示的功能性测试验证外,非功能性需求即隐式功能性需求也是至关重要的。
显示功能性需求指的是软件本身需要实现的具体功能,而隐式功能性需求从软件测试的维度来看,主要涉及安全性、性能及兼容性三大方面。
安全性测试用例包括:
(1)用户密码后台存储是否加密;
(2)用户密码在网络传输过程中是否加密;
(3)密码是否具有有效期,密码有效期到期后,是否提示修改密码;
(4)不登录的情况下,在浏览器中直接输入登录后的URL地址,验证是否会重新定向到用户登录界面;
(5)密码输入框是否不支持复制和粘贴;
(6)密码输入框输入的密码是否都可以在页面源码模式下被查看;
(7)用户名和密码的输入框中分别输入典型的“SQL注入攻击”字符串,验证系统的返回页面;
(8)连续多次登录失败的情况下,系统是否会阻止后续的尝试以应对暴力破解;
(9)同一用户在同一终端的多种浏览器 登录,验证登录功能的互斥性是否符合设计预期;
(10)同一用户先后在多台终端的浏览器上登录,验证登录是否具有互斥性;
性能压力测试用例包括:
(1)单用户登录的响应时间是否小于可容忍的时间,比如3秒;
(2)单用户登录时,后台请求数量是否过多;
(3)高并发场景下,用户登录的响应时间是否小于5秒;
(4)高并发场景下,服务端的监控指标是否符合预期;
(5)高集合点并发场景下,是否存在资源死锁和不合理的资源等待;
(6)长时间大量用户连续登录或退出,服务器端是否存在内存泄漏;
兼容性测试用例包括:
(1)不同浏览器下,验证登录页面的显示以及功能正确性;
(2)相同浏览器的不同版本下,验证登录页面的显示以及功能正确性;
(3)不同移动端的不同浏览器下,验证登录页面的显示以及功能正确性;
(4)不同分辨率的界面下,验证登录页面的显示以及功能正确性;
虽然以上的这些测试用例覆盖面很广,但是依然不够全面,也就是测试的不可穷尽性,绝大多数情况下是无法做到“穷尽测试”的,所谓穷尽测试,是指包含了软件输入值和前提条件所有可能组合的测试方法,即测试完成后不存在任何未知的缺陷。但是,实际情况下,测试受限于时间和经济成本,是不可能去穷尽所有可能的组合的,而是采用基于风险驱动的模式,有所侧重的选择测试范围和设计测试用例,以寻求缺陷风险和研发成本的平衡。
从上面的分析可以看出,一道看似简单的测试用例设计题,一点也不简单,它需要的是测试工程师具有广泛的知识面,需要对被测试系统的设计具有较深入的理解,需要深入掌握安全攻击的基本原理,掌握性能测试的基本设计方法。
来源:CSDN
作者:BANANAML
链接:https://blog.csdn.net/BANANAML/article/details/103610132