搭建API管理与接口自动化测试平台全过程
前言
最近公司要搞CICD,希望把公司内部所有API都统一起来管理,从立项、需求调研、产品调研、部署以及实施,前后总共搞了两个多月,特此记录下来,希望能够帮到大家。
项目背景
公司是国内做外贸电商平台的头部企业之一,研发团队130人左右,内部分为多个事业部,每个事业部内有多条产品线,每条产品线下有多个产品团队。每个产品团队使用不同的开发工具,代码和API的设计没有明确的设计规范,并且各自使用的工具也不一样。在公司项目快速发展的时候,每个产品团队都在忙着开发,因此研发管理的问题并不突出,虽然此前出现过几次关于统一研发测试工具的讨论,但最终因为项目排期问题不了了之。
从今年年初开始出现过几次比较大的项目事故,因为迭代周期太短,测试覆盖度不够,导致项目上线之后优惠券系统有异常损失了一点钱,因此从公司高层开始推研发管理改革,什么cicd、敏捷开发、代码审查、API管理、自动化测试啥的都要搞一套。整个项目从3月份立项到5月底正式完成,在经过6月一个月的实践之后得到不错的反馈。
面临的问题(需求调研)
在经过一周左右的需求调研,把内部大部分团队的API管理需求整理为以下8点:
1.API文档管理工具不统一,编写效率低下,不方便分享。
2.对于API的设计规范不统一,不同团队之间的API对接非常麻烦,有用Rest的,也有表单的和json的。
3.API文档记录的内容不够详细,经常缺漏字段,导致对接和测试过程中增加了很多沟通成本。
4.需要mock api模拟后端请求,让前端可以脱离后端进行对接和测试。
5.测试人员同时使用多个工具(API文档管理、测试、用例编写),测试和沟通效率低下。
6.API变更的时候无法及时通知相关人员,只能在钉钉上去喊人或者是当面沟通。对于API的变更也没有详细的记录。
7.测试人员水平层次不齐,没有办法按需编写详细的测试用例。通过脚本写用例也不方便维护。
8.希望有API的自动化测试,方便对一些复杂的场景进行测试,比如支付的流程。
说实话当时一看到需求觉得头都大了,首先是需求很杂,不仅有API文档管理的需求,还有测试和自动化测试,还要能方便上手。一开始是希望专门拉个团队做这事,但接到需求之后内部讨论了一下觉得成本太高,大家也没做过,何况实施周期比较短(只有两个月),自己搞是不可能的(估算了一下如果要搞一个能用的可能得5个人搞个至少半年),转而从现有的市面产品中寻找解决方案。
产品调研第一阶段
产品调研的思路很简单:
1.有免费或者开源的最好,其次才是付费的
2.能至少满足80%的需求
3.能够离线私有化部署
一开始我们想到大家平时用得比较多的Postman、Swagger和Jmeter,理由首先是他们都是免费的,其次是对这三个产品比较熟悉,上手比较快。但是把经过一轮调研之后还是淘汰掉,原因也很简单:
1.缺乏足够强的API文档管理,Postman的文档太简单,Jmeter缺少这块功能,Swagger需要在代码里写注解,但是我们之前的文档都是写在word里面的,使用习惯不一样。
2.团队协作功能太弱,对于130人左右的研发团队,以上三个产品都像是单机的产品,后面我们试用了Postman的付费版,觉得依然不符合国内用户的使用习惯,更像是一个测试工具,而非管理平台。
3.无法满足快速编写测试用例和自动化测试的需求。
4.无法做到API变更通知和版本管理。
产品调研第二阶段
于是我们就接着找目前市面上的API管理平台,得到以下的清单:
1.EOLINKER API Studio
2.RAP
3.NEI
4.APIZZA
5.Doclever
最值得一提的是EOLINKER API Studio,EOLINKER是一家专门做API相关产品的公司,什么API管理、自动化测试、监控、微服务网关等等都有,甚至还有数据库管理和测试用例管理等等的产品,API Studio只是其中一款产品,主要做API的研发管理和自动化测试,从产品的功能上看是能满足我们的绝大部分的需求。但是要吐槽的是EOLINKER这个名字实在不好发音,一开始打电话给他们客服压根不知道怎么叫,后面才知道原来是Easy Open Linker的缩写。。。。
RAP是阿里妈妈团队做的一个开源产品,做了有很多年,但是目前的功能还在是太弱了,和淘宝的朋友打听了一下原来他们内部也不用(但他们内部有一个aone系统做得很强),所以就放弃了。
NEI是网易的API管理平台,测试功能太弱并且不支持私有化部署,放弃。
APIZZA是一个创业团队做的,界面直接照搬Postman,但是功能相比Postman弱很多,亮点应该是简单上手快,定位小微型团队,也不支持私有化部署。同样要吐槽的是名字,以为是卖批萨的。。。
Doclever是一个个人开源项目,功能比APIZZA强一点,但是作者已经停止维护了,略感可惜。
所以一轮比较下来发现其实没有啥可选的,国内的API管理产品的头部效应太明显,API Studio无论是功能完善度还是产品整体成熟度都比另外几个要好很多。我们先是试用了EOLINKER的线上免费版,觉得功能已经很强了,于是在项目进行到第三周的时候联系了他们的客服申请私有云版本试用,申请之后有一个半月的试用期。
部署和实施
这应该是整个项目最难的部分,难点在于给全公司的产品团队普及一个新的产品并且融入到工作流程里面。首先我们找到了一个项目进度不算紧张的团队,让EOLINKER的培训讲师远程培训了一次(如果上门培训需要额外付费,但是试用过程中可以有一次免费的远程培训),然后我们观察了团队一周的时间,并且发布了调查问卷去了解团队的使用情况。经过一周的使用之后,研发团队的成员觉得还不错,上手新产品并不需要很久,同时也给出了使用过程中的问题,我们再把问题反馈给EOLINKER那边进行答疑。
当第一个团队觉得用得还不错的时候,我们继续在第二个团队里面进行试推,并且在第三周让两个产品团队坐在一起讨论产品的使用方式,比如制定权限管理的方式,文档开发规范,通知规范等等。总结得到一个比较通用的方案之后,我们再继续推广到其他产品团队。
在基本方案跑通之后,我们开始尝试通过Jenkins把EOLINKER和其他系统关联起来形成一个流程,比如当代码push之后能够自动跑测试用例,并且把报告发送给测试团队,测试团队再去校验一下用例的情况。
整个培训和实施过程花了差不多一个半月,在这个过程中EOLINKER的技术客服的态度不错,基本上都是有问必答,而且可以针对问题给到demo。所以整个推进过程比预想中的要顺利许多。后面我们由继续采购了他们的API监控服务,让API开发测试和监控能够变成一个完整流程,目前实施下来觉得还是不错的。
后记
这篇文章主要记录我们搭建API管理和自动化测试平台过程中的一些思路和过程,作为开发人员能够完整参与到这整个过程中其实可以学到很多,无论是项目的管理、团队利益关系的协调,还是新产品培训和推广等等。后续我们再继续整理其他系统的搭建流程和使用技巧,希望可以多交流。
相关资源
EOLINKER:www.eolinker.com