热门标签 | 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的文件,下载需要半小时,要求下载期间可以进行做其他事情,通信模式是属于异步请求。 

 




推荐阅读
  • 开源项目_一个国外开源项目描述中有中文“谢谢”,到底发生了什么?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了一个国外开源项目描述中有中文“谢谢”,到底发生了什么?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • 本文详细介绍了如何利用go-zero框架从需求分析到最终部署至Kubernetes的全过程,特别聚焦于微服务架构中的网关设计与实现。项目采用了go-zero及其生态组件,涵盖了从API设计到RPC调用,再到生产环境下的监控与维护等多方面内容。 ... [详细]
  • 本文详细介绍了如何在 Vue CLI 3.0 和 2.0 中配置 proxy 来解决开发环境下的跨域问题,包括具体的配置项和使用场景。 ... [详细]
  • 如何使用 `org.apache.tomcat.websocket.server.WsServerContainer.findMapping()` 方法及其代码示例解析 ... [详细]
  • HTML5 WebSocket技术详解与应用前景
    WebSocket 是 HTML5 引入的一种在单一 TCP 连接上实现全双工通信的技术。作为一种高效且低延迟的协议,WebSocket 允许服务器和客户端之间进行实时双向数据交换。该技术不仅简化了开发过程,还显著提升了 Web 应用的性能和用户体验。未来,随着更多应用场景的探索,WebSocket 在实时通信领域的应用前景将更加广阔。 ... [详细]
  • 本文探讨了利用Java实现WebSocket实时消息推送技术的方法。与传统的轮询、长连接或短连接等方案相比,WebSocket提供了一种更为高效和低延迟的双向通信机制。通过建立持久连接,服务器能够主动向客户端推送数据,从而实现真正的实时消息传递。此外,本文还介绍了WebSocket在实际应用中的优势和应用场景,并提供了详细的实现步骤和技术细节。 ... [详细]
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
  • 如果程序使用Go语言编写并涉及单向或双向TLS认证,可能会遭受CPU拒绝服务攻击(DoS)。本文深入分析了CVE-2018-16875漏洞,探讨其成因、影响及防范措施,为开发者提供全面的安全指导。 ... [详细]
  • 深入探索Node.js新框架:Nest.js第六篇
    在本文中,我们将深入探讨Node.js的新框架Nest.js,并通过一个完整的示例来展示其强大功能。我们将使用多个装饰器创建一个基本控制器,该控制器提供了多种方法来访问和操作内部数据,涵盖了常见的CRUD操作。此外,我们还将详细介绍Nest.js的核心概念和最佳实践,帮助读者更好地理解和应用这一现代框架。 ... [详细]
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 深入浅出解析HTTP协议的核心功能与应用
    前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
  • restful是这些年的高频词汇了,各大互联网公司也都纷纷推出了自己的restfulapi,其实restful和thrift,grpc类似,就是一种协议,但是这种协议有点特殊的就是 ... [详细]
  • 5分钟学会 gRPC
    5分钟学会gRPC-介绍我猜测大部分长期使用Java的开发者应该较少会接触gRPC,毕竟在Java圈子里大部分使用的还是DubboSpringClound这两类服务框架。我也是 ... [详细]
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社区 版权所有