API⾃动化测试/HTTP协议

架构的演变

SAAS化: Software As A Service

软件即服务,saas讲究快速迭代

高效团队→交付市场

platfrom AS A service:平台即服务

单体架构→垂直架构→面向服务架构→微服务架构(分布式)

单体架构:

客户端:前后端整合到一起,例如淘宝搜索商品是发送请求,页面的展示是回应

垂直架构:将商品、支付等架构串连起来

 

 

1、ui:功能测试

2、service:接口测试

3、unit:单元测试,白盒测试

越底层的应该投入大量的精力去做,越上层的投入少量的精力去做

一、API⾃动化测试

API测试概述 :

1、接⼝测试⼜被称为API测试,是软件测试的⼀种测试模式,它包含了两个维度,在侠义的⻆度上指的是对应⽤程序 接⼝的功能进⾏测试,在⼴义的维度上是指集成测试中,通过调⽤API测试整体的功能来完成度,可靠性,安全性 和性能。

2、API的英文即Application Programming Interface首字母的缩写。直译过来的意思就是:程序之间的接口

3、有很多主流的测试⼯具都可以做接⼝测试,如PostMan,JMeter,SoupUi等,除了⼯具还有在Python语⾔中很多 的第三⽅的库都是可以来做接⼝测试的,如:urllib,requests,aiohttp等。

SAAS架构全面落地,服务端的稳定性显示的尤为重要

开发的模式改变,主要体现在前后端分离的模式上

接口测试本质是:协议,主流工具,代码框架,MockServer

测试的工作:质量管理+测试效率提升(面试题)

质量管理指的是能够积极的寻求推动问题解决方案和持续改进质量提升,测试效率可以说通过技术手段来提升研发效率从而进一步来提升测试效率

早会:昨天干了什么?今天干什么?提出你的问题。复盘。

1.HTTP协议上

1.HTTP协议,也可以称为“超⽂本传输协议”,默认的端口是80

2.HTTP目前使用的版本是HTTP/1.1 最新的版本是HTTP/2.0

查看网络请求的步骤:右键点击检查,再点击网络

 

 

HTTP/2.0版本使用:在分布式架构以及微服务架构中,基于新⼀代的架构设计有了gRPC的协议,它就是基于HTTP/2.0的版 本来进⾏设计的。

gRPC的协议:应用在互联网金融的领域

网络分层

TCP/IP分层管理

TCP/IP协议按层次主要为:应⽤层,传输层,⽹络层,数据链路层。

协议是一套标准

应⽤层:应⽤层决定了向⽤户提供应⽤服务时通信的活动。⽽HTTP的协议和gRPC的协议就是属于应⽤层的协议。

传输层:应⽤层的下层是⽹络传输层,提供处于⽹络连接中的两台计算机之间的数据传输。

⽹络层:主要是⽤来处理⽹络上流动的数据包,所谓数据包就是⽹络传输中的最⼩单位,在该层协议中,规范了通过怎样的 路径到达⽬标计算机,并且把数据包传送给对⽅。

网络层:1、保障数据传输 2、知道数据传输的目的地

链路层:主要是处理连接网络的硬件部分,如操作系统,硬件设备的驱动等。

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就可以开始传输数据。

三次握手详解:

第 1 次握手

第 1 次握手建立连接时,客户端向服务器发送 SYN 报文(SEQ=x,SYN=1),并进入 SYN_SENT 状态,等待服务器确认,如图所示。

 

 

第 2 次握手

第 2 次握手实际上是分两部分来完成的,即 SYN+ACK(请求和确认)报文。

  • 服务器收到了客户端的请求,向客户端回复一个确认信息(ACK=x+1)。
  • 服务器再向客户端发送一个 SYN 包(SEQ=y)建立连接的请求,此时服务器进入 SYN_RECV 状态,如图所示。

 

 

第 3 次握手

第 3 次握手,是客户端收到服务器的回复(SYN+ACK 报文)。此时,客户端也要向服务器发送确认包(ACK)。此包发送完毕客户端和服务器进入 ESTABLISHED 状态,完成 3 次握手,如图所示。

 

 

URI和URL

URI可以称为统⼀资源标识符,URL是统⼀资源定位符

在微服务的架构模式下,使⽤的也是轻量级的通信模式(REST API),在微服务的架构模式中,需要清楚的是它的通信可以分为同步通信模式和异步通信模式。

HTTP请求流程

 

 

1)客户端与服务端之间建立TCP的连接请求

2)客户端发送Request请求到服务端

3)服务端Response响应回复客户端的请求

4)客户端与服务端之间关闭TCP的连接请求

持久连接:connection:keep-alive

 

 

通信模式:

1、同步通信

在客户端与服务端在进⾏交互的时候,通信模式主要分为同步通信和异步通信。同步通信简单的可以理解为客户端 发送请求给服务端,服务端必须得回应客户端的请求。

缺陷:请求太多时压力大,容易导致超时和堵塞

队列:queue,先进先出的原则

客户端任务请求太多时,服务端处理的能力是有限的,所以服务端会有一个线程池,它是指定同时执行的最大任务数。例如客户端发送100个请求,服务端只能处理90个,那么剩下的10个采用队列的形式排队,队列的原则是先进先出。

线程池:作用类似容器,所有请求都是task,每个task都是一个线程

2、异步通信

由于同步交互存在超时以及堵塞的情况,所以也就有了异步的交互。在异步的交互中,客户端和服务端互相不需要 关注对⽅的存在,只需要关注对应的MQ的消息,客户端与服务端的交互主要是会通过MQ的消息中间作为消息的 传递来进⾏交互的。

主流的MQ消息中间件主要有:kafka,RabbitMQ,ActiveMQ

Apache基金协会

kafka在大数据领域主要使用在实时流数据方面非常优秀,能够处理千万亿的数据。

RabbitMQ主要应用于一般的服务,对数据的一致性、可靠性、安全性要求高。

 

posted @ 2022-04-14 16:34  lm970418  阅读(57)  评论(0编辑  收藏  举报