接口测试

接口测试:
1、协议
2、接口测试的工具:PostMan,JMeter
3、接口测试的框架
4、MockServer

 

接口测试是目前所有测试人员必须掌握的技术栈
1、流量回放
2、混沌工程(混沌理论)
3、全链路监控&分布式

2016年,前后端分离开发模式在企业全面落地
youyuxi. VUE

2019年之后,UI
1、走向了API的自动化测试
2、开发模式的彻底

2021年:
1、走向了API的自动化测试
2、开发模式的彻底
3、微服务的架构通信模式

 

单体架构的开发模式:

图书管理系统:
业务场景:大家看到自己喜欢的书,然后下单,支付,购买

单体架构的模式是把前后以及所有的业务场景的代码都整合到一起

业务模块:
1、书籍管理
2、支付模块
3、账户模块
4、物流模块

 

 微服务架构就是根据业务场景,把每个独立的业务场景单独分离成一个服务,这样服务和服务之间通信,通信通过REST API 或者gRPC的协议来进行交互。
接口测试又被称为API测试

 

常规开发模式中接口测试的场景:
开发同学:
1、前端程序员把代码写完,后端程序员把代码写完
2、前端和后端进行联调(前端把输入的账户和密码拿到,然后发送给(HTTP的协议)后端)
3、后端拿到前端发送的数据进行验证
测试同学:
1、验证这个过程中业务逻辑是否能够成功

 

https://element.eleme.cn/#/zh-CN/component/input

 
 

 

金字塔模型:在金字塔的模型中,在测试分为三个维度来进行思考,分别是单元,服务和UI三个层级。这地方主要的说下服务层 的测试,在服务层的测试维度中,主要针对的是业务接口的测试,来验证接口功能是否完整,如内部逻辑,异常处 理。这样的目的是验证接口它是否稳定,所以接口的测试相对而言比较容易而且更加高效,测试用例的维护成本也 低。有很多主流的测试工具都可以做接口测试,如PostMan,JMeter,SoupUi等,除了工具还有在Python语言中很多 的第三方的库都是可以来做接口测试的,如:urllib,requests,aiohttp等。 

 

在金字塔的模型中:
1、金字塔模型把开发测试的模型分为三层,分别是单元测试,接口测试,和UI测试
2、unit:单元测试 services:接口测试(API自动化测试) UI:UI测试(功能测试,ui自动化测试)
3、越底层的,越应该投入更多的精力去保障,越上层的,投入少量的精力去保障

 

 

 所有的企业都开始拥抱微服务的架构模式
saas化:Software As A Service 软件即服务

pass化:Platform As A Service 平台即服务

单体架构 SOA面向服务的架构 分布式的架构 微服务架构

协议 web1.0 web2.0 移动互联网

http:“超文本传输协议”

1997年发布的HTTP/1.1的版本是目前比较主流的HTTP的版本
目前HTTP最新的版本是:HTTP/2.0(gRPC的协议就是基于HTTP/2.0的版本来进行设计的) 但是业界使用的版本是HTTP/1.1
微服务的架构通信模式:
微服务的通信模式使用的方式有两种:
1、一种是采用基于REST API的轻量级的基于HTTP的协议
2、使用的是gRPC的协议

异步模式:
同步模式:

 

 

 

数据:文字和声音,当然还有其他的
TCP/IP分层管理
TCP/IP协议按层次主要为:应用层,传输层,网络层,数据链路层。
应用层
应用层决定了向用户提供应用服务时通信的活动。而HTTP的协议和gRPC的协议就是属于应用层的协议。
传输层
应用层的下层是网络传输层,提供处于网络连接中的两台计算机之间的数据传输。
网络层
主要是用来处理网络上流动的数据包,所谓数据包就是网络传输中的最小单位,在该层协议中,规范了通过怎样的
路径到达目标计算机,并且把数据包传送给对方。
链路层
主要是处理连接网络的硬件部分,如操作系统,硬件设备的驱动等。

websoket协议(auth2.0):
客户端:拿微信来说,手机微信,电脑微信,都是客户端
服务端:腾讯的微信服务器

websocket协议:客户端与服务端始终保持持久连接 不会断开

物联网:互联网技术的深度发展,互联网使用的协议都是websocket的协议  

协议:
http
websocket
gRPC

传输层 :核心的协议就是TCP/IP的协议
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、服务端的确认:客户端发送数据出去,服务端需要确认我收到了
2、服务端反馈:服务端告诉客户端,你发送的数据我这边确认收到了
3、客户端确认:客户端需要向服务端再次反馈,客户端收到服务端的反馈了

 

在公司里面,你说的话别人无法理解,一定是你的沟通有问题,说的简单点,就是描述有问题

URI可以称为统一资源标识符,而URL是统一资源定位符。URI可以理解为标识某一个互联网的资源,而URL表示的 资源的地点。

HTTP是应用层的协议

 

REST API
Java:企业级开发领域具备非常强大的生命力,开发的技术栈非常完善,其中阿里的生态开发语言基本是Java
Python:数据分析,数据科学领域非常具备优势
Go:容器化的语言,应用在Docker和K8S的开发
PHP:轻量级的语言
Net:微软系列

三个语言开发,但是需要之间需要通信,需要数据传输,标准化就是REST API 使用统一的标准来进行交互

 

HTTP完整的请求流程:

 

 

 

 

 

 在HTTP/1.0版本开始以及后面的版本中,有了持久连接,也就是keep-alive, 它的特点是只要客户端或者是服务端没有明确断开连接,那么就得一直保持TCP的连接请求,持久连接减少了TCP 连接的重复连接和断开造成的性能损耗,减轻了服务端的负载,也提升了整体相求响应时间的性能。

持久连接
 

发送Requests:
1、请求地址
2、请求方法
3、请求头
4、请求参数(可能有,也可能没有)

Response回复:
1、协议状态码
2、响应数据
3、响应头

通信模式:
1、同步通信:
客户端发送请求给服务端,服务端必须得回应客户端的请求。
容易超时,客户端发送请求后,服务端迟迟没有回应客户端的请求
如果请求是存在大的计算量和逻辑存在问题,就会导致请求堵塞,后面的都积压
同步通信又可以说是请求/响应的模式

 

 

http:
websocket:持久连接
gRPC:流式(stream)的数据

异步通信:
1、在异步的交互中,客户端和服务端互相不需要 关注对方的存在,只需要关注对应的MQ的消息,客户端与服务端的交互主要是会通过MQ的消息中间作为消息的 传递来进行交互的 。

 

 

 

MQ:RabbitMQ,Kafka(linkyin),ActivityMQ(alibaba)

 所有的M Q都可以说是队列机制,也可以说是生产者消费者的模式。所谓队列机制,遵守先进先出的规则
生产者消费者模式:生产后,基于进行快速的消费

 
 

 

 

 
 

 

 
 
 

 

posted @ 2021-12-31 10:53  蒋佳伟  阅读(200)  评论(0)    收藏  举报