一、接口测试简介
1.接口测试的定义
接口测试是一种测试系统组件间接口的测试,主要目标是检测外部系统与系统之间以及内部各个子系统之间的交互点,以检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
随着前后端分离开发的程序越来越普遍,后端开发的接口必须符合规范。用户在使用程序时,数据之间的交互也是用接口实现的,所以对接口进行测试是非常有必要的且非常重要的。
在此向大家介绍一些前后端基本概念:
- 前端:指用户操作的层面,通常都会提供一个可视化界面,例如 Web 前端、APP 前端。前端主要做的事情是网页排版,内容渲染,提供用户输入窗口,屏幕分辨率自适应以及交互效果等。
- 后端:也是服务器端,对用户数据处理的层面。接收前端传递的数据并对其处理,然后将处理结果返回给前端。后端主要做的事情是负责程序设计架构思想,管理数据库,数据的存取,平台的稳定性与性能等。
- 前后端接口:前端与后端进行数据交互的统称,也叫做数据接口,属于一种远程调用。通常来说是按照一定约定、规范由后端开发,前端使用。用户在前端进行某些操作,向后端发送请求,从而获取数据或达到一定的目的,前后端协作配合完成用户的操作。
2.接口测试的目的和意义
接口测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。只要将接口暴露出去,那么就应该是准确的,安全的,规范的,稳定的。
接口测试的核心是保证系统的正确和稳定运行。一个系统服务端越接近底层,对系统的整体影响越大。而接口就是服务端对外暴露的一个入口,因此进行接口测试可以保证接口的规范和稳定,保证服务端入口的正确。
接口测试可以保障产品质量,提升用户体验。接口测试可以让更多的隐含缺陷暴露出来,在接口开发阶段就修复掉,降低产品研发成本。在之后的性能测试、界面功能测试也能更加顺利,让产品在保证质量的前提下按时交付。
接口测试的意义在于:
-
验证接口的正确性和稳定性:通过测试接口的功能和性能,可以验证接口是否符合预期,并确定其在不同条件下的稳定性和正确性。
-
提高系统的可靠性:接口是系统组件间进行交互的桥梁,其质量直接影响到整个系统的可靠性。通过测试可以发现接口中的缺陷和错误,并及时进行修复,从而提高系统的可靠性。
-
减少开发成本,节省测试成本:在敏捷开发盛行的时代,测试工作也需要跟随产品的发布进行快速迭代。近两年又提出了测试左移的概念,让测试工作尽早介入,因为越早的发现缺陷,修复的成本就越低。根据数据模型推算,底层的一个 BUG 能够引发上层的 8 个左右 BUG,而且底层的 BUG 很容易引起全系统的崩溃。进行接口测试,可以减少界面测试的 BUG 数,降低修复成本,节省测试成本。
-
保证系统的安全性:接口测试可以检测接口级别的安全漏洞,保证系统的安全性。
-
促进团队合作:接口测试需要不同部门之间的合作和协调,可以促进团队合作和交流。
总之,接口测试是保证系统质量和可靠性的重要环节,有助于提高系统的健壮性和用户体验。
3.接口测试的分类
接口测试主要可以分为以下几类:
- 功能测试:主要验证接口是否能够正确地完成预期的功能要求,包括输入输出、返回值、异常处理等方面。
- 性能测试:主要验证接口在负载、并发等压力下的性能表现,包括响应时间、吞吐量、并发数等方面。
- 安全测试:主要验证接口是否存在安全漏洞,例如SQL注入、跨站脚本攻击、权限控制等方面。
- 兼容性测试:主要验证接口在不同的操作系统、浏览器、设备等环境下的兼容性,确保接口能够正常运行。
总之,针对不同的测试目的和要求,可以选择相应的测试类型进行接口测试,以便全面覆盖接口的功能和异常情况,保证接口能够正常工作并达到预期的效果。
4.常见的接口协议
接口协议(Interface protocol)指的是需要进行信息交换的接口间需要遵从的通信方式和要求。接口协议的种类非常多。接口协议不仅要规定物理层的通信,还需要规定语法层和语义层的要求。
接口通常有以下几种协议类型:
TCP
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、 基于字节流的传输层协议。在 OSI 网络七层模型中属于传输层协议。TCP 提供 IP 环境下的数据可靠传输,它会事先为所发送的数据开辟出连接好的通道,然后再进行数据发送。 TCP 旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠 TCP 提供可靠的通信服务。
UDP
UDP(User Datagram Protocol 用户数据报协议)为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。与 TCP 都是在 OSI 网络七层模型中的传输层协议,但 UDP 提供的是非面向连接的、不可靠的数据流传输。它只是把应用程序传给 IP 层的数据报发送出去,但是并不保证它们能到达目的地。
HTTP
HTTP(Hyper Text Transfer Protocol 超文本传输协议)是一个简单的请求-响应协议,通常运行在 TCP 之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。在 OSI 网络七层模型中属于应用层协议。主要特点是简单快速、灵活、无连接、无状态。
HTTPS
HTTPS(全称:Hypertext Transfer Protocol Secure),是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS在HTTP的基础下加入SSL,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。
RPC
RPC(Remote Procedure Call 远程过程调用协议)是一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。简单来说就是一个节点请求另一个节点提供的服务。在 OSI 网络七层模型中,RPC 跨越了传输层和应用层。RPC 使得开发,包括网络分布式多程序在内的应用程序更加容易。像 Web Service、RESTFul 都是 RPC,只是消息的组织形式、消息协议不同。
FTP
也称为文件传输协议,是一种用于在网络上传输文件的协议。FTP 使用客户端/服务器模型,客户端通过在本地和服务器之间来回传输文件来传输文件。
SOAP
也称为简单对象访问协议,是一种基于 XML 的协议,用于在网络上传输结构化数据。SOAP 使用 HTTP 或 SMTP 协议传输,并使用 XML 格式编码数据。
REST
也称为代表性状态转移,是一种基于 HTTP 协议的架构风格。REST 使用 HTTP 方法(GET、POST、PUT、DELETE 等)对资源进行操作,并使用 URI 标识资源的位置。
二、接口文档
1.接口文档介绍
接口文档是一种说明文档,用于描述软件组件或Web服务如何与外界进行交互的接口。它提供了对接口名称、接口URL、调用方式、参数格式、响应格式以及返回示例等信息进行详细说明,使得调用者可以方便地了解和使用接口。
接口文档的主要目的是提供一种标准的文档格式,使得接口的调用者可以根据文档中提供的说明进行操作,同时也可以为接口的开发和维护提供便利。
在前后端分离的项目开发中,一份 API 接口文档至关重要。它是由前后端工程师共同定义接口,之后的开发工作中都需要根据此接口文档进行开发。接口文档可以使项目在开发过程中前后端工程师有一个统一的文件进行沟通交流,如果项目人员更迭,可以方便查看,了解项目功能接口。后期维护上也非常有利。
2.接口文档
以《腾讯文档开放 API 介绍》为例来介绍接口文档,地址:腾讯文档
一份优秀的接口文档包含:简介、概念术语、API 概述、使用步骤、API 接口详情和其它内容。
-
简介:简要介绍接口文档的主题、目的以及范围,让读者能够快速了解文档的核心内容,不需要过多,描述清楚该文档是做什么用的即可。
-
概念术语:专业词汇的解释,列出与接口相关的重要概念和术语,以确保读者对它们有充分的了解。这包括一些基本的计算机科学和编程术语,以及特定于接口的术语。
-
API概述:对 API 的分类总结,API 都提供了哪些功能;提供对接口的概述,包括接口名称、版本、支持的语言和相关文档等。
-
使用步骤:API 接口如何使用、采用的通信协议、使用时注意点、鉴权、返回的错误代码含义都应该有所体现。
-
API接口详情:API 接口详情是接口文档的核心内容,也是开发工程师查看最多的一个地方,里面记录了每一个接口的详细内容,并且提供了使用示例。有些接口文档就只有一个 API 接口详情,让开发人员知道有多少接口可以使用,怎么使用就可以了。
-
其它内容:与接口相关的内容。例如《腾讯文档开放 API 介绍》就有一大项是开发与应用注册,不是接口文档中的主要内容,但与接口相关。
总之,一份优秀的接口文档应该清晰、简明易懂,提供足够的细节,以便读者能够轻松地理解和使用接口。同时,文档应该易于查找和理解,以便读者能够快速解决问题和获得必要的支持。
3.接口分析
一个接口应该有请求方式、URL、请求参数和返回参数四部分内容。
- 请求方式:接口请求发送的方式,例如 GET、POST、PUT、DELETE。
- URL:接口请求的地址。
- 请求参数:一般有四个内容,分别是参数名称、参数类型、是否必选和描述。
- 返回参数:返回参数结构多样,可以是 Code 和 Message,也可以是一个对象或列表。
一个接口的详情应该包括四部分内容,分别是接口描述、输入参数、输出参数及示例。
- 接口描述:接口功能介绍和接口的定义(包括接口的 URL、请求方式)。
- 输入参数:输入参数的定义和描述。
- 输出参数:调用接口后的返回值。
- 示例:接口的使用,示例代码。
如下图所示:
3.1 接口描述
描述 | 定义 |
接口名 | /openapi/v1/user/auth |
请求方式 | POST |
请求格式 | application/x-www-form-urlencoded |
本接口用于获取用户的登录态
3.2 输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。
参数名称 | 类型 | 必选 | 描述 |
APPID | Integer | 是 | 公共参数 |
TIMESTAMP | Integer | 是 | 公共参数 |
NONCE | Integer | 是 | 公共参数 |
SIGNATURE | String | 是 | 公共参数 |
下面登录方式三选一,每次只能传一种方式
企业微信 Token/Code 登录时,传下列参数
参数名称 | 类型 | 必选 | 描述 |
third_token | String | 是 | 第三方票据,用户向第三方验证用户信息 |
login_type | Integer | 是 | 填 0 |
QQ 登录时,传下列参数
参数名称 | 类型 | 必选 | 描述 |
third_daid | Integer | 是 | 第三方登录域 |
third_puin | Integer | 是 | 第三方登录QQ号 |
third_pskey | String | 是 | 第三方登录PSkey |
login_type | Integer | 是 | 填 1 |
微信登录时,传下列参数
参数名称 | 类型 | 必选 | 描述 |
third_wx_appid | String | 是 | 第三方微信appid |
third_openid | String | 是 | 第三方微信登录OpenID |
third_access_token | String | 是 | 第三方微信access token |
login_type | Integer | 是 | 填 2 |
第三方回调登录时,传下列参数
参数名称 | 类型 | 必选 | 描述 |
third_token | String | 是 | 第三方票据,用户向第三方验证用户信息 |
login_type | Integer | 是 | 填 3 |
3.3 输出参数
参数名称 | 类型 | 描述 |
toid | String | 用户ID |
toid_key | String | 用户登录key |
jump_code | String | 跳转用一次性 code |
3.4 示例
如下图所示是创建文档接口的示例。