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

一、架构

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 连接的重复连接和断开造成的性能损耗,减轻了服务端的负载,也提升了整体相求响应时间的性能。


今天的分享就到此结束了,大家还有什么不懂的可以评论区下提问哈,如果我的文章对你有所帮助的话,可以点赞三联支持一下哈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/156484.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JVM系列】- 启航·JVM概论学习

启航JVM概论 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 博客首页 怒放吧德德 To记录领地 🌝分享学习心得,欢迎指正&#xff0c…

软件测试/测试开发/校招推荐 |中科创达软件股份有限公司岗位开放

黑盒测试工程师 岗位职责 制定测试计划、测试策略,设计测试用例; 软件需求评审与分析; 依据测试计划执行软件测试; 提交并维护软件缺陷; 准备测试报告并提交批准以及测试总结; 分析与制定疑难测试问题…

通讯网关软件019——利用CommGate X2OPCUA实现OPC UA访问Oracle服务器

本文介绍利用CommGate X2OPCUA实现OPC UA访问ORACLE数据库。CommGate X2OPCUA是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示,实现上位机通过OPC UA来获取ORACLE数据库的数据。 【解决方案】…

网络模型之OSI七层网络模型、TCP/IP四层网络模型

一、计算机网络是什么? 计算机网络是指由通讯网络相互连接的许多自主工作的计算机构成的集合体。 二、网络模型是干什么的? 网络模型就是研究计算机网络中各个部件是以何种规则进行通行。 三、OSI七层网络模型 OSI 是 Open System Interconnection 的…

《理解深度学习》2023最新版本+习题答案册pdf

刚入门深度学习或者觉得学起来很困难的同学看过来了,今天分享的这本深度学习教科书绝对适合你。 就是这本已在外网获13.1万次下载的宝藏教科书《理解深度学习》。本书由巴斯大学计算机科学教授Simon J.D. Prince撰写,全书共541页,目前共有21…

【Unity】【VR】如何让Distance Grab抓取物品时限制物品的Rotation

【背景】 遇到这样的场景,希望抓取Canvas时,Canvas不会沿Z轴旋转。 【问题】 发现Freeze Canvas的Rigid Body没有用。 【分析】 应该是RigidBody的限制仅在物理互动下生效,抓取可能不属于物理互动(比如碰撞),所以不生效。 【思路】 还是得写脚本挂载在Interacta…

初学vue,想自己找个中长期小型项目练练手,应该做什么?

前言 可以试着做一两个完整的后台管理项目后再去做其他的,下面推荐一些github上的vue后台管理的项目,可以自己选择性的练一下手 Vue2 1、iview-admin Star: 16.4k 基于 iview组件库开发的一款后台管理系统框架,提供了一系列的强大组件和基…

解决github加载过慢问题

github打不开怎么办?看到这篇文章,一切都稳了! DNS被污染,一句话,修改系统hosts文件! 1.hosts文件在哪?C:\Windows\System32\drivers\etc 2.用记事本打开hosts,在最后加入以下两行…

入手DDR5内存最佳时机到了,价格大跳水香过DDR4

当时 DDR5 内存刚出来那会儿大家怎么说的来着,售价离谱,提升微弱,鬼都不买… 不过嘛,随着 13 代酷睿以及锐龙 7000 系 CPU 上市,DDR5 彻底真香起来了。 先不说花重金升级 13 代酷睿平台,还用 DDR4 会不会有…

神秘的锦衣卫

在看明朝电视剧经常听到的一句台词:锦衣卫办案,闲杂人等速速离开。锦衣卫是明朝特务机构,直接听命于皇帝,是亲军卫之一,也是最重要的一卫。 1、卫所制 卫所制是明代最主要的军事制度,其目标是寓兵于农、屯…

程序员如何用海外平台接单?

作为一名能力超群的码农,基本工资肯定是到位的。 那你是否想过锦上添花,试着找找兼职呢? 相信不少人已经在接单平台上接单了, 但是,在众多接单平台中,海外平台是个什么样的存在呢?怎么在海外…

动画圆圈文字标志效果

效果展示 CSS 知识点 实现圆圈文字animation 属性回顾 实现思路 从效果的实现思路很简单,其实就是两个圆圈就可以实现。外层大圆(灰色)用于圆圈文字的展示,而内圆(藏青色)主要用于存放 Logo 图片。布局采…

【Android平板编程】远程Ubuntu服务器code-server编程写代码

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以,这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

前端笔记:Create React App 初始化项目的几个关键文件解读

1 介绍 Create React App 是一个官方支持的方式,用于创建单页应用的 React 设置用于构建用户界面的 JAVASCRIPT 库主要用于构建 UI 2 项目结构 一个典型的 Create React App 项目结构如下: ├── package.json ├── public # 这…

uniapp物理键/右滑多次退出应用,再次进入显示白屏的问题

复现方式:安卓多次使用物理返回键或右滑退出应用后, 再次进入有很大机率显示白屏。但是手动杀进程的方式不会出现白屏和后台驻留的方式也不会出现白屏 解决思路:利用后台驻留的方式进行假退出应用,把应用隐藏至后台,这…

RabbitMQ消息中间件概述

1.什么是RabbitMQ RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等&…

漏刻有时数据可视化大屏(16)数据指标KPI和柱图折线图混排

CSS样式表 /*面板*/ .pannel {width: 100%;margin-top: 30px;clear: both; }.item_l {float: left;width: 20%; /*3格60%*/margin: 0; }.item_r {float: left;width: 10%; /*4格40%*/margin: 0; }.item_child {float: left;width: 50%; }.item_child_b {float: left;width: 10…

【算法-动态规划】贝尔曼福特算法

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

大数据Doris(九):配置BE步骤

文章目录 配置BE步骤 一、配置be节点

14.1 Socket 套接字编程入门

Winsock是Windows操作系统上的套接字API,用于在网络上进行数据通信。套接字通信是一种允许应用程序在计算机网络上进行实时数据交换的技术。通过使用Windows提供的API,应用程序可以创建一个套接字来进行数据通信。这个套接字可以绑定到一个端口&#xff…