乐趣区

关于测试:什么是-API-接口测试

什么是 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)是用于定位互联网上资源的地址。它通常由协定类型、主机名、端口号、门路和查问字符串等组成。例如:

https://www.example.com:8080/api/login?param1=value1&param2=v…

其中:

  • https 是协定类型
  • www.example.com 是服务器地址
  • 8080 是服务器所凋谢的端口
  • /api/login 是被操作的资源门路
  • param1=value1&param2=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 测试工作次要流程有:

  1. 确定测试目标和范畴:首先须要浏览产品设计文档和接口文档,明确要测试的接口的性能和个性,并确定测试的范畴,例如测试的是哪些接口、申请和响应的数据格式、参数、返回值等。
  2. 设计测试用例:依据该接口参数,结构不同的用例,测试接口在参数非法及非法状况下是否达到预期成果。
  3. 应用 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 中查看执行脚本的后果。


  • 我的项目地址:https://github.com/arextest
  • AREX 文档:http://arextest.com/zh-Hans/docs/intro/
  • AREX 官网:http://arextest.com/
  • AREX 官网 QQ 交换群:656108079
退出移动版