ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

7.18API自动化测试——接口测试

2022-07-18 19:02:29  阅读:253  来源: 互联网

标签:协议 HTTP 请求 7.18 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自动化测试。

金字塔模型:

image
越底层的应该投入大量的精力去做,越上层的投入少量的精力去做。
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、知道数据传输的目的地

链路层:

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

image

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

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

第 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 次握手,如图所示。
image

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

问题:

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

URL:统一资源定位符

URI可以称为统⼀资源标识符,⽽URL是统⼀资源定位符。URI可以理解为标识某⼀个互联⽹的资源,⽽URL表示的资源的地点。HTTP协议中使⽤URI定位到互联⽹上的资源,这也是为什么互联⽹任意位置的资源我们都能够获取到的原因。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息URL。
image

HTTP协议

在微服务的架构模式下,使⽤的也是轻量级的通信模式(REST API),在微服务的架构模式中,需要清楚的是它的通信可以分为同步通信模式和异步通信模式, 或者更加具体本质的说就是请求/响应和异步请求/响应(发布/订阅模式)。

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

1、客户端与服务端之间建立TCP的连接请求
2、客户端发送Request请求给服务端
3、服务端Response响应回复客户端的请求
4、客户端与服务端之间的TCP连接请求关闭
image
持久连接:connection:keep-alive

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

image

通信模式:

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

image

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

image

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:删除资源
image
GET请求方法:GET请求方法是在Query Params里面填写的,也就是说填写后,是在URL后它的格式是?key1=value1&key2=value2
所以GET方法的请求参数又称呼为路径参数

有请求参数的GET方法

http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo

步骤1:在接口文档中获取方法和地址:(协议加第二行的域名加第一行的资源路径)
image
步骤2:在postman中选择GET方法,复制地址,点击send会自动出现请求参数(KEY),我们进行填写(如下图的VALUE部分)
image
(GET方法的请求参数 在postman中是写在Params中的)

理论总结:

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

实战:
1、浏览器查看网络请求
2、PostMan发送GET的请求
http://www.webxml.com.cn/zh_cn/support.aspx

标签:协议,HTTP,请求,7.18,API,测试,服务端,客户端
来源: https://www.cnblogs.com/L-NaNa/p/16490611.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有