什么是 API ?
API 是“应用程序编程接口”的缩写,是一种答应不同应用程序之间彼此通信和交换数据的接口。就好像在餐厅点餐相同,你只需求告知服务员你想要的食物,而不需求了解厨房中的具体操作,服务员会把你的订单传递给厨房,然后将厨师烹饪好的食物供给给你。在这个过程中,服务员扮演的便是一个 API 的角色。同样地,当你运用 API 时,你只需求调用所需的功用和服务,而不需求了解底层的代码完成。因而,API 就像是应用程序和其他软件之间的“中间人”,使它们能够彼此通信和交互。
跟着数字化的不断深入,软件体系变得越来越复杂,传统的单体架构已经无法满足事务发展的需求。因而,微服务架构应运而生,它将单体架构中的功用分解成多个小型的、自治的服务,每个服务都具有独立的数据存储、事务逻辑和用户界面。这种架构的优点在于,不同的服务能够独立地进行开发、测验和布置,从而加快了软件开发的速度和灵活性。
微服务架构的诞生也使得 API 的数量激增。在单体架构中,整个应用程序只需求一个 API 来完成所有的功用。但在微服务架构中,每个服务都需求一个 API 来与其他服务进行通信,并且服务的数量可能会十分巨大。因而,API 在微服务架构中的作用愈加重要。
为什么要进行 API 测验?
跟着 API 数量的激增, API 的质量也变得愈加重要,任何一个过错的 API 都可能会对整个体系产生严峻的影响。
API 测验能够检测 API 的功用正确性、可靠性、安全性等方面的问题,协助开发者在代码布置到生产环境之前,检测和修复潜在的问题,从而进步整个体系的可用性和可靠性。除此之外,API 测验还能够协助开发者更快地呼应事务需求。尤其是在微服务架构中,不同的服务可能会频频地进行版别迭代和更新,相关于界面测验,API 测验能够更早开端,让体系更快地呼应事务需求。
HTTP/HTTPS 协议
API 基于特定协议的通信接口,经过不同的传输协议进行数据传输。在介绍 API 测验之前,还需求了解一下 HTTP 协议的相关特性和标准,这样会更好掌握 API 接口测验。
目前最常见的 Web Service API 包含:SOAP、REST、RPC,我们大多数时刻最常接触到的便是 REST 风格的 Web Service。RESTful API 是一种契合 REST 架构风格的 API,它运用 HTTP 协议的恳求办法来拜访资源,并运用 URIs(Uniform Resource Identifiers)来标识资源。
HTTP 是一种应用层协议,能够支撑多种数据格局的传输,包含 JSON、XML 等。HTTPS 则是在 HTTP 上参加 SSL/TLS 加密层的安全传输协议,供给了更高的安全性。HTTP/HTTPS 协议的恳求和呼应消息都是由报文组成的,恳求报文包含恳求办法、恳求头、恳求体等信息,呼应报文包含呼应状况码、呼应头、呼应体等信息。
恳求报文
HTTP 恳求报文的结构一般由三部分组成:恳求行、恳求头和恳求体。其间,恳求行包含恳求办法、恳求 URI(指定客户端恳求的资源的URI,包含路径、查询参数等) 和 HTTP 协议版别;恳求头包含一些附加信息,例如恳求的主机名、浏览器类型等;恳求体则包含恳求的具体内容,例如表单数据、JSON 数据等。
例如,以下是一个 HTTP 恳求报文的示例:
恳求 URL
恳求 URL(Uniform Resource Locator)是用于定位互联网上资源的地址。它一般由协议类型、主机名、端口号、路径和查询字符串等组成。例如:
www.example.com:8080/api/login?p…
其间:
- https 是协议类型
- www.example.com 是服务器地址
- 8080 是服务器所开放的端口
- /api/login 是被操作的资源路径
- param1=value1¶m2=value2 是查询字符串
经过恳求 URL,客户端能够向服务器发送恳求并获取相应的资源。
恳求办法
标准的 RESTful 只有 GET、POST、PUT、DELETE 这四种操作。
办法 | 描绘 |
---|---|
GET | (查询)发送恳求来获得服务器上的资源,恳求体中不会包含恳求数据,恳求的数据会附在URL之后,以?分隔。 |
POST | (新增)向服务器提交资源( 例如提交表单或上传文件 )。数据被包含在恳求体中提交给服务器。 |
PUT | (修改)向服务器提交资源,并运用提交的新资源,替换掉服务器对应的旧资源。 |
DELETE | (删去)恳求服务器删去指定的资源。 |
恳求头
恳求头(Request Header)是在 HTTP 恳求中,客户端向服务器发送恳求时所带着的一些附加信息,用于告知服务器一些客户端的信息和需求。恳求头一般包含一些标准的 HTTP 头部字段,例如 User-Agent、Accept、Accept-Encoding、Cookie 等等。这些头部字段能够协助服务器了解客户端的类型、才能和需求,从而更好地呼应客户端的恳求。
如在上例中的恳求报文中的恳求头中:
- Host:指定了恳求的方针服务器地址
- User-Agent:指定了发送恳求的客户端,即运用 Firefox 58.0 浏览器的 Windows 10 操作体系。
- Accept:指定了客户端能够承受的呼应数据类型为 json
- Content-Type:指定了恳求体中的数据类型为 json
- Content-Length:指定了恳求体的长度为 43 个字节
恳求体
恳求体(Request Body)是在 HTTP 恳求中,客户端向服务器发送恳求时,带着的一些数据信息,用于告知服务器客户端需求提交的数据。恳求体一般用于 POST、PUT 等恳求办法中,用于向服务器提交数据,例如表单数据、JSON 数据等等。
恳求体的格局和内容一般由恳求头中的 Content-Type 字段指定,例如 application/x-www-form-urlencoded、application/json 等等。服务器能够依据恳求体中的数据信息,进行相应的处理和呼应。
呼应报文
HTTP 呼应报文的结构也由三部分组成:状况行、呼应头和呼应体。其间,状况行包含 HTTP 协议版别、状况码和状况描绘;呼应头包含一些附加信息,例如呼应的内容类型、呼应的长度等;呼应体则包含呼应的具体内容,例如 HTML 页面、JSON 数据等。
以下是一个 HTTP 呼应报文的示例:
怎么进行 API 测验
API 测验作业首要流程有:
- 确认测验目的和规模:首先需求阅览产品规划文档和接口文档,清晰要测验的接口的功用和特性,并确认测验的规模,例如测验的是哪些接口、恳求和呼应的数据格局、参数、回来值等。
- 规划测验用例:依据该接口参数,构造不同的用例,测验接口在参数合法及不合法状况下能否到达预期作用。
- 运用 API 接口测验东西发送恳求并验证呼应,如 Postman、AREX 等。
接口测验的测验点
接口测验是对体系中的各个接口进行测验,以验证接口的功用、功能、安全等方面是否契合需求和标准。
1. 功用测验
验证接口的功用是否正确完成了、接口是否依照规划文档中来完成。
单接口功用测验:
- 兼容性测验:验证接口在不同的操作体系、浏览器、设备等环境下的兼容性。
- 参数验证:验证接口参数的正确性、完整性、合法性等,包含参数类型、长度、格局、规模等。
- 接口回来值验证:验证接口回来值的正确性、完整性、合法性等,包含回来值类型、长度、格局、规模等。
- 反常测验:验证接口在反常状况下的处理才能,包含参数过错、数据反常、网络反常、服务器过错等。
多接口的事务场景功用测验:
针对一个或多个事务场景,测验多个接口之间的交互和协作是否正常。这种测验一般需求模仿实在的事务场景,包含多个接口的调用顺序、参数传递、回来成果等,以保证整个事务流程的正确性和稳定性。在测验过程中,需求对每个接口进行单独测验,一起也需求对多个接口之间的交互进行测验,以发现潜在的问题和缺陷。
2. 功能测验
验证接口在高并发、大数据量等状况下的功能体现,包含呼应时刻、吞吐量、并发数等。
- 压力测验:模仿多用户并发拜访接口,调查接口的功能体现,如呼应时刻、吞吐量、过错率等。能够运用一些东西来进行压力测验,比如JMeter、LoadRunner等。
- 负载测验:测验接口在不同负载下的功能体现。负载测验能够分为静态负载和动态负载两种方式。静态负载是指在预定的并发数下测验接口的功能体现,而动态负载是依据实际负载状况动态地调整并发数,以测验接口在不同负载下的功能体现。
- 并发测验:测验接口在并发拜访下的功能体现。并发测验能够经过多线程的方式完成,模仿多用户一起拜访接口,调查接口的功能体现。
- 容量测验:测验接口能够承受的最大负载量。容量测验能够经过逐步添加负载的方式完成,直到到达体系的极限为止,调查接口的功能体现。
- 稳定性测验:测验接口在长时刻运行中的稳定性体现。稳定性测验能够经过长时刻运行的方式完成,调查接口在长时刻运行中的功能体现。
3. 安全测验
测验接口的安全性,包含其防护才能、认证授权、数据加密等方面的测验。
- 鉴权和授权测验:测验接口在拜访控制方面是否契合预期,验证用户身份和授权是否正确,避免未授权的用户或歹意用户拜访体系。
- 输入验证测验:测验接口在输入验证方面是否正确,验证输入数据的正确性、合法性和格局等,避免歹意用户利用输入数据来进犯体系。
- SQL注入测验:测验接口是否存在SQL注入缝隙,避免进犯者经过注入歹意SQL语句来获取敏感数据或者破坏体系。
- XSS测验:测验接口是否存在跨站脚本进犯缝隙,避免进犯者经过在页面中注入歹意脚本来获取用户的敏感信息。
- CSRF测验:测验接口是否存在跨站恳求假造缝隙,避免进犯者经过假造用户恳求来履行歹意操作。
关于安全测验,需求针对不同的安全危险和要挟,采用不同的测验办法和技术进行测验。一起,也需求考虑测验环境的安全性,如测验数据的保护、测验过程中的安全管理等。为了进步测验效率和覆盖率,能够运用安全测验东西来辅助测验,如缝隙扫描东西、代码静态剖析东西等。
发送恳求验证呼应
这里运用 AREX 进行演示,首先我们需求创建一个接口恳求:
添加恳求 URL
在地址栏中输入你要发送恳求的接口地址。
选择恳求办法
新建恳求后,恳求办法默许选择为 GET,GET 恳求将从服务器获取信息。
添加查询参数
Query Parameters 即 URL 中 ? 后的参数,经过 & 分隔多个参数,能够向 Web 应用程序传递附加信息。
装备恳求头
如需求随恳求发送特定的恳求头信息,能够添加恳求头键值对。
Body 参数
当你需求将数据从客户端发送给 API 时,则需求随恳求发送恳求体数据。一般在 PUT 、POST 和 PATCH 恳求中会运用到恳求体。
运用脚本
脚本分为前置脚本和后置脚本两种,分别对应 API 恳求前和回来数据后的两个阶段。
前置脚本是在 API 恳求前履行的 JavaScript 代码,能够运用前置脚本添加认证信息、设置恳求超时时刻、检查恳求参数的格局等。AREX 供给了常用的前置脚本,可直接点击运用。
后置脚本(Tests)是在 API 恳求回来数据后履行的 JavaScript 代码。首要用来测验(断言)恳求回来成果的正确性。
装备好恳求参数后,点击发送即可获取呼应。
回来呼应
呼应框的上方能够看到恳求的状况码、恳求时刻和恳求巨细。
Response Body 是呼应的正文,即从服务器回来的呼应内容,内容的数据格局默许为 JSON。
Raw 视图能够查看原始的呼应体内容。
Headers 能够看到呼应头信息。
假如设置了后置脚本,则能够在 Results 中查看履行脚本的成果。