软件测试面试常问,主要考察你对接口测试相关知识的掌握程度?

在软件测试面试中经常会被问到关于cookies、session、token的相关问题,在做接口测试时,心里不免会有一些疑惑,一会 Cookie,一会又 Session,接口有时还需要带着 Token,这三个到底是什么关系呢?

我们都知道 HTTP 协议是无状态的,所谓的无状态就是客户端每次想要与服务端通信,都必须重新与服务端链接,意味着请求一次客户端和服务端就连接一次,下一次请求与上一次请求是没有关系的。

这种无状态的方式就会存在一个问题:如何判断两次请求的是同一个人?就好比用户在页面 A 发起请求获取个人信息,然后在另一个页面同样发起请求获取个人信息,我们如何确定这俩个请求是同一个人发的呢?

为了解决这种问题,我们就需要一种方式知道发起请求的客户端是谁?此时,cookie、token、session 就出现了,它们就可以解决客户端标识的问题,在扩大一点就是解决权限问题。

cookie

cookie是访问网站时,由网站服务器返回的一种标记为cookie 类型数据,cookie 数据存放在客户的浏览器(客户端)上;cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。

作用:通过cookie直接获取在线状态

Session会话

  1. 当登录成功后,session第一次被创建,一个唯一的标识被存储于本地的cookie中的sessionid中。

  2. 再次打卡浏览器后回去数据库查session的id去比对

用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建对应的 Session,请求返回时将此 Session 的唯一标识信息 SessionID 返回给浏览器,浏览器接收到服务器返回的 SessionID 信息后,会将此信息存入到 Cookie 中。

区别:

1.session在服务器端,cookie在客户端(浏览器)

2.session默认被存在在服务器的一个文件里(不是内存)

3.session的运行依赖session id,而session id 是存在cookie 中的,也就是说,如果浏览器禁用了cookie ,同时session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)

session 是基于 cookie 实现的,它们两个主要有以下特点:

session 比 cookie 更加安全,因为它是存在服务端的,cookie 是存在客户端的。

cookie 只支持存储字符串数据,session 可以存储任意数据。

cookie 的有效期可以设置较长时间,session 有效期都比较短。

session 存储空间很大,cookie 有限制。

系统想要实现鉴权,可以单独使用 cookie,也可以单独使用 session

cookie+session 是实现认证的一种非常好的方式,但是凡事都有两面性,它们实现的认证主要有以下缺点:

增加请求体积,浪费性能,因为每次请求都会携带 cookie。

增加服务端资源消耗,因为每个客户端连接进来都需要生成 session,会占用服务端资源的。

容易遭受 CSRF 攻击,即跨站域请求伪造。

那么为了避免这些缺点,token 方式的鉴权出现了。

Token

token 的组成:

从数据库中的session的读取会导致网站性能慢,影响数据库水平扩容等,从而产生了Token。

Token包含数据信息(data)和验证信息(HMAC)的整体数据结构,放在http协议里返回给客户端。

数据信息改变,验证信息也会跟着改变,存储在客户端,不需要对数据库的访问。

总结

虽然前面解释了 cookie、session、token的相关内容,它们的目的都是一样的:鉴权和认证。

在这里插入图片描述

 

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

### 软件测试常见面试题及答案 #### 什么是单元测试? 单元测试是一种验证单个模块或函数是否按预期工作的测试方法。它通常由开发人员编写并执行,目的是确保代码中的最小可测试部分能够正常运行[^1]。 ```python def add(a, b): return a + b # 单元测试示例 assert add(2, 3) == 5 assert add(-1, 1) == 0 ``` #### 集成测试的作用是什么? 集成测试用于检测不同模块之间的接口和交互是否存在错误。它的目标是发现多个组件组合在一起时可能出现的功能性和性能上的问题[^1]。 #### 系统测试主要关注点有哪些? 系统测试是对整个系统的全面检验,旨在确认产品是否满足所有的功能性、非功能性需求以及业务流程的要求。此阶段会模拟真实环境下的操作来评估产品的整体表现。 #### 回归测试的意义何在? 回归测试是为了确保修改后的代码不会影响到原有功能的一种测试手段。每当有新版本发布或者修复缺陷之后都需要进行此项工作以保障产品质量稳定不变[^1]。 #### 冒烟测试的目的为何? 冒烟测试是在较短时间内快速验证主要功能是否可以正常使用的过程。如果这些核心功能无法实现,则无需继续深入其他方面的详细检查。 #### 用户验收测试(UAT)如何开展? 用户验收测试是由最终客户代表来进行的最后一轮正式审查活动;他们依据预先定义好的标准清单逐一核验应用程序能否达到合同约定条件,并决定项目交付与否。 #### 技术难题解决策略 当面临技术挑战时,可以通过仔细阅读相关资料文件找出潜在疑虑之处并与团队成员讨论交流寻求解决方案;同时也要善于利用已有经验积累尝试多种途径解决问题,比如查阅官方文档、咨询同事专家意见或是借助互联网资源寻找灵感启发[^2]。 #### 黑盒测试的概念解释 黑盒测试是指仅基于输入输出关系而不关心具体实现细节地去考察某个对象的行为特征的方法论之一 。在这种模式下 , 测试者并不了解被测物内部是如何运作 的 —— 只知道给定某些特定条件下应该得到什么样的结果作为反馈信息即可完成相应任务处理过程 [^3]. #### 白盒测试的特点描述 相对于上面提到过的那种方式而言 , 这里所指代的内容则正好相反 : 它要求参与者必须充分理解源码结构布局情况才能有效开展后续一系列动作步骤 . 其中包括但不限于路径覆盖度量指标计算分析等方面的知识技能储备水平提升训练计划安排等等相关内容事项说明如下所示 : - **语句覆盖率**: 至少访问每一个可执行语句至少一次. - **分支/判定覆盖率**: 执行所有可能的真假判断分支. 通过以上两种类型的对比可以看出它们各自适用范围有所不同因此需要根据实际情况灵活运用选择合适自己的那一款工具箱才行哦 ! --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值