接口自动化测试 —— 协议、请求流程

一、架构
CRM客户关系管理系统
SAAS Software As A Service 软件即服务
PAAS Platform AS A Service 平台即服务
快速交付→ 快:自己去干、有结果、事事有回音、持续改进
单体架构——》垂直架构——》面向服务架构——》微服务架构(分布式)
二、接口测试
接口:系统与系统之间,组件与组件之间,数据传递交互的通道。
(系统之间:多个内部系统之间、内部系统与外部系统之间。程序之间:方法与方法之间,函数与函数之间,模块与模块之间)
接口测试:就是对系统或组件之间的接口进行测试,校验传递的数据正确性和逻辑依赖关系的正确性。
原理:主要针对的测试目标是服务器。(模拟客户端向服务器发送请求,测试服务器针对客户端请求,回发的响应数据是否与预期结果一致)
方法论:类比,不同的事物中找到共同点。
学习维度:
协议:本质是什么?
主流工具:
代码框架:
MockServer
三、API自动化测试
接⼝测试⼜被称为API测试,是软件测试的⼀种测试模式,它包含了两个维度,在狭义的⻆度上指的是对应⽤程序接⼝的功能进⾏测试,在⼴义的维度上是指集成测试中,通过调⽤API测试整体的功能来完成度,可靠性,安全性和性能。
借助工具、代码,模拟客户端发送请求给服务器,借助断言自动判断预期结果和实际结果是否一致。
接口测试这两年为什么这么火?
SAAS架构全面落地,服务端的稳定性显示的尤为重要
开发的模式改变,主要体现在前后端分离的模式上
测试工作:(面试题!!)
质量管理+测试效率提升
质量管理指的是:能够积极的寻求推动问题解决方法和持续改进质量
提升测试效率可以说是:通过技术手段来提升研发效率从而进一步提升测试效率。
早会:昨天干了什么?今天准备干什么?
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

四、金字塔模型:

越底层的应该投入大量的精力去做,越上层的投入少量的精力去做。
UI层:可以理解为功能测试;
service:接口测试(API);
Unit(单元测试)。
五、工具:
有很多主流的测试⼯具都可以做接⼝测试,如PostMan,JMeter,SoupUi等,除了⼯具还有在Python语⾔中很多 的第三⽅的库都是可以来做接⼝测试的,如:urllib,requests,aiohttp等。
六、协议(重点!!!)
1、协议:是一套标准、规则,要求通信的双方必须严格遵守。
HTTP协议,也可以称呼为“超文本传输协议”,是一个基于请求与响应模式的应用层的协议,也是互联网上应用最为广泛的一种网络协议。
2、默认的端口是80。http:80;https:443。
3、HTTP目前使用的版本是HTTP/1.1 最新的版本是HTTP/2.0
网络请求的查看步骤:(开发者工具)
打开网站(使用谷歌浏览器)→检查→Network、All→刷新网页
HTTP/2.0版本使用:
在分布式架构以及微服务架构中,基于新⼀代的架构设计有了gRPC的协议,它就是基于HTTP/2.0的版本来进⾏设计的。(gRPC协议:应用在互联网金融等领域。)
书:图解TCP/IP
网络分层
TCP/IP协议按层次主要为:应用层,传输层,网络层,数据链路层。
应用层:
应⽤层决定了向⽤户提供应⽤服务时通信的活动。⽽HTTP的协议和gRPC的协议就是属于应⽤层的协议。
传输层 :
应⽤层的下层是⽹络传输层,提供处于⽹络连接中的两台计算机之间的数据传输。
⽹络层 :
主要是⽤来处理⽹络上流动的数据包,所谓数据包就是⽹络传输中的最⼩单位,在该层协议中,规范了通过怎样的路径到达⽬标计算机,并且把数据包传送给对⽅。 网络层:1、保障数据传输 2、知道数据传输的目的地
链路层:
主要是处理连接⽹络的硬件部分,如操作系统,硬件设备的驱动等。

三次握手(面试必问!!!)
三次握手解决的问题:保障数据传输的安全性和可用性
三次握手又称TCP握手协议。为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤销联系,并建立虚连接。为了确保把数据能够送到⽬标的服务器,TCP协议内部使用了三次握手的策略机制,也就是说在TCP协议中,TCP 把数据包送去后,TCP会进行确认对方是否收到,或者是确认是否成功送达,那么三次握手主要使用了TCP的标志,具体为:SYN和ACK。首先Client端发送连接请求报文(SYN),Server端接受连接后回复ACK报文,并为这次连接分配资源(SYN+ACK)。Client端接收到ACK报文后也向Server段发送ACK报文,并分配资源,这样TCP连接就建⽴了。( SYN=同步序列编号 ACK=确认报文)
总结三次握⼿具体为:
- 第⼀次握⼿:起初两端都处于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就可以开始传输数据。

TCP 是面向连接的协议,所以每次发出的请求都需要对方进行确认。TCP 客户端与 TCP 服务器在通信之前需要完成三次握手才能建立连接。
下面详细讲解三次握手的过程:
第 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 次握手,如图所示。
总结:
1、客户端向服务端发送SYN请求报文,并进入SYN_SENT状态,等待服务器确认。
2、服务端收到了请求,进行确认,然后向客户端发送确认报文,和建立连接请求,此时服务器进入SYN_RECV状态。
3、客户端收到了请求和确认报文后,向服务端发送确认报文,然后连接成功,客户端和服务器进入ESTABLISHED状态,完成三次握手。
SYN和ACK是TCP/IP建立连接时使用的握手信号,在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK(请求和确认报文)应答 表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
问题:为什么是三次握手而不是两次:
因为,三次握手才能让双方均确认自己和对方的发送和接收能力都正常。
URI和URL
URI可以称为统⼀资源标识符,⽽URL是统⼀资源定位符。URI可以理解为标识某⼀个互联⽹的资源,⽽URL表示的资源的地点。HTTP协议中使⽤URI定位到互联⽹上的资源,这也是为什么互联⽹任意位置的资源我们都能够获取到的原因。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息URL。

HTTP协议
在微服务的架构模式下,使⽤的也是轻量级的通信模式(REST API),在微服务的架构模式中,需要清楚的是它的通信可以分为同步通信模式和异步通信模式, 或者更加具体本质的说就是请求/响应和异步请求/响应(发布/订阅模式)。
HTTP请求流程:(重点!!!)
1、客户端与服务端之间建立TCP的链接请求
2、客户端发送Request请求到服务端
3、服务端回复Response响应客户端的请求
4、客户端与服务端之间关闭TCP的链接请求

持久连接:connection:keep-alive
持久连接 在HTTP的早期版本中,每次发送请求,都需要进⾏⼀次TCP的连接和断开(相当于上图的步骤1和4),很明显这对服务端的性能损耗是非常大的,同时也是增加了通信量的开销。在HTTP/1.0版本开始以及后⾯的版本中,有了持久连接,也就是keep-alive, 它的特点是只要客户端或者是服务端没有明确断开连接,那么就得⼀直保持TCP的连接请求,持久连接减少了TCP 连接的重复连接和断开造成的性能损耗,减轻了服务端的负载,也提升了整体相求响应时间的性能。

今天的分享就到此结束了,大家还有什么不懂的可以评论区下提问哈,如果我的文章对你有所帮助的话,可以点赞三联支持一下哈
相关文章:
接口自动化测试 —— 协议、请求流程
一、架构 CRM客户关系管理系统 SAAS Software As A Service 软件即服务 PAAS Platform AS A Service 平台即服务 快速交付→ 快:自己去干、有结果、事事有回音、持续改进 单体架构——》垂直架构——》面向服务架构——》微服务架构(分布式…...
JDK安装详细教程
JDK安装详细教程 国内大多数使用的是1.8的版本,对于初学者来说这个版本很友善,不过由于我安装过了1.8,所以我这里演示JDK21 的安装,过程并无区别,只在下载时注意选择1.8版本。1.8就是JDK8. 文章目录 JDK安装详细教程一…...
vulnhub_Fowsniff靶机渗透测试
Fowsniff靶机 靶机地址:https://www.vulnhub.com/entry/fowsniff-1,262/ 文章目录 Fowsniff靶机信息收集web渗透密码碰撞POP3邮件服务器渗透获取权限权限提升靶机总结 信息收集 通过nmap扫描,靶机开放22 80 110 143端口,110是pop3邮件服务…...
FPGA面试题(3)
一.FPGA和CPLD区别 FPGA:现场可编程门阵列CPLD:复杂可编程逻辑器件 二.多位异步信号如何同步 单比特异步信号 慢时钟域->快时钟域:同步打拍快时钟域->慢时钟域:先拓展位宽再同步打拍 多比特异步信号 1.异步FIFO2.保持…...
Avalonia常用小控件Menu
1.项目下载地址:https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia,项目地址 https://github.com/irihitech/Semi.Avalonia 样式预览: axaml代码 : <UserControl xmlns"https://github.com/avalo…...
steam游戏服务器如何选择
steam游戏平台现在在国内市场很吃香,当我们自己开发的游戏想要上架steam我们需要准备什么,在选择服务器的时候我们又需要考虑哪些因素呢,该怎样选择一款适合自己游戏的服务器是很关键的。 Steam专用服务器通常是指由游戏开发商提供的服务器&…...
电脑技巧:推荐一款桌面整理神器TidyTabs
目录 1、软件简介 2、软件功能介绍 3、总结 1、软件简介 TidyTabs是一款Windows应用程序,它可以将多个打开的窗口整理成一个选项卡式的界面,使得用户可以更加方便地切换和管理不同的窗口。 TidyTabs可以将多个窗口整合到一个主窗口中,类似…...
git合并分支-IDEA
有1个主分支,我从主分支拉取过来了,数据然后改好了,现在想合并到主分支上,并且将主分支的内容更新到我的分支下。用git怎么操作? 1.将主分支(master)的内容合并到我的分支(master-shi)中 在我的分支下执行 git merge master ID…...
winscope使用方法
Ubuntu下Android T的winscope工具使用方法 1. 在Android的项目源码中,prebuilts/misc/common/winscope目录下 直接使用chrome浏览器打开文件winscope.html 2. 可能会提示adb问题 进入目录development/tools/winscope/adb_proxy,有文件winscope_proxy.…...
获取西华大学新闻网站信息(爬虫样例)
利用python的爬虫功能进行信息爬取,关键在于源码分析,代码相对简单。 1 源代码分析 访问网站,按下F12,进行元素查找分析。 2 代码实现 from requests import get from bs4 import BeautifulSoupdef getXhuNews(pageNum1):&qu…...
【Linux】https协议
文章目录 📖 前言1. 引入https协议2. 常见的加密方式2.1 对称加密:2.2 非对称加密:2.3 数据摘要&&数据指纹: 3. 对加密方式的探究3.1 只使用对称加密:3.2 只使用非对称加密:3.3 双方都使用非对称加…...
基于工业5G网关的工业机器人监测控制方案
随着智能制造、自动化生产的发展进步,工业机器人的身影越来越多地出现在工厂现场,成为新型无人化、智能化生产制造的中坚力量。 工业机器人的运行伴生着海量的数据采集、传输、分析和反馈执行,因此也需要高速、低延迟的5G网络,支撑…...
[Machine learning][Part4] 线性回归模型技巧
目录 正规方程法 梯度下降法 缩放特征 学习率选择 正规方程法 这种方法可以不多次迭代梯度下降函数就能得到w,b。但是缺点是在大量数据训练情况下效率较低,其次是这种算法仅仅在线性回归中实现了,并没有在其他模型中实现,因此,…...
产品经理进阶:如何写商业计划书?
目录 简介 确定目标 确定目标市场 竞争分析 CSDN学院 作者简介 简介 很多时候,我们缺乏的并不是创意。 因为任何人都可能会萌发出一个好的创意。 但是,将想法变成可行的业务就完全是另一码事了。 你可能会认为你自己已经做好充分准备࿰…...
Excel 规范录入数据
文章目录 录入日期录入百分比 快捷键: tab:向右切换单元格 enter:向下切换行 shift tab:向左切换单元格 shiftenter:向上切换行 录入日期 输入今天的日期的快捷键:Ctrl ; 输入当时的时间的快捷键&a…...
使用IDEA自带功能将WSDL转java
好像IDEA2018版本之后不再支持webservice转java,可以下载2018.3.6版本的IDEA(直接IDEA官网下载即可),然后打开一个项目,在根目录处单击右键 选择Generate Java Code From Wsdl..., 选择OK,即可…...
Vue + moment 实现自定义日历
moment moment是一个js工具库,这个库中封装的是日期时间的方法,功能很全面。可以去moment官网看看,它的中文文档介绍的也很详细,主要是看一下方法的使用。附上官网地址:添加链接描述 日历案例 日历的逻辑:…...
【斗罗2】天梦哥抓捕冰帝,霍雨浩与她完美融合,喜提五挂
Hello,小伙伴们,我是小郑继续为大家深度解析斗罗大陆2绝世唐门。 斗罗大陆动画第二部绝世唐门第19集预告终于更新了,看到公布时间,大半夜才发布,着实不过瘾。不过剧情相当炸裂,天梦哥与冰帝对峙,造神计划正…...
上个月Balada Injector攻击中有超过17,000个WordPress网站被黑
导语 最近,一场名为Balada Injector的攻击活动引起了广泛关注。这次攻击以WordPress网站为目标,据统计,有超过17,000个网站受到了感染。在本文中,我们将详细介绍这次攻击的概述、攻击手段以及如何保护自己的网站。 攻击概述 Balad…...
python写一个文本处理器
gpt给的latex在xmind中有时候会多出写红色的括号在xmind中会报红,影响观感,用python写一个自动删除],[,(,)的文本处理器,并且带有图形界面,本次程序用来解决gpt发来的latex问题,: import tkinter as tkdef…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
归并排序:分治思想的高效排序
目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...
轻量级Docker管理工具Docker Switchboard
简介 什么是 Docker Switchboard ? Docker Switchboard 是一个轻量级的 Web 应用程序,用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器,使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...
当下AI智能硬件方案浅谈
背景: 现在大模型出来以后,打破了常规的机械式的对话,人机对话变得更聪明一点。 对话用到的技术主要是实时音视频,简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术,开发自己的大模型。商用方案多见为字节、百…...
在ubuntu等linux系统上申请https证书
使用 Certbot 自动申请 安装 Certbot Certbot 是 Let’s Encrypt 官方推荐的自动化工具,支持多种操作系统和服务器环境。 在 Ubuntu/Debian 上: sudo apt update sudo apt install certbot申请证书 纯手动方式(不自动配置)&…...
