GTest(基于YApi)接口研发效能提升10倍 实战

2020-11-09 15:17:50 浏览数 (1)

现在的互联网行业已经不是大鱼吃小鱼的时代了,而是快鱼吃慢鱼的时代,具体来讲就是从用户需求转化成企业服务的能力,其中研发效能的高低对用户需求转化速率起到了至关重要的作用,而API服务的研发效能是当中非常重要的一环。

随着公司的发展,研发人员越来越多,公司产品多元化,模块复杂度不断提升,API的研发效能也成为了决定公司研发能力的关键因素之一,同时对API研发管理,研发效率也有了新的挑战:

挑战

  1. 接口协议同步不及时:API接口定义多是文档化管理,文档更新往往不及时,当接口协议发生变化时,无法及时同步给前端、测试等团队。
  2. 自动化水平低:测试用例一般通过Excel、Xmind等维护,需要手工测试,每次回归测试都需要人工手动执行测试用例,大大占用测试资源。
  3. 联调周期长:每次联调可能涉及多个模块,几个研发团队协作,一方出现问题,就会卡住整个流程,拖慢联调进度。
  4. 提测质量无法保证:研发自测不充分,冒烟测试用例执行情况无法量化,导致提测质量参差不齐,
  5. 性能压测:性能测试门槛高,压测机器碎片化无法统一管理,缺乏专业的性能分析。

愿景

我们希望能够研发一个API管理平台,可以满足以下的需求:

  1. 接口协议更新能够及时同步。
  2. 减少前端、后端、测试等团队间的依赖。
  3. 提升接口自动化水平。
  4. 有专业的压测平台。

破局

对比了市面上已有的接口管理平台,我们发现YApi可以说是最好用、功能最完善的API接口管理平台了。

YApi原生已经支持以下功能:

  • 可视化接口管理
  • 数据mock
  • 自动化接口测试
  • 数据导入(各种,包括swagger、har、postman、json、命令行)
  • 权限管理
  • 支持本地化部署
  • 支持插件
  • 支持二次开发

我们决定基于YApi进行二次开发,满足内部的定制化需求,演进出公司内部的GTest接口管理平台。目前,围绕着接口管理和效能提升,已经开发了以下平台:

  1. GTest(API管理平台):基于YApi1.3.22版本演进,支持内部RPC协议、接口定义优化、支持集群模式、Chrome插件功能扩展等功能,目前已经完全自主迭代。
  2. 压测平台:基于Gatling开发,支持内部RPC协议压测、动态随机参数、返回值断言等。结合GTest,选择压测模式,让压测像接口调用一样便捷。
  3. GDetector(API监控平台):支持Ping、Telnet、Http等协议的监测,对接口返回值进行断言,可配置定时规则和告警规则,结合GTest测试集合也支持流程级别的监测。
  4. GDevops(CICD平台):只需简单配置即可进行代码质量监测、规范控制,自动化构建镜像和K8S部署。

依托目前的GTest接口管理平台,对比一下过去和现在的接口开发流程:

案例

下面举两个例子来说下有了GTest平台之后整个API研发过程发生的变化:

研发提测质量:

之前规定研发提测前,需要开发把测试提供的冒烟用例执行一遍,但是这种方式无法保证测试用例的执行情况,也没有数据化的校验结果,比较主观。

依托GTest平台,在几乎不需要人工参与的情况下,根据接口定义的字段规则、字段是否必须等自动生成接口测试用例集合,开发一键即可接口验证,并生成详细的测试报告。对于开发提测的版本,自动化执行冒烟测试集合,减少测试人员的参与,提测质量数据化展示,一目了然。

API业务监控:

之前每个业务上线,都需要业务方自行开发拨测系统用于监控服务的运行情况,各个业务方实现标准不统一,拨测系统本身的稳定性等很难保证。

依托API监控平台,提供标准的定时监测功能、告警功能等,还可以直接复用GTest平台的测试集合进行流程监控。随着监控用例的完善,未来还可以评估线上故障的影响范围,服务恢复情况等。

经验

API研发效能的提升不是一蹴而就的,是一个不断迭代和推进的过程。中间会涉及到前端、后端、测试、运维等多方面的人员。也会有基于技术的问题,基于流程的问题。下面是我们在推进API研发效能提升的一些经验总结:

  1. 引入流程 可能很多人听到流程的概念,都会想到繁文缛节、效率低下等字眼。但是对于像GTest这样作为多方人员协作的平台,无规矩,难成方圆。一个人能把平台使用好不代表一帮人可以把平台使用好。所以必须制定好流程。 比如 接口开发流程:在接口开发之前,必须制定好详细的接口协议。这样后端开发人员根据接口协议进行开发,前端人员根据接口协议调用Mock服务,测试人员根据接口协议编写测试用例,三方人员并行工作,不用相互依赖,阻塞自己的工作进度。 比如 冒烟测试流程:测试人员应该在开发人员提测之前,在GTest上面编写好冒烟测试集合。这样开发人员在GDevops平台提测打包时,会自动打包,部署服务到K8S,自动化执行冒烟测试集合,测试通过会自动发送提测邮件。
  2. 小范围试用 对于制定的规范、标准、新功能等先找一两个团队进行小范围试用。小步快跑,快速验证合理性、可行性。而且真正的应用到实际场景中,才能发现制定的标准示范合理,规范能否应用起来,新功能能否满足真实的场景。小范围的试用也方便与使用团队的深入交流,如果直接推广到整个公司,反而会引入稳定性、规范普及、场景未完全覆盖等问题,疲于奔命,无法聚焦,还会留下难用的印象。
  3. 制定标准 对于GTest平台,多方人员共同协作,维护着整个公司业务的API接口,那么怎么管理人员,管理API等也变成一个问题。只有制定相关的标准,才能井然有序的运行。 比如:API接口需要按照分组 项目 分类 接口这样的层级来维护,不然接口杂乱无章很难找到。 比如:接口协议需要定义字段是否必须 默认值 长度大小限制 规则,这样API Mock环节,测试用例编写才能根据定义的协议来完成。

展望

API研发效能提升涉及的面非常广,有技术能力上的,也有管理规范上的。对于整个API研发生命周期,每个环节的提升,都会带来API研发效能提升。未来,我们还有很长的路要走,比如 API自动生成平台,API开放交易平台等。

如果你有什么问题,也欢迎后台留言交流。

0 人点赞