DevOps 是云时代的开发标配,最近在团队中推广后收获颇丰,发现大家 coding 的幸福指数都提高了,但我觉得似乎它还不够完整,后来我知道了,它缺失了上线前的最后一公里 —— 集成 Apifox 的自动化测试。
Apifox 是什么
Apifox = Postman(调试) + Swagger(文档) + Mock(数据Mock) + JMeter(自动化测试)
前后端开发 后端开发 前端开发 无(测试手动测试app)
这是我们之前的前后端开发流程,正对应官方说明的旧时代协作方式。
接口调试、API文档、Mock 这些我想一线的前后端开发比我更有深有体会,不再使用各种各样的工具,团队在一个地方统一定义、调试接口,一致的协作体验无疑能极大的提高效率。
我是后端开发,但更偏向于基础设施、开发质量和协作方面的工作。所以我这里主要关注的是自动化测试。
为什么是 Apifox
第一次见到它时,我以为就是个换皮的 Postman,只是加了汉化而已,毕竟 Postman 要普及很多,哪怕没有中文支持,国内开发者依然很热衷它。
可很快我就发现,Apifox 确实是对前后端协作开发的痛点理解得最为深刻和彻底的,的确落实了官网的口号。此时我再对比发现确实是青出于蓝了。这让我想到一句话,“解决方案会更快被淘汰掉,而问题能够延续更久”,显然 Postman 是前者,Apifox 是后者。 前者提供的是解决方案,而后者是持续关注开发者api协作开发的这个问题。
Apifox 为什么要选择走这样一条任重而道远的路,我也在后面找到了答案,原来 Apifox 创始人张剑光就是技术出身,且核心团队源自之前的创业团队,我在想这个项目或许是他们某次深夜下班时,看着疲惫不堪的自己,突然大喊一声说:“我们就做这个吧!”,“对,早就该做了”,“你们知道我说的是什么吧”,...,他们是在为自己,为程序员这个群体做一款好用的工具,想到这里我会心的笑了。
Apifox 选择与开发者站在一起,所以我们选择与她站在一起。
我们怎么使用 ApiFox
“你这接口保熟吗?”,“我刚测试还是好的,你再看看”
坦白地说,我想没人敢对接口“保熟”。
基础代码我们都会写单元测试,可是上线的接口,会牵扯到环境、业务依赖等各种情况,单纯的构建过程显然无法做到覆盖所有接口测试的,在项目初期基础代码经常更改,谁能保证刚才还可以的接口现在还是好的呢?
在一天要发布十几版,几个环境时,人工手动测试如何能够完全覆盖到。
这就是我们面临的问题:对接口进行测试非常繁琐,不测试,无法“保熟”,无法安心睡觉。
ApiFox 自动化测试 为我们提供了方向:
apifox run https://api.apifox.cn/api/v1/api-test/ci-config/123/detail?token=XXX -r html,cli
我们将 ApiFox 自动化测试 集成到我们的发布流程当中:
自此,接口终于“保熟”了。
就这么简单?对,就这么简单。
已经迫不及待的想要试试吗?这是官网:www.apifox.cn
附:常用脚本
断言 result success check
pm.test("assert result success: code != 0", function () {
var jsonData = pm.response.json();
// console.log(jsonData);
pm.expect(jsonData.code).to.not.eql(0);
});
断言 result error check
pm.test("assert result error: code == 0", function () {
var jsonData = pm.response.json();
// console.log(jsonData);
pm.expect(jsonData.code).to.eql(0);
});
请求前注入设备id参数
var uuid = require("uuid"), btoa = require('btoa');
var queryParams = pm.request.url.query;
// var base_url = pm.environment.get('BASE_URL');
// var k = 'device_id:' + btoa(base_url);
var k = 'device_id';
var device_id = pm.environment.get(k) || '';
if (device_id === '') {
device_id = uuid.v4().split('-').pop() + String(Date.parse(new Date()) / 1000);
}
// console.log(p, k, device_id);
// 设置环境变量
pm.environment.set(k, device_id);
// 注入请求参数
queryParams.upsert({
key: 'device_id',
value: device_id,
});
看云 API 接口导出
最新可用脚本在这里:pan.baidu.com/s/1eBzInCsm…
总结
在一个地方,前端、后端、产品、测试 们在一起,用一个工具完成 api 接口的不同阶段的开发与测试,并持续地“保熟”上线。一个提升 coding 幸福感 的工具,先进团队,用 Apifox,不加班。
本文来源: devops自动化运维、部署、测试的最后一公里 —— ApiFox 云时代的接口管理工具 · php笔记 · 看云