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