【测试基础】一、你真的会测试“用户登录”吗?

简介: 【测试基础】一、你真的会测试“用户登录”吗?

相信不少人参加面试的时候,会遇到设计测试的题目。比如面试官问:给你一个“用户登录”功能,你会如何测试它?


1268169-20210709234240579-2099078833.png


what?瞧不起谁呢?用户登录这也忒老生常谈了,看我用【等价类】和【边界值】快速搞定它。


于是,拿起笔就开始写测试用例:


1. 输入已注册的用户名和正确的密码,验证是否登录成功
2. 输入已注册的用户名和不正确的密码,验证是否登录失败,并且提示信息正确
3. 输入未注册的用户名和任意密码,验证是否登录失败,并且提示信息正确
4. 用户名和密码两者都为空,验证是否登录失败,并且提示信息正确
5. 用户名和密码两者之一为空,验证是否登录失败,并且提示信息正确
6. 如果登录功能启用了验证码功能,在用户名和密码正确的前提下,输入正确的验证码,验证是否登录成功
7. 如果登录功能启用了验证码功能,在用户名和密码正确的前提下,输入错误的验证码,验证是否登录失败,并且提示信息正确


搞定收笔,自信地递给面试官看,只见面试官面带微笑,继续问到:还有要补充的吗?


1268169-20210709235343175-1476946600.png


在我看来,上来就直接写测试用例,可能不是最好的表达方式。


如果能先概述一下你的设计思路、考虑的维度,再开始逐个用例的设计,应该会更合适些。这样不仅面试官听的清楚,接下来你自己设计测试用例的时候也会有条不紊。


通常主要有 2 个大类:功能性需求非功能性需求


一、功能性需求


其实就是软件本身需要实现的具体功能。上述列举的7条测试用例,就是属于功能性需求。通常它们是这个功能的最直接体现。


在设计这种用例的时候,我们基本会用【等价类】和【边界值】这两种方法。


二、非功能性需求


很多时候,仅做了功能性需求的测试覆盖还是不够的,因为还存在一些其他"隐藏"的需求,比如:安全性性能兼容性。这些往往是决定软件质量关键因素


这些需求往往不容易优先想到,需要仔细深入场景、设身处地的考虑才能很好的构思出来。


1. 安全性测试


考虑登录的安全性,可能还需要增加以下的测试用例:


1. 用户密码后台存储是否加密
2. 用户密码在网络传输过程中是否加密
3. 密码是否具有有效期,密码有效期到期后,是否提示需要修改密码
4. 不登录的情况下,在浏览器中直接输入登录后的 URL 地址,验证是否会重新定向到用户登录界面
5. 密码输入框是否不支持复制和粘贴
6. 用户名和密码的输入框中分别输入典型的“SQL 注入攻击”字符串,验证系统的返回页面
7. 用户名和密码的输入框中分别输入典型的“XSS 跨站脚本攻击”字符串,验证系统行为是否被篡改
8. 连续多次登录失败情况下,系统是否会阻止后续的尝试以应对暴力破解
9. 同一用户在同一终端的多种浏览器上登录,验证登录功能的互斥性是否符合设计预期
10. 同一用户先后在多台终端的浏览器上登录,验证登录是否具有互斥性


2. 性能测试


考虑到性能,可能还需要增加以下的测试用例:


1. 单用户登录的响应时间是否小于 3 秒
2. 单用户登录时,后台请求数量是否过多
3. 高并发场景下用户登录的响应时间是否小于 5 秒
4. 高并发场景下服务端的监控指标是否符合预期
5. 高集合点并发场景下,是否存在资源死锁和不合理的资源等待
6. 长时间大量用户连续登录和登出,服务器端是否存在内存泄漏


3. 兼容性


1. 不同浏览器下,验证登录页面的显示以及功能正确性
2. 相同浏览器的不同版本下,验证登录页面的显示以及功能正确性
3. 不同移动设备终端的不同浏览器下,验证登录页面的显示以及功能正确性
4. 不同分辨率的界面下,验证登录页面的显示以及功能正确性


这下方方面面应该都全了,看面试官你还怎么说?


结果面试官仍然问:你还有要补充的吗?


1268169-20210710005421529-1485284724.png


三、测试的不可穷尽性


这时候,就需要表述一下测试的不可穷尽性了。我不知道各位童鞋是怎么样的,反正我不敢说我设计的测试一定是无遗漏的,也就是说不可能做到穷尽测试


什么是穷尽测试:指包含了软件输入值和前提条件所有可能组合的测试方法,完成穷尽测试的系统里应该不残留任何未知的软件缺陷。


通常在实际工作中,测试由于受限于时间成本和经济成本,是不可能去穷尽所有可能的组合的,而是采用基于风险驱动的模式,有所侧重地选择测试范围设计测试用例,以寻求缺陷风险和研发成本之间的平衡。


所以,这也是为什么要在测试前,与项目成员确定好本次的测试范围。

相关文章
|
3月前
|
测试技术 数据安全/隐私保护 Python
自动化测试项目实战笔记(四):测试用户登录(账号密码错误,成功,出现弹框等情况)
本文介绍了使用Selenium进行自动化测试时如何测试用户登录的不同情况,包括账号密码错误、登录成功以及处理登录时出现的弹框,并提供了相应的Python代码实现。
152 0
自动化测试项目实战笔记(四):测试用户登录(账号密码错误,成功,出现弹框等情况)
|
测试技术 数据安全/隐私保护
《软件测试52讲》读书笔记 —— 用户登录
《软件测试52讲》读书笔记 —— 用户登录
126 0
《软件测试52讲》读书笔记 —— 用户登录
|
28天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
90 11
|
2月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
76 3
|
3月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
94 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
4月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
290 7
Jmeter实现WebSocket协议的接口测试方法
|
4月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
299 3
快速上手|HTTP 接口功能自动化测试
|
4月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
65 5
|
3月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
53 0
|
5月前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~

热门文章

最新文章