热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

接口测试之概述1

1、接口测试的技术栈(1)协议HTTP、websocket、Dubbo、gRPC;(2)接口测试的工具:PostMan,JMeter;(3)接口测试的框架;(4)MockServe

1、接口测试的技术栈

(1)协议 HTTP、websocket、Dubbo、gRPC;

(2)接口测试的工具:PostMan,JMeter;

(3)接口测试的框架;

(4)MockServer;

2、 接口测试是目前所有测试人员必须掌握的技术栈

(1)流量回放;

(2)混沌工程(混沌理论);

(3)全链路监控&分布式;

3、接口测试的发展历程

(1)2016年,前后端分离开发模式在企业全面落地;如youyuxi. VUE

(2)2019年之后,UI

   A.走向了API的自动化测试;

   B.开发模式的彻底;

(3)2021年:

   A.走向了API的自动化测试

   B.开发模式的彻底

   C.微服务的架构通信模式

4、接口测试(又称为API测试)的开发模式

主流的架构:单体架构 (单体架构发展到SOA面向服务的架构)、分布式的架构、微服务架构

(1)单体架构的开发模式:单体架构的模式是把前后以及所有的业务场景的代码都整合到一起,其模式如图(如电路的串联):

 

 如:图书管理系统:

业务场景:大家看到自己喜欢的书,然后下单,支付,购买;

业务模块:书籍管理、支付模块、账户模块、物流模块。

(2)微服务架构模式:微服务架构就是根据业务场景,把每个独立的业务场景单独分离成一个服务,这样服务和服务之间通信,通信通过REST API 或者gRPC的协议来进行交互,其模式如图:

 

 如:电路的并联。

(3)常规开发模式中接口测试的流程:

A.开发同学:

一、前端程序员把代码写完,后端程序员把代码写完;

二、前端和后端进行联调(前端把输入的账户和密码拿到,然后发送给(HTTP的协议)后端);

三、后端拿到前端发送的数据进行验证;

Element是一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,其网址如下:

https://element.eleme.cn/#/zh-CN/component/input

B.测试同学:

一、验证这个过程中业务逻辑是否能够成功;

 

5、金字塔模型

 

在金字塔的模型中,测试分为三个维度来进行思考,分别是单元,服务和UI三个层级。

服务层的测试,在服务层的测试维度中,主要针对的是业务接口的测试,来验证接口功能是否完整,如内部逻辑,异常处理。这样的目的是验证接口它是否稳定,所以接口的测试相对而言比较容易而且更加高效。测试用例的维护成本也低。

有很多主流的测试工具都可以做接口测试,如PostMan,JMeter,SoupUi等,除了工具还有在Python语言中很多的第三方的库都是可以来做接口测试的,如:urllib,requests,aiohttp等。

在金字塔的模型中:

(1)金字塔模型把开发测试的模型分为三层,分别是单元测试、接口测试、和UI测试;

(2)unit:单元测试 services:接口测试(API自动化测试) UI:UI测试(功能测试、UI自动化测试);

(3)越底层的,越应该投入更多的精力去保障,越上层的,投入少量的精力去保障。

6、微服务构架

(1)微服务构架模式

saas化:Software As A Service 软件即服务;

pass化:Platform As A Service 平台即服务。

(2)微服务的架构通信模式

微服务的通信模式使用的方式有两种:

A.采用基于REST API(交互模式)的轻量级的基于HTTP的协议;

B.使用的是gRPC的协议。

7、协议(HTTP、websocket、gRPC)

HTTP即“超文本传输协议”诞生了 :web1.0、 web2.0 、移动互联网。

(1)版本(HTTP)

A.目前业界使用的主流的版本是1997年发布的HTTP/1.1的版本;

B.目前HTTP最新的版本是:HTTP/2.0(gRPC的协议就是基于HTTP/2.0的版本来进行设计的) 但是业界使用的版本是HTTP/1.1。

(2)网络分层

TCP/IP分层管理:TCP/IP协议按层次主要为:应用层,传输层,网络层,数据链路层。

A.应用层

应用层决定了向用户提供应用服务时通信的活动。而HTTP的协议和gRPC的协议就是属于应用层的协议。

B.传输层

应用层的下层是网络传输层,提供处于网络连接中的两台计算机之间的数据传输,传输层UR核心的协议就是TCP/IP的协议。

C.网络层

主要是用来处理网络上流动的数据包,所谓数据包就是网络传输中的最小单位,在该层协议中,规范了通过怎样的路径到达目标计算机,并且把数据包传送给对方。

D.链路层

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

(3)websocket协议(auth2.0):客户端与服务端始终保持持久连接不会断开。

物联网:互联网技术的深度发展,互联网使用的协议都是websocket的协议

如:微信

客户端:手机微信、电脑微信,都是客户端;

服务端:腾讯的微信服务器。

(4)TCP/IP通信传输流过程图:

 

 (5)三次握手

 

三次握手的意义:应用层的协议是为了上层应用之间的交互,但是不需要关注底层网络传输层之间的事情,所以为了数据传输的安全和保障,就设计了三次握手。

如何理解三次握手:

A,第一次握手即服务端的确认:客户端发送数据出去,服务端需要确认我收到了;

B.第二次握手即服务端反馈:服务端告诉客户端,你发送的数据我这边确认收到了;

C.第三次握手即客户端确认:客户端需要向服务端再次反馈,客户端收到服务端的反馈了。

 (6)URL和URI

URI可以称为统一资源标识符,而URL是统一资源定位符。URI可以理解为标识某一个互联网的资源,而URL表示的资源的地点。

8、HTTP协议(是应用层的协议)协议本质上就是双方说的话彼此都可以理解(双方指客户端和服务端)

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

求/响应和异步请求/响应(发布/订阅模式)。

(2)REST API

A.Java:企业级开发领域具备非常强大的生命力,开发的技术栈非常完善,其中阿里的生态开发语言基本是Java

B.Python:数据分析,数据科学领域非常具备优势

C.Go:容器化的语言,应用在Docker和K8S的开发

D.PHP:轻量级的语言

E.Net:微软系列

场景:如果一个公司用三个语言开发,但是语言之间需要通信,需要数据传输,标准化就是REST API ,使用统一的标准来进行交互。

(3)HTTP完整的请求流程:

 

简要描述:第一步:客户端与服务端建立TCP连接;

第二步:客户端向服务端发送requst请求;

第三步:服务端response客户端响应回复给客户端;

第四步:客户端与服务端关闭请求。

发送Requests请求包括:请求地址、请求方法、请求头、请求参数(可能有,也可能没有)。

 

 

 

 Response回复包括:协议状态码、响应数据、响应头。

 

 

 

 

(4)持久连接(websocket协议)

在HTTP/1.0版本开始以及后面的版本中,有了持久连接,也就是keep-alive, 它的特点是只要客户端或者是服务端没有明确断开连接,那么就得一直保持TCP的连接请求,持久连接减少了TCP 连

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

 (5)gRPC协议:流式(stream)的数据

 9、通信模式

(1)同步通信:客户端发送请求给服务端,服务端必须得回应客户端的请求。同步通信又可以说是请求/响应的模式。

存在问题:

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

B.如果请求是存在大的计算量和逻辑存在问题,就会导致请求堵塞,后面的都积压同步通信又可以说是请求/响应的模式

(2)异步通信:在异步的交互中,客户端和服务端互相不需要关注对方的存在,只需要关注对应的MQ的消息,客户端与服务端的交互主要是会通过MQ的消息中间间作为消息的传递来进行交

互的。(三大主流核心的MQ:RabbitMQ,Kafka(linkyin),ActivityMQ(alibaba)),所有的MQ都可以说是队列机制,也可以说是生产者消费者的模式。所谓队列机制,遵守先进先出的规则。生产者

消费者模式:生产后可以进行快速的消费。

 

 

 

场景:如下载500MB的文件,下载需要半小时,要求下载期间可以进行做其他事情,通信模式是属于异步请求。 

 




推荐阅读
author-avatar
dotagod12
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有