阿里云服务器618活动(全网最低价)—1核2G3年169元(不限CPU性能)【立即抢购】

搭建API管理与接口自动化测试平台全过程

688次阅读
没有评论

最近公司要搞CICD,希望把公司内部所有API都统一起来管理,从立项、需求调研、产品调研、部署以及实施,前后总共搞了两个多 月,特此记录下来,希望能够帮到大家。

搭建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

RAP是阿里妈妈团队做的一个开源产品,做了有很多年,但是目前的功能还在是太弱了,和淘宝的朋友打听了一下原来他们内部也不用(但他们内部有一个aone系统做得很强),所以就放弃了。

NEI是网易的API管理平台,测试功能太弱并且不支持私有化部署,放弃。

APIZZA是一个创业团队做的,界面直接照搬Postman,但是功能相比Postman弱很多,亮点应该是简单上手快,定位小微型团队,也不支持私有化部署。同样要吐槽的是名字,以为是卖批萨的。

Doclever是一个个人开源项目,功能比APIZZA强一点,但是作者已经停止维护了,略感可惜。

部署和实施

这应该是整个项目最难的部分,难点在于给全公司的产品团队普及一个新的产品并且融入到工作流程里面。首先我们找到了一个项目进度不算紧张的团队,让培训讲师远程培训了一次,然后我们观察了团队一周的时间,并且发布了调查问卷去了解团队的使用情况。经过一周的使用之后,研发团队的成员觉得还不错,上手新产品并不需要很久,同时也给出了使用过程中的问题,我们再把问题反馈给那边进行答疑。

在基本方案跑通之后,我们开始尝试通过Jenkins把EOLINKER和其他系统关联起来形成一个流程,比如当代码push之后能够 自动跑测试用例,并且把报告发送给测试团队,测试团队再去校验一下用例的情况。

整个培训和实施过程花了差不多一个半月,所以整个推进过程比预想中的要顺利许多。后面我们由继续采购了他们的API监控服务,让API开发测试和监控能够变成一个完整流程,目前实施下来觉得还是不错的。

1
arison
版权声明:本站原创文章,由arison2021-01-18发表,共计2551字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)