什么是 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 中查看履行脚本的成果。