大家好,欢迎来到IT知识分享网。
微服务架构:
SAAS soft as a service 软件即服务
PAAS平台即服务
LAAS 基础级服务
轻量级REST API和GRPC通信协议
BUBBO(alibaba)
http2.0
API测试概述
接⼝测试⼜被称为API测试,是软件测试的⼀种测试模式,它包含了两个维度,在ሀ义的⻆度上指的是对应⽤程序 接⼝的功能进⾏测试,在⼴义的维度上是指集成测试中,通过调⽤API测试整体的功能来完成度,可靠性,安全性 和性能。
金字塔模型
基于上⾯的API的定义和思考维度,在结合⽬前互联⽹产品的开发模式(前后端分离的开发模式),在具体到成测 试的⼯作模型。或者更加本质的说,测试的⼯作可以分为两个维度:质量管理+测试效率,API测试是提升测试效率 最有利的⼀个⽅式。具体⻅⾦字塔的模型:
在⾦字塔的模型中,在测试分为三个维度来进⾏思考,分别是单元,服务和UI三个层级。这地⽅主要的说下服务层的测试,在服务层的测试维度中,主要针对的是业务接⼝的测试,来验证接⼝功能是否完整,如内部逻辑,异常处理。这样的⽬的是验证接⼝它是否稳定,所以接⼝的测试相对⽽⾔⽐较容易⽽且更加⾼效,测试⽤例的维护成本也低。有很多主流的测试⼯具都可以做接⼝测试,如PostMan,JMeter,SoupUi等,除了⼯具还有在Python语⾔中很多 的第三⽅的库都是可以来做接⼝测试的,如:urllib,requests,aiohttp等。
目前unit单元测试人少,基本上都在做接口测试。
HTTP前世今生
HTTP协议,也可以称呼为“超⽂本传输协议”
HTTP/0.9
HTTP从发展开始,⼀直没有⼀个统⼀的标准,最典型的版本是HTTP/0.9
HTTP/1.0
HTTP协议作为正式的标准是在1996年的5⽉份,版本被命名为HTTP/1.0的版本。
HTTP/1.1
1997年发布的HTTP/1.1的版本是⽬前⽐较主流的HTTP的版本,很遗憾的是从HTTP/1.1的版本之后,就⼀直停⽌不 前,⽽且⽬前⼀直使⽤的也是HTTP/1.1的版本。
HTTP/2.0
新⼀代的HTTP协议是HTTP/2.0的版本,它⽀持流式的处理,以及进⾏了很多的优化,但是很遗憾的是没有被⼤规 模的应⽤。在分布式架构以及微服务架构中,基于新⼀代的架构设计有了gRPC的协议,它就是基于HTTP/2.0的版 本来进⾏设计的。
网络分层
TCP/IP分层管理
TCP/IP协议按层次主要为:应⽤层,传输层,⽹络层,数据链路层。
应用层
应⽤层决定了向⽤户提供应⽤服务时通信的活动。而HTTP的协议和gRPC的协议就是属于应⽤层的协议。
传输层
应⽤层的下层是⽹络传输层,提供处于⽹络连接中的两台计算机之间的数据传输。
网络层
主要是⽤来处理⽹络上流动的数据包,所谓数据包就是⽹络传输中的最⼩单位,在该层协议中,规范了通过怎样的 路径到达⽬标计算机,并且把数据包传送给对⽅。
链路层
主要是处理连接⽹络的硬件部分,如操作系统,硬件设备的驱动等。
TCP/IP通信传输流
下⾯具体还是以流程图来描述这部分,具体如下:
三次握⼿
为了确保把数据能够送到⽬标的服务器,TCP协议内部使⽤了三次握⼿的策略机制,也就是说在TCP协议中,TCP把数据包送去后,TCP会进⾏确认对⽅是否收到,或者是确认是否成功送达,那么三次握⼿主要使⽤了TCP的标志,具体为:SYN和ACK。⾸先Client端发送连接请求报⽂,Server段接受连接后回复ACK报⽂,并为这次连接分配资源。Client端接收到ACK报⽂后也向Server段发送ACK报⽂,并分配资源,这样TCP连接就建⽴了。总结三次握⼿具体为:
第⼀次握⼿:起初两端都处于CLOSED关闭状态,Client将标志位SYN置为1,随机产⽣⼀个值seq=x,并将该数据包发送给Server,Client进⼊SYN-SENT状态,等待Server确认;
第⼆次握⼿:Server收到数据包后由标志位SYN=1得知Client请求建⽴连接,Server将标志位SYN和ACK都置为1,ack=x+1,随机产⽣⼀个值seq=y,并将该数据包发送给Client以确认连接请求,Server进⼊SYN-RCVD 状态,此时操作系统为该TCP连接分配TCP缓存和变量;
第三次握⼿:Client收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1, ack=y+1,并且此时操作系统为该TCP连接分配TCP缓存和变量,并将该数据包发送给Server,Server检查ack 是否为y+1,ACK是否为1,如果正确则连接建⽴成功,Client和Server进⼊ESTABLISHED状态,完成三次握 ⼿,随后Client和Server就可以开始传输数据。
URI和URL
URI可以称为统⼀资源标识符,⽽URL是统⼀资源定位符。URI可以理解为标识某⼀个互联网的资源,⽽URL表示的资源的地点。HTTP协议中使⽤URI定位到互联⽹上的资源,这也是为什么互联网任意位置的资源我们都能够获取到的原因。
HTTP协议
HTTP是应⽤层的协议,它不需要刻意的去关注底层网络传输层协议的东⻄。在整体应⽤层的协议中,通俗的说在整个API的测试维度上,需要关注的是⼀个完整的HTTP请求流程,请求⽅法,请求头响应头,COOKIE请求流程, SESSION的请求流程和TOKEN的请求流程,以及HTTPS的请求流程。在微服务的架构模式下,使⽤的也是轻量级的通信模式(REST API),在微服务的架构模式中,需要清楚的是它的通信可以分为同步通信模式和异步通信模式,或者更加具体本质的说就是请求/响应和异步请求/响应(发布/订阅模式)。协议可以具体⻅如下
HTTP请求流程
Request请求:
请求地址
请求方法
请求头(报文头)
请求参数
Reponse:
协议状态码
响应头(响应报文)
响应数据
持久连接
在HTTP的早期版本中,每次发送请求,都需要进⾏⼀次TCP的连接和断开,很明显这对服务端的性能损耗是⾮常⼤的,同时也是增加了通信量的开销。在HTTP/1.0版本开始以及后⾯的版本中,有了持久连接,也就是keep-alive,它的特点是只要客户端或者是服务端没有明确断开连接,那么就得⼀直保持TCP的连接请求,持久连接减少了TCP连接的重复连接和断开造成的性能损耗,减轻了服务端的负载,也提升了整体相求响应时间的性能。
通信模式
同步通信 (请求响应模式)
在客户端与服务端在进⾏交互的时候,通信模式主要分为同步通信和异步通信。同步通信简单的可以理解为客户端发送请求给服务端,服务端必须得回应客户端的请求。所以同步通信它存在如下的缺点,具体为:
容易超时,客户端发送请求后,服务端迟迟没有回应客户端的请求
如果请求是存在大的计算量和逻辑存在问题,就会导致请求堵塞,后⾯的都积压
同步请求的交互具体为:
异步通信
由于同步交互存在超时以及堵塞的情况,所以也就有了异步的交互。在异步的交互中,客户端和服务端互相不需要 关注对⽅的存在,只需要关注对应的MQ的消息,客户端与服务端的交互主要是会通过MQ的消息中间作为消息的 传递来进⾏交互的,具体交互如下:
在HTTP的应⽤层协议中,常⽤的请求⽅法具体为GET,POST,PUT,DELETE的请求⽅法,具体如下所示
Get是获取
POST是可以添加,修改,删除
PUT是修改
DELETE是删除
为了可以更直观的看到对应的请求方法在每次操作前可以把内容清空再执行操作
一般来说看前端怎么写代码,他是把PUT和DELETE分开还是都用POST
如何查看页面F12 点击network,勾选
常用状态码
当客户端向服务端发送⼀个请求后,服务端响应回复返回给客户端,在返回的信息中会包含⼀个HTTP请求头的状态码信息⽤以响应客户端的请求。在⽹站https://http.cat中可以看⻅各个不同表情的状态码的显示,如调⽤https:/ /http.cat/504就会显示如下对应的信息。常⽤的状态码具体为:
都算成功 :
200 请求成功
301 永久重定向
例如京东用360buy页面访问
302 临时重定项
客户端问题:
400 Bad Request 客户端请求错误 (请求头或者请求参数不对)
401 Unauthorized ⽆权限访问该系统
403 Forbidden 有权限但是禁⽌访问
404 请求的资源不存在
405 不被允许的请求⽅法 (方法 服务端提供get请求,结果客户端使用POST则会出)现
服务端问题:
500 服务器内部错误
oom linux获取到错误的日志信息,并且跟开发说请求头请求参数
504 GateWay Timeout 网关超时
网关API GATE WAY进行统一认证和限流
请求头/响应头
请求头
Contect-Type主要的数据格式
xml 表单 json 文件上传
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30623.html