这么好用的接口工具,请允许我油腻一次!
我与 “Apifox ”的网络情缘
亲爱的朋友们,想借此机会跟大家分享一个 Love Story:我与 Apifox 的网络情缘。
![](https://static001.geekbang.org/infoq/d8/d809284ed0082da5e606d9c9092a6164.gif)
1 引言
简单介绍一下故事人物:
PS:性别为故事剧情需要,莫过于较真 ~
![](https://static001.geekbang.org/infoq/52/52481b4e15c8f62bc75f6e23de3453bc.png)
2 缘起
年前的时候,测试负责人刘哥说“为了保证每次迭代质量上线,除了原有的功能(UI)层面的测试以外,必须把 API 接口自动化测试提上日程。 更早的介入接口测试,可更早的发现软件缺陷,而且接口测试更稳定!每次回归跑一跑他不香么 blabla”。从那以后他就开起来当“月老”的暴走模式。介绍的对象中印象深刻的有:Jmeter,swaggerUI,MeterSphere,soapUI, Katalon Studio,Robotframework,Postman 。 这几个相信测试的童鞋比较熟悉。各花入各眼,都个有优缺点,就不展开说了。 在相处的过程中,Jmeter 终处成了闺蜜,压测的时候经常一起玩耍;该说不说提一嘴,不得不好好提下 Postman,毕竟“前任”。必须得给画面:
![](https://static001.geekbang.org/infoq/45/456a5abcb7a84302ec44ae7c92370fc8.png)
Postman 有很多优点:
①支持 http、https 协议,做接口调试非常的优秀
②保留历史记录,方便组织测试用例及支持多终端同步用例
③支持读取 csv,json 数据文件
④支持创建不同权限的 Workspaces,能支持团队协作(按照团队规模和团队协作的功能模块收费),但免费版的团队合作支持跟没有是差不多,差评...
缺点就不当众说了吧;刘哥结合我的具体情况,也对下一”对象”明确了几点要求:
①必须很好的支持团队合作,
②零学习成本
③ 方便做 API 自动化测试
④能对数据库进行相关操作
⑤要能 MOCK 数据
⑥ 长得要好看
不能说我阿哲渣,确实是几经波折相处下来发现真的都不是最合适的。
![](https://static001.geekbang.org/infoq/ae/ae5314488c826e2977f6c83a6b3e6845.png)
3 相遇想识
有人说”前世 500 次的回眸才换来今生的相遇”;一次偶然,刘哥带你(Apifox)走进了我的视野。没错,只是因为在人群中多看了你一眼,再也没能忘掉你容颜。从对视的那一刻起,我知道这就是“缘”!
![](https://static001.geekbang.org/infoq/c2/c24ef1209c361b96089f67d6f7a17c2d.png)
阿哲:“你好,我是阿哲”
Apifox:“你好,我是小狐” ...
4 相知相爱
相识后,我用尽所有一切能知道的办法探索、努力尝试,只为走进你的世界,也带你了解我的世界;增进了解,拉近彼此距离。 经历了这段时间的磨合,我们相爱了,爱的那么深,爱的那么认真!我深知你所有的好。
4.1 Apifox 下载安装
Apifox 支持 桌面版和 WEB 版 , 受制于各种网络、硬件等环境影响,经过长时间使用,个人推荐大家直接下载桌面版安装使用,更稳定。小狐支持各 Windows,macOS,Linux 系统桌面版。官网下载地址:www.apifox.cn
![](https://static001.geekbang.org/infoq/34/348375ad3e64f41652ec152c19640a74.png)
4.2 创建团队和项目
要创建自己的团队和项目,首先需要在 Apifox 上注册个账号(邮箱注册),也可以直接微信扫码登录,这种方式是也是他们比较推荐的登录方式。
![](https://static001.geekbang.org/infoq/ac/ace67ebc86b1ff7a62bfe77b170f79cb.png)
无论哪种方式操作都很简单根据提示来就行了,不赘述。 非常有意思的是 Apifox 支持多样的外观,也就是她有非常多样的衣服颜色搭配 在注册登录界面的时候就可以选择自己喜欢的界面风格(外观、主色、字体大小任意搭):
![](https://static001.geekbang.org/infoq/cf/cf07837be5305ebe082c70221124fefc.png)
有了账号就可以创建自己的团队和项目了:
![](https://static001.geekbang.org/infoq/f0/f0780640afa538b9824c8db6061d9273.png)
若有多个团队 可以拖动换位置, 多个项目同理:
![](https://static001.geekbang.org/infoq/f3/f34d2f9de48102e75008039f6dbcfe8b.png)
项目这多说一句可以你容易克隆、移动、删除项目,删除项目需人工输入项目名称确认 ,这个设计很好,避免误操作一下子把项目干掉了:
![](https://static001.geekbang.org/infoq/1c/1c196a476e0baf248a1748a7f36f3058.png)
4.3 邀请成员/设置权限
既然我们要团队协作, 团队成员进来是必须的,Apifox 提供了 3 中邀请方式:链接要求、邮箱要求、账号邀请,不管哪一种操作都比较方便。
![](https://static001.geekbang.org/infoq/d6/d6ef5216de8a828a6666b8b96afd8436.png)
![](https://static001.geekbang.org/infoq/33/337031d84e014b02a47638903cfbb373.png)
4.4 接口文档设计
使用 Apifox 设计接口方便快捷,遵循 OpenAPI 规范,完全可视化 。光标移动至已创建的项目的
![](https://static001.geekbang.org/infoq/86/86ab2d7e2f3062c216a10f167d22332a.png)
位置 ,点击【新建接口】,然后根据接口的设计要求,填入接口路径、名称、分组、状态、参数、责任人、标签、服务、请求参数、返回响应及其相应的数据结构等。
![](https://static001.geekbang.org/infoq/3d/3d81e193f4c950d7ed874067d2487e64.png)
设计文档这里还有个亮点,就是 自定义接口文档字段的使用, 我们希望接口文档 跟 产品需求文档 一一对应, 于是我们在接口文档中自定义了 “Confluence 需求链接”:
![](https://static001.geekbang.org/infoq/7d/7dc62b06ff2ce51550062d45e23d053b.png)
若是已经实现的功能,在 Apifox 里补充接口文档, 有个快速的方法, 通过 JSON/XML 智能识别/快速导入,很好用:
![](https://static001.geekbang.org/infoq/c7/c74deda24bd6680a6d75c7cbdf53025b.png)
![](https://static001.geekbang.org/infoq/8d/8d77f6cbb6e6375a11417b15d25fc014.png)
4.5 接口数据导入
之前 API 大部分都在 Postman 和 RAP 上,Apifox 导入数据的功能异常强大,几乎你用到的数据格式都支持,这个必须点赞!我的数据很多都来自 Postman 和 RAP,先从 Postman 和 RAP 上导出数据。
![](https://static001.geekbang.org/infoq/3b/3b5a3d29450ef107c5544276cb25e52b.png)
然后通过【项目设置】的 【导入数据(手动导入)】把数据导入 Apifox;导入后正常运行。只是在 Postman 导入的过程中,发现了小问题,就是我的有些接口的请求参数默认导成了 form-data 格式,而我们都是 JSON 的,这个问题还需要深入研究下 WHY。
![](https://static001.geekbang.org/infoq/f0/f04463a0c50845d4be17a5678e79857b.png)
![](https://static001.geekbang.org/infoq/28/282382faa52bcbd937d5639c28b63c22.gif)
4.6 接口调试
4.6.1 Apifox 调试之”自动校验”:
小狐调试接口基本操作跟 Postman 操作无差别。而且调试时亮点不少,比如调试时 小狐 会 ”自动校验” 数据结构,她会根据接口文档的定义,“自动校验“”返回的数据结构正确与否。无需任何脚本非常奈斯。
![](https://static001.geekbang.org/infoq/d4/d472a5161aae904305fe7866dd9e07c1.png)
4.6.2 Apifox 调试之”环境、变量管理”:
调试时难免用到不同的环境,需要设置环境变量、全局变量、全局参数什么的,Apifox 全都有而且易操作。
![](https://static001.geekbang.org/infoq/ff/ffe0a68ddbd6ade51a892bc83fc8a194.png)
4.6.3 Apifox 调试之”断言”
![](https://static001.geekbang.org/infoq/e1/e139c95808d0fd062e3a9f16006bef89.png)
4.6.4 Apifox 调试之”接口依赖”
(下一个接口的请求依赖于上一个接口返回的数据)。 拿我们的项目为例, 我们有些接口都会用到登录接口返回的 token 值,具体怎么做呢? 如下:
登录接口的【后置操作】 提取变量:
![](https://static001.geekbang.org/infoq/31/3121617b57d6d24b1e66118e01583f28.png)
阿哲项目的某接口用到的登录接口返回的 token 值,在请求参数中加入前面提取的变量即可:
![](https://static001.geekbang.org/infoq/a4/a4554385b2be8597b8ef1b8100bc176f.png)
4.7 测试用例
Apifox 中组织管理测试用例超级方便,对接口文档执行【运行】操作,然后 【保存为用例】就会生成一条测试用例;并且用例会自动跟随这接口改变而变。
![](https://static001.geekbang.org/infoq/e7/e7542787ba4541deda79378707c9a27d.png)
修改请求参数,点击 发送 保存为用例 ,可再生成用例,以此类推 一个接口轻松设计多条正异常测试用例。
![](https://static001.geekbang.org/infoq/a4/a480b4d22122935bef4d0631dd9fcc2f.png)
4.8 接口 MOCK 数据
Apifox 的亮点在于,智能 MOCK 数据很人性化,我们测试人员在用的时候更多的是使用“自动生成”功能。
![](https://static001.geekbang.org/infoq/b7/b7a221e25c20bbfef9948bbed9cd408c.png)
![](https://static001.geekbang.org/infoq/46/46b8be326c6e4f0aeb1b524668c28188.png)
4.9 自动化测试
自动化测试用例的组织以及测试套件的组织与管理是我们测试小伙伴工作的重点。
![](https://static001.geekbang.org/infoq/e1/e1d93f3edb98fb0bee31df25e14c0b3b.png)
![](https://static001.geekbang.org/infoq/b8/b8a966bf5f4a2d185365c4d1d0b76c9e.png)
![](https://static001.geekbang.org/infoq/44/447d5ea568983f3e71ba7a664fd96d34.png)
我们刘哥也是推荐测试组内小伙伴用 “从【接口用例】导入(推荐)”,【接口管理】模块中组织好每个接口相关的测试用例,然后到【自动化测试】模块针对需求场景组织测试用例。
无论是测试用例还是测试套运行后都会生产测试报告
![](https://static001.geekbang.org/infoq/80/80f869aa071f33e69bedf401f0c337d1.png)
测试报告方便查看、导出:
![](https://static001.geekbang.org/infoq/39/390aae7658403242a6d0b1ff8969bd22.png)
4.10 API Hub
小狐自身带了很多第三方平台,如企业微信、钉钉等的开放 API ,相信通过对他们的学习研究,可以让自己变的更优秀。
![](https://static001.geekbang.org/infoq/0d/0d4870515da4ca6b78cc8eab1880ceab.png)
![](https://static001.geekbang.org/infoq/91/912a5885b97418ddec2bc7762ad2fe40.gif)
![](https://static001.geekbang.org/infoq/ef/efbc4b45daeba2e1cb7708dff01ff766.png)
官网下载地址:www.apifox.cn
5 相守
相爱中的人儿总是你侬我侬,容易被爱情冲昏头脑。但是我们是理智的, Apifox 已经很优秀,但仍有很多进步空间,比如:
持续集成-- 感觉持续集成的方便度还不够,有优化空间
增加对 gRPC、WebSocket 等协议接口的支持
有人说过”1000 个项目心中有 1000 个小狐”,愿我跟“小狐”的相遇、相识、相知、相爱终能相守一生。
![](https://static001.geekbang.org/infoq/d1/d19afc8017da957f199befe9e884cf53.png)
\
评论