服务端测试实战——协议学习笔记||一、协议

本文主要探讨服务端测试中的协议知识,重点关注HTTP和gRPC协议。内容包括HTTP协议的请求流程、同步与异步通信模式、常用请求方法和状态码,以及gRPC协议的高性能特性与分布式应用支持。
摘要由CSDN通过智能技术生成

在服务层的测试维度中,主要针对的是业务接⼝的测试,来验证接⼝功能是否完整,如内部逻辑, 异常处理。这样的⽬的是验证接⼝它是否稳定,所以接⼝的测试相对⽽⾔⽐较容易⽽且更加⾼效,测试⽤例的维护成 本也低。有很多主流的测试⼯具都可以做接⼝测试,如PostMan,JMeter,SoupUi等,除了⼯具还有在Python语⾔中 很多的第三⽅的库都是可以来做接⼝测试的,如:urllib,requests,aiohttp等

一、协议分别有哪些

http、https、grpc、

二、http协议

HTTP是应⽤层的协议,它不需要刻意的去关注底层⽹络传输层协议的东⻄。在整体应⽤层的协议中,通俗的说在 整个API的测试维度上,需要关注的是⼀个完整的HTTP请求流程,请求⽅法,请求头响应头,COOKIE请求流程, SESSION的请求流程和TOKEN的请求流程,以及HTTPS的请求流程。在微服务的架构师模式下,使⽤的也是轻量级 的通信模式(REST API),在微服务的架构模式中,需要清楚的是它的通信可以分为同步通信模式和异步通信模 式,或者更加具体本质的说就是请求/响应和异步请求/响应(发布/订阅模式)。⼀个完整的HTTP请求流程如下:

1、三次握手

当然在这个过程中,我们还需要关注三次握⼿之间的⽹络交互,它的具体信息为Client端发送连接请求报⽂, Server段接受连接后回复ACK报⽂,并为这次连接分配资源。Client端接收到ACK报⽂后也向Server段发⽣ACK报 ⽂,并分配资源,这样TCP连接就建⽴了。

 1、三次握手
(1)起初两端都处于CLOSED关闭状态,Client将标志位SYN置为1,随机产⽣⼀个值seq=x,并将该
数据包发送给Server,Client进⼊SYN-SENT状态,等待Server确认;
(2)第⼆次握⼿:Server收到数据包后由标志位SYN=1得知Client请求建⽴连接,Server将标志位SYN和ACK都置
为1,ack=x+1,随机产⽣⼀个值seq=y,并将该数据包发送给Client以确认连接请求,Server进⼊SYN-RCVD
状态,此时操作系统为该TCP连接分配TCP缓存和变量;
(3)第三次握⼿: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就可以开始传输数据。

2、http完整请求

在API的⾃动化测试中,我们更多关注的是HTTP应⽤层的交互,因为即使主流的架构如微服务架构,它的通信模式 也是基于REST API轻量级的通信模式。在HTTP的协议中,⼀个完整的HTTP请求流程具体为:

一个完整的HTTP请求流程

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

(2)客户端向服务端发送Request的请求

(3)服务端Response相应回复给客户端

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

需要明确的是客户端向服务端发送请求的过程中,这⾥的客户端不单纯的WEB,它包含了⼿机,PAD,PC以及其 他,⻅如下的请求流程:

3、通信模式

(1)同步交互

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

容易超时,客户端发送请求后,服务端迟迟没有回应客户端的请求

如果请求是存在⼤的计算量和逻辑存在问题,就会导致请求堵塞,后⾯的都积压

同步请求的交互具体为:

(2)异步交互

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

4、http请求方式

在HTTP的应⽤层协议中,常⽤的请求⽅法具体为GET,P0ST,PUT,DELETE的请求⽅法,具体如下所示:

5、常用状态码

当客户端向服务端发送⼀个请求后,服务端响应回复返回给客户端,在返回的信息中会包含⼀个HTTP请求头的状 态码信息⽤以响应客户端的请求。在⽹站https://http.cat中可以看⻅各个不同表情的状态码的显示,如调⽤https:/ /http.cat/504就会显示如下对应的信息。常⽤的状态码具体为: 200 请求成功

301 永久重定向

302 临时重定项

400 Bad Request 客户端请求错误

401 Unauthorized

403 Forbidden

404 请求的资源不存在

500 服务器内部错误

504 GateWay Timeout

6、请求头和响应头

7、cookie请求

(1)客户端发送请求登录系统
(2)Set-cookie管理cookie返回给客户端
(3)请求头带cookie带上返回cookie发送给服务

8、SESSION请求

8、session请求

(1)发送登录信息(用户ID和密码)
(2)Set-cookie管理session返回给客户端
(3)请求头带cookie带上返回session发送给服务端

实例

9、token请求

(1)用户登录到系统
(2)服务端通过响应数据或者响应头返回token
(3)客户端在请求参数或者请求头带上返回token

三、grpc协议

gRPC协议概述 gRPC协议是⼀个⾼性能、开源和通⽤的 RPC 框架,⾯向移动和 HTTP/2 设计。⽬前提供 C、Java 和 Go 语⾔版 本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本⽀持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# ⽀持.gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复⽤请求等特。这些特 性使得其在移动设备上表现更好,更省电和节省空间占⽤。在 gRPC 中,客户端应⽤程序可以直接调⽤其他计算机 上的服务器应⽤程序上的⽅法,就好像它是本地对象⼀样,从⽽使您更容易创建分布式应⽤程序和服务。与许多 RPC 系统⼀样,gRPC 基于定义服务的想法,具体说明可以远程称为其参数和返回类型的⽅法。在服务器⽅⾯,服 务器实现此界⾯并运⾏ gRPC 服务器来处理客户端呼叫。在客户端⽅⾯,客户端有⼀个存根(在某些语⾔中称 为"客户端"),提供与服务器相同的⽅法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值