一文了解API接口自动化测试:让你在人才市场上无往不利

news2024/11/13 21:24:48

目录:导读

引言

架构

接口测试

API自动化测试

前后端分离的开发模式

测试工作:

协议

网络分层

三次握手的设计(很重要)

问题:

URL:统一资源定位符

HTTP协议

(重点)HTTP的完整请求流程:

通信模式:

MQ组件:RabbitMQ和kafka

理论总结:

结语


引言

API接口自动化测试是软件测试的一个重要环节,通过编写代码自动模拟用户请求API接口并检测返回结果是否符合预期,可以显著提高测试效率和准确性。

对于企业来说,拥有专业的API接口自动化测试团队,无疑是在人才市场上展现实力和吸引优秀人才的利器。

那么,快来了解一下API接口自动化测试吧,让你在竞争激烈的市场中胜出!

架构

CRM客户关系管理系统
SAAS Software As A Service 软件即服务
PAAS Platform AS A Service 平台即服务

接口测试

接口:系统与系统之间,组件与组件之间,数据传递交互的通道。
(系统之间:多个内部系统之间、内部系统与外部系统之间。程序之间:方法与方法之间,函数与函数之间,模块与模块之间)

接口测试:就是对系统或组件之间的接口进行测试,校验传递的数据正确性和逻辑依赖关系的正确性。

原理:主要针对的测试目标是服务器。(模拟客户端向服务器发送请求,测试服务器针对客户端请求,回发的响应数据是否与预期结果一致)

API自动化测试

接⼝测试⼜被称为API测试,是软件测试的⼀种测试模式,它包含了两个维度,在狭义的⻆度上指的是对应⽤程序接⼝的功能进⾏测试,在⼴义的维度上是指集成测试中,通过调⽤API测试整体的功能来完成度,可靠性,安全性和性能。
借助工具、代码,模拟客户端发送请求给服务器,借助断言自动判断预期结果和实际结果是否一致。

前后端分离的开发模式

前端和后端通过HTTP的协议来进行交互,这是一种新的开发模式。
前端通过VUE&React组件来和后端来进行交互的
后端:主流的开发语言:Java,Python,Go之间是通过HTTP的协议来进行交互的
客户端与服务端之间是通过HTTP的协议来进行交互的。
HTTP协议是为了共享知识而诞生的

接口(API)测试的技术学习的内容:
1、HTTP的协议
2、主流的测试工具PostMan,JMeter
3、MockService服务
4、代码级别的API测试框架

2018年开始---》服务端测试领域
混沌工程---〉科学方法论的
流量回放
精准测试
稳定性的体系保障

测试工作:

1、质量管理:软件测试理论以及处理问题成熟的思维方式
2、测试效率提升:目前提升测试效率最直接有效的手段的API自动化测试。

金字塔模型:


越底层的应该投入大量的精力去做,越上层的投入少量的精力去做。
UI:功能测试,UI自动化测试
Service:API测试,API自动化测试,服务端测试开发领域
unit:单元测试(业内做的很少)

1、软件测试经济学

越底层的需要投入更多的精力和时间去做,越上层的投入少量的精力去做

2、测试效率

API测试效率很高的,执行是按秒来计算的,而UI层执行效率是很慢的,执行是按秒来计算的

协议

WEB1.0
WEB2.0
移动互联网
云计算/大数据时代
底层的基础架构是HTTP的协议
城市大脑
HTTP的架构上延伸起来的

分布式架构/微服务架构(SAAS/PAAS)交互的方式:
1、HTTP的协议来进行交互(轻量级的REST API的协议来进行交互的)
2、gRPC的远程过程调用来进行交互的

1989年的3⽉份了,诞⽣了HTTP的协议,HTTP协议,也可以称呼为“超⽂本传输协议”

打造最早的浏览器公司:网景
目前使用版本:HTTP/1.1的版本,最新版本为HTTP/2.0的版本
HTTP/2.0比起HTTP/1.1的版本来说是非常优秀的,支持海量数据的传输,但是没有大规模化的使用,目前gRPC的协议使用的是HTTP2.0的协议来进行设计的。
gRPC的协议又称呼为:远程过程调用(比如我访问的服务器是在西方或者是在欧美,等于我访问它的速度是在我自己家里访问的速度是一样的)。
gRPC的协议是由Google提出来的
facebook--->apache thrift
alibaba-->dubbo的协议

RPC 分布式框架的分支:
1、gRPC
2、Aapache Thrift
3、Dubbo

网络分层

TCP/IP协议按层次主要为:应⽤层,传输层,⽹络层,数据链路层。
应用层:
应⽤层决定了向⽤户提供应⽤服务时通信的活动。⽽HTTP的协议和gRPC的协议就是属于应⽤层的协议。

传输层 :

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

⽹络层 :

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

链路层:

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

三次握手的设计(很重要)

为了数据的安全性,保障数据传输的安全性和可用性(客户端与服务端数据传输的安全性),设计了三次握手,来避免这个问题

第 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、客户端发送请求
2、服务端收到请求,服务端会和客户端之间进行确认,告诉客户端,说我收到了请求
3、服务端把数据发送给另外一个客户端,另外一个客户端收到数据
4、另外一个客户端收到数据后,会告诉服务端它收到了请求以及数据

问题:

为什么是三次握手而不是两次:
因为,三次握手才能让双方均确认自己和对方的发送和接收能力都正常。

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

通信模式:

1、同步通信(请求/响应模式)
在客户端与服务端在进⾏交互的时候,通信模式主要分为同步通信和异步通信。同步通信简单的可以理解为客户端发送请求给服务端,服务端必须得回应客户端的请求。所以同步通信它存在如下的缺点,具体为:
容易超时,客户端发送请求后,服务端迟迟没有回应客户端的请求,如果请求是存在⼤的计算量和逻辑存在问题,就会导致请求堵塞,后⾯的都积压
缺陷:
  A、超时,会造成排队、等待、堵塞。
  B、客户端的请求可能存在逻辑上的错误或者说非常大的计算逻辑

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

MQ组件:RabbitMQ和kafka

RabbitMQ和kafka区别:
Kafka能够处理海量的数据(亿为单位),它的性能是非常好的
Rabbit:对数据的一致性可靠性的要求是非常高的,但是它的性能是很差劲的
MQ=MQ消息队列服务器

客户端向服务端发送Request请求:
A:请求方法
B:请求头(消息体)
C:请求地址
D:请求参数
2、服务端Responses响应回复客户端的请求
A:协议状态码
B:响应头(响应体)
C:响应数据

请求方法:

1、GET:获取资源
2、POST:添加资源
3、PUT:修改资源
4、DELETE:删除资源


GET请求方法:GET请求方法是在Query Params里面填写的,也就是说填写后,是在URL后它的格式是?key1=value1&key2=value2
所以GET方法的请求参数又称呼为路径参数

有请求参数的GET方法

步骤1:在接口文档中获取方法和地址:(协议加第二行的域名加第一行的资源路径)


步骤2:在postman中选择GET方法,复制地址,点击send会自动出现请求参数(KEY),我们进行填写(如下图的VALUE部分)

(GET方法的请求参数 在postman中是写在Params中的)

理论总结:

1、什么是HTTP的协议
2、微服务主流的协议是什么?
3、三次握手的流程
4、HTTP的完整请求流程
5、通信模式有哪些?
6、MQ消息队列服务器有哪些?区别是什么
7、常用的请求方法有哪些
8、HTTP的协议组成部分

实战:
1、浏览器查看网络请求
2、PostMan发送GET的请求

结语

这篇贴子到这里就结束了,最后,希望看这篇帖子的朋友能够有所收获。

 获取方式:留言【软件测试学习】即可

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot项目集成JWT实现身份认证(权鉴)

一、什么是JWT JSON Web Token (JWT),它是目前最流行的跨域身份验证解决方案。现在的项目开发一般都是前端端分离,这就涉及到跨域和权鉴问题。 二、JWT组成 由三部分组成:头部(Header)、载荷(Payload)与签名(signature) 头部(Head…

[测试新人必看] 测试报告如何编写? 掌握这五十个测试报告模板

作为一个曾经是测试萌新的我,在首次接收到一个任务时总有一种忐忑慌张激动紧张期望的复杂情绪~~ 忐忑慌张紧张是怕自己做不好,得不到领导的赏识;激动期望是哇塞,我有任务了耶,终于有我的用武之地了~~~ 就好比今天的主题…

Android 实现控件对称布局(约束布局和线性布局)

画界面时会遇到很多界面上的布局,虽然很简单,但是每次做起来不熟练,总结一下一些日常的 一.实现界面上的两个空间对称布局 方法一、用约束布局的guideLine.适用于两个控件不确定宽高,且约束条件较多 Guideline是只能用在Constra…

linux安装并发送邮件

linux安装、配置并发送邮件(以CentOS7.9为例) 1、安装邮箱软件 yum install mailx -y2、 配置邮箱(以qq邮箱为例) 2.1 网页访问并登录:https://mail.qq.com/ 2.2 选择“设置->账户” 2.3 在账户下面找到POP3/IMAP/…

【广州华锐互动】VR数字虚拟展厅为企业提升品牌形象和知名度

VR数字虚拟展厅是一种利用虚拟现实技术来展示企业产品和服务的全新宣传方式,与传统展厅相比具有出色的互动功能和沉浸体验感,参观者可以随时随地进入虚拟环境中进行参观,感受全新视听觉的体验。 VR数字虚拟展厅能够带来很多优势和好处&#x…

Flink 优化(六) --------- FlinkSQL 调优

目录一、设置空闲状态保留时间二、开启 MiniBatch三、开启 LocalGlobal四、开启 Split Distinct五、多维 DISTINCT 使用 Filter六、设置参数总结FlinkSQL 官网配置参数: https://ci.apache.org/projects/flink/flink-docs-release-1.13/dev/table/config.html 一、…

Zookeeper源码分析——算法基础

Zookeeper高级 Paxos 算法 Paxos算法:一种基于消息传递且具有高度容错特性的一致性算法。 Paxos算法解决的问题:就是如何快速正确的在一个分布式系统中对某个数据值达成一致,并且保证不论发生任何异常, 都不会破坏整个系统的一…

回溯递归(例题+思路+代码)

题目描述 leetcode 77 思路 组合问题适合用回溯求解。 经典解法&#xff1a;for循环 内部回溯。 每次进入回溯方法时&#xff0c;先判断终止条件&#xff0c;再进行当前层的循环&#xff0c;循环进行下一层递归。 代码 class Solution {public List<List<Integer&…

【C++入门必备知识:缺省参数+函数重载+函数名修饰规则】

【C入门必备知识&#xff1a;缺省参数函数重载函数名修饰规则】 ①.缺省参数Ⅰ.概念1.全缺省参数2.半缺省参数3.使用规则4.应用场景再现 ②.函数重载Ⅰ.概念1.参数个数不同2.参数类型不同3.参数类型顺序不同4.对返回值没有要求 ③.函数名修饰规则Ⅰ.C/C的不同 ①.缺省参数 Ⅰ.…

ubuntu22.04安装pyCUDA

更多内容请查看 www.laowubiji.com 笔者近期想使用GPU进行并行计算&#xff0c;搜索之后看到需要用到pyCUDA库函数&#xff0c;所以需要在所使用的ubuntu22.04系统中部署pyCUDA库&#xff0c;没想到在部署过程中折腾了好几回&#xff0c;总算是安装成功了。简单记录过程如下&a…

从输入URL到页面展示到底发生了什么

刚开始写这篇文章还是挺纠结的&#xff0c;因为网上搜索“从输入url到页面展示到底发生了什么”&#xff0c;你可以搜到一大堆的资料。而且面试这道题基本是必考题&#xff0c;二月份面试的时候&#xff0c;虽然知道这个过程发生了什么&#xff0c;不过当面试官一步步追问下去的…

AI智能改写-文本改写人工智能

随着信息技术的不断发展&#xff0c;互联网上各种信息的海量涌现&#xff0c;万千信息竞相呈现&#xff0c;如何让自己的内容独领风骚&#xff0c;引起用户的注意和眼球&#xff1f;这时&#xff0c;一款强大的文章智能改写神器便应运而生&#xff0c;可以让您的内容变得更加独…

可能你已经刷了很多01背包的题,但是真的对01背包领悟透彻了吗?,看我这一篇,使君对01背包的理解更进一步【代码+图解+文字描述】

一.概念理解&#xff1a;什么是01背包 关于01背包的概念理解如下&#xff1a;01背包是在M件物品取出若干件放在空间为W的背包里&#xff0c;每件物品的体积为W1&#xff0c;W2至Wn&#xff0c;与之相对应的价值为P1,P2至Pn。001背包的约束条件是给定几种物品&#xff0c;每种物…

SpringAMQP的使用

目录一、什么是SpringAMQP二、基本消息队列消息发送消息接收三、WorkQueue队列四、发布订阅模型FanoutExchangeDirectExchangeTopicExchange五、消息转换器一、什么是SpringAMQP 它可以大大的简化我们的开发&#xff0c;不用我们再自己创建连接写一堆代码&#xff0c;具有便捷…

【MySQL--05】表的约束

文章目录 1.表的约束1.1空属性1.2默认值default vs null1.3列描述1.4 zerofill1.5主键primary key1.6 自增长auto_increment1.7唯一键 unique如何设计主键&#xff1f;1.8 外键 foreign key 1.表的约束 真正的约束字段的是数据类型&#xff0c;但是数据类型约束很单一&#xf…

安捷伦E4405B

18320918653 E4405B E4405B|Agilent|ESA-E系列|10G|频谱分析仪|9kHz至13.2GHz 安捷伦 Agilent 惠普 HP 测量速度&#xff1a;28次更新/秒 测量精度&#xff1a;1dB 可选用的10Hz分辨事宽滤波器 机箱可容纳6插槽选件卡 97dB三阶动态范围 能在现场使用的坚固&#xff0c…

mycat2安装配置,mycat2分库分表,mycat2一库多表,mycat2自增id

1、官网下载&#xff08;官网下载地址&#xff09; 官网下载地址 Index of /2.0/ 下载模板 下载jdk包 下载好后吧jdk包房到mycat的lib目录下 2、配置启动 配置结构 mycat配置文件夹 clusters- prototype.cluster.json //无集群的时候自动创建- c0.cluster.json- c1.cluster…

UML与代码的对应关系

五种关系的耦合强弱比较&#xff1a;依赖<关联<聚合<组合<继承 依赖 虚线箭头 可描述为&#xff1a;Uses a 依赖是类的五种关系中耦合最小的一种关系。 因为在生成代码的时候&#xff0c;这两个关系类都不会增加属性。 注意1&#xff1a; Water类的生命期&…

【机器学习】独立成分分析(ICA)及Matlab实现

独立成分分析及Matlab实现1.问题引入2.ICA原理3.ICA算法步骤4.性质与优点5.程序代码6.程序分析7.运行结果1.问题引入 独立成分分析&#xff08;ICA&#xff09;最初由Aapo Hyvrinen等人于1980年代提出&#xff0c;其起源可以追溯到对神经科学和信号处理领域的研究需求。ICA的提…

C语言判断一个日期是在该年的第几天案例讲解

今天是2023年4月11号&#xff0c;我们就用今天举例得出是2023年的第几天。 思路分析 1&#xff09;我们想知道2023年4月11号是2023年的第几天&#xff0c;只需要把1到3月份的天数累加求和然后加上今天日期也就是11就可以算出2023年4月11号是2023年的第几天。 推广&#xff1a;…