Apifox:填补 DevOps 自动化运维、部署、测试的最后一公里 —— 国产云时代的接口管理工具

690 阅读4分钟

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笔记 · 看云