Apifox:API 接口自动化测试完全指南

简介: 如果要正常访问该接口的数据,需要在 header 中提供 AdminToken: token 头,这是一个常见的需要 JWT 登录认证接口。很自然的我们想到,如果自动请求登录接口获取 token 值,然后在每次请求前自动带上这个 AdminToken 头不就行了吗,没错就是这样简单,伪代码如下:

网络异常,图片无法展示
|

1. 前言

在开始前大家可以先阅读:深入了解自动化测试:什么是自动化测试及其作用?

大家好,这是一篇关于 Apifox 的接口自动化测试教程。相信你已经对 Apifox 有所了解:“集 API 文档、API 调试、API Mock、API 自动化测试,更先进的 API 设计/开发/测试工具”。

笔者是后端开发,因此这篇教程关注的是 API 自动化测试,如果你也是后端开发,正苦于没有好的方式测试接口,对保证线上接口稳定性没有信心,那么这篇文章就是为你准备的,如果你学会了 Apifox 接口自动化测试,它几乎是一个会陪伴你整个职业生涯中的一件称心应手的兵器。

接口测试可不是简单的请求一两个接口再检查一下响应结果那么简单,没有贴近业务场景的测试意义不大,但完全模拟业务场景,一比一真实的去还原用户操作流程的测试势必会很复杂,如 接口需要登陆后才能操作怎么办?一个接口依赖上一个接口请求返回的数据怎么办?后端对请求有签名验证怎么办?后端任务是异步处理的怎么办?...

不要担心,既然是完全指南,这些问题我们就都会讲到,Apifox 强大的能力可以解决这些问题,下面我们会用真实的案例,逐步讲解覆盖到这些所有的场景。建议大家打开 autotest.apifox.cn 这个项目,一边学习里面的公共脚本(公共脚本、测试套件等都打包放在 百度网盘),一边跟着练习。

2. 接口自动鉴权

知识点:环境变量、公共脚本、pm.sendRequest脚本发送请求

我们通过一个需要登录才能访问的后台新闻列表接口,来演示接口自动登录鉴权。

默认情况下访问该接口提示需要登录:

网络异常,图片无法展示
|

如果要正常访问该接口的数据,需要在 header 中提供 AdminToken: token 头,这是一个常见的需要 JWT 登录认证接口。

很自然的我们想到,如果自动请求登录接口获取 token 值,然后在每次请求前自动带上这个 AdminToken 头不就行了吗,没错就是这样简单,伪代码如下:

完整的代码见 「公共脚本」admin: login and Auth

网络异常,图片无法展示
|

这里我们从登录接口获取 token 后,将其缓存到本地的环境变量中,这样就不必每次都请求登录了。

现在我们已经完成了 请求登录接口获取 token,并设置到 请求头中的功能,然后我们再把此 公共脚本 应用到 新闻列表的接口上,实现在 请求新闻列表接口 前自动完成 “登录”。

后台有很多接口访问都需要登录,如果一个个地去设置 前置脚本 就太麻烦了,所以这里我们直接在 admin 后端接口的分组目录上设置 前置操作 公共脚本admin: login and Auth,这样整个 admin 下的全部接口都能自动登录了:

网络异常,图片无法展示
|

我们来验证一下:

网络异常,图片无法展示
|

可以看到返回了数据,说明自动登录成功了,我们在 控制台输出 中可以看到请求了登录接口,在实际请求中 可以看到 AdminToken: token 头。

在这个例子中我们是将 用于后台登录的 用户名密码 提前配置到了 环境变量中,然后利用脚本 pm.sendRequest 请求登录接口获取 token,并设置 请求头,这样就实现了接口的自动登录。

关于变量的优先级 和 脚本的执行时机,如图所示:

网络异常,图片无法展示
|

网络异常,图片无法展示
|

3. 接口自动加签

知识点:参数注入内置类库

有一些对安全性要求较高的接口可能会有对接口请求进行验签的机制,具体是 接口请求的数据 会额外多一个 sign 字段,它的值是可以是 md5(k1=v1&k2=v2...),这样就确保了请求数据不会被篡改,但是这给我们测试带来了麻烦,我们如何每次自动生成 sign 参数呢,不用担心,这对 Apifox 来说不在话下,利用 Apifox 强大的脚本功能我们甚至能够调用外部任何语言的脚本。

知道了请求加签的原理,那么实现就很容易了,无非是 在请求前 自动算出 sign ,并注入到请求参数中去,下面是伪代码:

完整的代码见 「公共脚本」parkinglot:client: request sign and common params

网络异常,图片无法展示
|

然后 把 自动加签的公共脚本设置到 client 停车场设备端 📟 分组 的前置脚本中,这样其下所有接口请求时都有 sign 参数了。

注:这里简化了签名算法, md5(k1=v1&k2=v2..., key) 其实签名算法还有一个关键的 key参数 ,不过删减这部分内容并不影响我们这里对接口自动加签的讲解。为了力求简洁,只关注最核心的东西,文章都是使用伪代码的形式,完整代码请读者自行查看项目中的公共脚本。

4. 测试用例

知识点:接口用例(顺序)、流程控制(条件、循环、等待)、测试数据、断言

在掌握了 Apifox 的强大脚本能力后,你几乎能够解决任何鉴权、加签等问题了,接下来我们开始搭建完整的测试流程,以便真实完整的模拟正常使用时的业务测试场景

我假定你已经熟悉 Apifox 中 接口用例、环境变量、变量提取、断言 等基础概念,如果不熟悉,那建议你先快速地看一下官方文档 :Apifox 帮助文档

我们先看一个简单的场景测试:

网络异常,图片无法展示
|

我们运行测试看一下:

网络异常,图片无法展示
|

网络异常,图片无法展示
|

我们在后台看一下新闻分类和新闻确实创建成功了。

再看看一个稍微复杂一点的测试场景,一个异步任务处理的场景测试:

网络异常,图片无法展示
|

相信看到这里已经不需要我解释什么了,如你所见,Apifox 的测试用例的流程编排功能非常强大,你能 DIY 出任何复杂的场景。更多用法见文档:测试流程控制 | Apifox 帮助文档

5. Apifox CLI

知识点:命令行

如果每次测试都需要我们手动点击 运行按钮 就太不方便了,没错,Apifox 当然也考虑到了这点,Apifox CLI 就可以帮助我们实现自动化的测试。

网络异常,图片无法展示
|

点击持续集成的按钮就能够生成 命令行代码:

将这行 shell 命令复制到任意地方执行即可实时运行测试用例/套件。

6. 持续集成

知识点:自动化测试

我们先在服务器上安装 apifox-cli

然后在发布工具中集成 测试命令即可:

网络异常,图片无法展示
|

为了通用性,我们使用 php 脚本 将 apifox run ... 命令进行了封装,你理解成执行的是 apifox run ...   命令即可。

这里我们用的是 Spug 发布工具,类似 Jenkins,请根据实际情况配置。

7. 测试报告

知识点:报告解析、钉钉通知

我们在 Apifox.php 脚本执行测试命令,并解析测试生成的 json 文件,然后将结果拼装发送到钉钉群,如果有失败会 at 相应的开发人员:

网络异常,图片无法展示
|

8. 附录

上面提到的公共脚本、测试套件等都打包放在这里了:百度网盘,需要的话可以拿去参考,强烈建议直接打开项目查看功能脚本,测试用例进行参考学习。

作者:xika

相关文章
|
6天前
|
JSON API 数据格式
淘系等商品评论Json数据格式参考,API接口测试
通过以上示例和说明,你可以了解淘系商品评论的JSON数据结构和如何使用相关API接口获取评论数据。在实际操作中,你需要参考具体的API接口文档和开放平台的相关说明进行配置和调用。
|
7天前
|
测试技术 API 数据库
淘宝商品详情高级版 (item_get_pro)API如何测试
要测试淘宝商品详情高级版API(item_get_pro),需先阅读API文档,注册开放平台账号,创建应用获取密钥,搭建测试环境,选择测试工具。测试时设计用例,配置工具,发送请求,验证响应,记录日志。注意安全和数据格式。
|
22天前
|
监控 数据管理 测试技术
API接口自动化测试深度解析与最佳实践指南
本文详细介绍了API接口自动化测试的重要性、核心概念及实施步骤,强调了从明确测试目标、选择合适工具、编写高质量测试用例到构建稳定测试环境、执行自动化测试、分析测试结果、回归测试及集成CI/CD流程的全过程,旨在为开发者提供一套全面的技术指南,确保API的高质量与稳定性。
|
29天前
|
SQL 测试技术 API
如何编写API接口的自动化测试脚本
本文详细介绍了编写API自动化测试脚本的方法和最佳实践,涵盖确定测试需求、选择测试框架、编写测试脚本(如使用Postman和Python Requests库)、参数化和数据驱动测试、断言和验证、集成CI/CD、生成测试报告及维护更新等内容,旨在帮助开发者构建高效可靠的API测试体系。
|
27天前
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
37 4
|
1月前
|
安全 测试技术 API
如何实现API接口的自动化测试?
实现API接口的自动化测试涉及多个关键步骤:确定测试范围和目标、编写测试用例、选择自动化测试工具、搭建测试环境、编写测试脚本、执行测试、分析结果和回归测试。选择合适的工具和考虑团队熟悉度是成功的关键。常用工具包括Postman、JMeter和SoapUI。通过这些步骤和工具,可以有效提高测试效率和质量,确保API的稳定性和可靠性。
|
19天前
|
监控 搜索推荐 测试技术
电商API的测试与用途:深度解析与实践
在电子商务蓬勃发展的今天,电商API成为连接电商平台、商家、消费者和第三方开发者的重要桥梁。本文深入探讨了电商API的核心功能,包括订单管理、商品管理、用户管理、支付管理和物流管理,并介绍了有效的测试技巧,如理解API文档、设计测试用例、搭建测试环境、自动化测试、压力测试、安全性测试等。文章还详细阐述了电商API的多样化用途,如商品信息获取、订单管理自动化、用户数据管理、库存同步、物流跟踪、支付处理、促销活动管理、评价管理、数据报告和分析、扩展平台功能及跨境电商等,旨在为开发者和电商平台提供有益的参考。
25 0
|
1月前
|
监控 数据管理 测试技术
实现API接口的自动化
API接口自动化测试的最佳实践包括确定测试范围和目标、编写测试用例、选择合适的自动化测试工具、搭建测试环境、编写自动化测试脚本、执行自动化测试、分析测试结果和回归测试。通过这些步骤,可以提高测试效率和质量,确保API的稳定性和可靠性。此外,还介绍了如何利用API接口测试工具进行性能测试和压力测试,以及常见的挑战和解决方案。
|
1月前
|
Java 测试技术 API
拼多多 API 接口申请通过后如何进行测试?
拼多多 API 接口申请通过后,需按以下步骤测试:1. 仔细研读接口文档;2. 搭建测试环境,准备开发工具和模拟请求工具;3. 编写测试代码或使用测试工具;4. 设计测试用例,包括正常、异常和边界情况;5. 验证测试结果,检查返回值和错误处理;6. 记录和分析测试结果,确保 API 的稳定性和性能。
|
1月前
|
监控 测试技术 API
关于API接口的性能测试指南
要测试API接口的性能,需先进行功能测试,确保接口正常工作。接着编排性能测试场景,设置运行配置,使用工具如JMeter、Apifox等进行测试,监控性能指标,分析结果,优化调整,并将其纳入持续集成流程,确保高负荷下良好表现。