目录
- 说明三次握手
• 第一次握手:主机A发送位码为syn=1,随机产生seq number=200的数据包到服务器,主机B由SYN=1知道,A要求建立联机;
• 第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq number=500的包;
• 第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。
- 一次完整的HTTP请求
客户端与服务端建立完整Tcp连接
客户端向服务端发送request请求
服务端reponse响应回复客户端请求
- 响应状态码有哪些
201 创建成功
204 Not Content :删除资源
200 请求成功
301 永久重定向
302 临时重定项
400 Bad Request 客户端请求错误
401 Unauthorized ⽆权限访问该系统
403 Forbidden 有权限但是禁⽌访问
404 请求的资源不存在
405 请求方法错误
415 请求头错误
500 服务器内部错误
504 GateWay Timeout
• 1xx -- 信息提示(表示临时的响应。客户端在收到常规响应之前,准备接收一个或多个1xx响应)
• 2xx -- 成功(表明服务器成功地接受了客户端请求)
• 3xx -- 重定向(客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求)
• 4xx -- 客户端错误(发送错误,客户端有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份证验证信息)
• 5xx -- 服务器错误
- 什么是COOKIE,SESSION,TOKEN?以及具体流程?
cookie -- 客户端会话技术 cookie 保存在客户端,单个cookie保存的数据不能超过4K, 一般来说一个站点最多保存20个cookie。缺点安全性较差。
请求流程:以登录为例,客户端登录成功后;服务端得到客户端请求,会在响应头中set—cookie带上cookie的值,发送给客户端;客户端把cookie存储在本地;客户端会在下次请求中的请求头带上cookie,发送给服务端;服务端会将收到的cookie与存储在本地的cookie进行对比,如果一致进入页面,不一致重定向。
session -- session是基于cookie实现的,session存储在服务器端, sessionld会被存储到客户端的cookie中,安全性较高。缺点会占用服务器的性能。用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建对应的Session请求返回时将此Session的唯一标识信息 SessionID 返回给浏览器,浏览器接收到服务器返口的SessionID信息后,会将此信息存入到Cookie中,同时Cookie记录此SessionlD属于哪个域名,当用户第二次访问服务器的时候,请求会自动判断此域名下是否存在Cookie信息,如果存在自动将Cookie信息也发送给服务端,服务端会从Cookie中获取 SessionlD,再根据SessionlD查找对应的Session信息,如果没有找到说明用户没有登录或者登录失效,如果找到Session证明用户已经登录可执行后面操作。
请求流程:以登录为例,客户端登录成功后,就有了session,session是存储在服务端;服务端会生成sessionID,sessionID会通过响应头中set—cookion把sessionID发送给客户端;客户接收到sessionID;再下个请求中(个人主页为例)客户端在请求头中的cookie带上服务端发送的sessionID,发送给服务端;服务端接接收到客户端发送来的sessionid,与存储在服务端的sessionid进行对比,如果一致,则允许访问个人主页,如果不一致,则重定向登录页面。
token -- token本质上是session原理实现的,只是我们把它称作一个令牌 ,令牌 token保存在客户端。Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长度的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。。
请求流程:以登录为例,客户端登录成功后;服务端会签发一个token值,并把这个token返回给客户端;客户端获取到token后,客户端会把token存储起来;客户端再次向服务端发送请求的时候,需要带着服务端签发的token,服务端接收到客户端发送的token会进行校验,校验通过后服务端会返回给客户端请求响应数据。
- HTTP和HTTPS的区别?
- https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- HTTP 页面响应比HTTPS快,主要是因为HTTP使用TCP三次握手建立连接,客户端和服务端需要交换三个包;而HTTPS除了TCP的三个包 还需要加上SSL的9个包,一共是12个包
- http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
- HTTP协议的特点是什么?
1)HTTP是无连接
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
2)HTTP是媒体独立的
这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
3)HTTP是无状态
HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line);请求头部(header);空行;请求数据。
HTTP响应由四个部分组成,分别是:状态行;消息报头;空行;响应正文。
- SOAP和REST的区别?
SOUP:通过共享XML文档进行通信;仅支持XML格式;不支持缓存;SOAP比REST慢;SOAP基于HTTP进行封装。
REST:- 基于网络的软件架构的服务架构和设计 - 支持不同的数据格式 - 支持缓存 - 比SOAP更快 - REST客户端就像浏览器并使用应用程序必须适合的标准方法 - REST使用HTTP标头来保存元信息
- GET和POST的区别
首先get和post都是向服务器提交数据, 并且都会从服务器获取数据。主要区别如下:
- 传送方式:get通过地址栏传输,post通过报文传输;
- 传送长度:get参数受浏览器长度限制(一般限制2048 和WEB服务器相关),而post无限制;
- GET 会将数据存在浏览器的历史中,POST不会
- GET 编码格式只能用ASCII码,POST没有限制
- 请求流程:GET 是将数据中的hearder 和 data 一起发送给服务端,返回200code;而POST 是先将hearder发给服务器返回100continue,再发送data给到服务器,返回200。相当于GET 就发送了一个TCP数据包给服务器而POST发送了两次TCP数据包给服务器
- 公司会怎么开展接口测试?什么时候介入接口测试?
先进行需求分析, 确定哪些接口需要进行接口测试,完成测试设计并输出测试用例, 一般来说会从参数异常校验、参数非空校验、业务场景、安全、性能等方面考虑。等开发转测之后使用postman工具进行接口测试,在初步确认接口无严重问题之后将之前的接口测试用例转换成自动化,如果对该接口有性能要求的话这个时候也得开始准备搭建性能环境完成性能测试验收。
- 依赖第三方接口返回的用例怎么测?
可以使用SoapUI等工具直接调用第三方数据接口的webservice,通过返回值来查看第三方数据的接口是否调用正常。也可以利用一些工具来模拟第三方的数据返回,最大限度的降低对第三方数据接口的依赖。具体可以参考https://blog.csdn.net/hard_days/article/details/127192052?spm=1001.2014.3001.5502
接口测试用例编写的要点都包含哪些?
测试每个参数类型不合法的情况(等价类)
测试每个参数取值范围不合法的情况(等价类)
测试参数为空的情况(等价类)
测试参数前后台定义的一致性
测试每个参数的上下限(边界值)
如果两个请求有严格的先后顺序,需要测试调转顺序的情况(参数组合和顺序)
接口参数有可选和必选情况的参数组合测试(参数组合和顺序)
测试业务逻辑
测试接口安全性(横向越权、纵向越权), 注横向越权表示攻击者尝试访问与他拥有相同权限的用户资源;纵向越权表示低级别攻击者尝试访问高级别用户的资源。
- POSTMAN是如何实现API自动化测试,怎么生成报告?
- 先选择请求方式, 填写url。如果有请求头的话可以填写请求头。 如果是post请求方式可以填写请求体
- 然后使用newman来生成测试报告,生成两种测试报告,一种是XML
- Postman怎么实现上下游依赖?参数传递怎么实现?
在Pre-request Script通过JS定义变量,配置成全局变量,所有接口都能使用
- 你在接口测试中是怎么校验结果是否正确?
1)验证接口响应状态码是否是200。
这是接口测试的最基本要求,响应状态码200代表了该接口能接收请求,能返回响应。
2)验证响应的完整内容是否等于预期。
当接口响应正文比较短,响应正文内容固定时,可以验证响应内容是否精确地等于预期的内容。
3)验证响应报文是否包含关键信息。
当响应内容较长时,可以判断响应内容中是否包含一些关键信息,以此作为验证接口功能的验证点。
4)验证响应报文关键字段是否存在。
当响应正文为XML格式或JSON格式时,可以通过XPATH或JSONPATH表达式,指定其中的某个节点,判断它是否存在。
5)验证响应报文关键字段,值是否正确。
除了可以验证字段是否存在,如果值是固定的或有确定规则的,还可以验证其值是否正确。若值固定可以验证相等,如果不固定可以考虑用正则表达式匹配。
6)查询数据库或调用其余接口查询。
当要验证的信息在当前测试接口的响应内容中不存在时,可以调用其他接口来验证。例如,一个增加用户信息的接口,要验证信息确实增加成功了,可以再调用查询用户信息接口来确认用户信息添加成功。当然,在获取数据库查询权限的情况下,也可以直接查询数据库来验证。
- 以上说的都是功能方面的验证,另外从性能角度,还可以验证接口的响应时间,看是否在一个合理的范围内。
- 七层网络协议分为哪七层?
应用层 -> 表示层 -> 会话层 -> 传输层 -> 网络层 -> 数据链路层 -> 物理层
参考学习博客:
Postman官方文档:
Introduction | Postman Learning Center
https://zhuanlan.zhihu.com/p/534078123
接口测试面试题_自动化测试七叔的博客-CSDN博客_接口测试面试题
2022 年面试工具篇 Postman 面试题及答案_测试之路king的博客-CSDN博客_postman面试题
软件测试十大必问面试题(附答案和解析)_测试寒哥的博客-CSDN博客_软件测试面试常见问题及答案
某证券项目软件测试面试过程总结_测试寒哥的博客-CSDN博客
版权归原作者 软件测试进阶中 所有, 如有侵权,请联系我们删除。