编辑
2024-05-08
测试平台
00
请注意,本文编写于 197 天前,最后修改于 158 天前,其中某些信息可能已经过时。

目录

背景
问题分析
方案设计
总结

背景

目前公司使用开源MeterSphere(下面简称ms)做接口自动化平台

在使用ms的过程中存在以下致命问题:

  • 缺少变量追踪!导致用例调试,问题排查非常麻烦,压根不知道变量从哪里来,在哪里被赋值,实在令人抓狂!简直就是变量引用地狱!
  • 卡顿严重!金融产品用例很复杂,一个用例中引用20个场景用例,总步骤数量超过100步,编辑用例时,浏览器的标签页内存使用高达1GB!!!简直是吃内存狂魔。另外,点击保存用例,哪怕什么都不改,响应时间也会超过10s,我不禁问,这真是21世纪产品的吗?
  • image-20240508000223300

当然,ms还有其他很各种问题,但不是致命的,我就不一一列举。

问题分析

首先,场景是不是真的那么复杂,是真的。

能重新造一个平台来替换ms吗?能,但成本太大,新开发的也不一定就比ms好用,并且ms上面现存的场景用例已经上千个,迁移也是很大的成本。

又或者说,用纯代码来编写自动化,这样就不需要在页面上调试那么蛋疼,也不存在保存响应慢的问题。

这个在团队小,并且人员都有coding能力时可以采用。目前我们团队人员能力参差不齐,有coding能力的并不是很多,并且大家技术栈也不一样,Java和Python都有,

经过深入分析以及和部分同学沟通后,采用了一种比较折中的方案:接口聚合。

方案设计

什么是接口聚合,顾名思义,就是把多个接口聚合起来。

举例子来说,在贷款的过程中,有用户授信合同签约的节点,需要经过以下步骤:

  • 1、获取用户唯一编码,手机号
  • 2、获取合同唯一编码
  • 3、调用获取短信验证码
  • 4、执行sql,把验证码从数据库中捞出来
  • 5、提交签约合同接口(入参包含:用户唯一编码,手机号,合同唯一编码,短信验证码)

在ms上,要完成这个节点,就需要写5个步骤

这5步中,涉及到以下变量:

  • 第一步,抽取用户唯一编号和手机号
  • 第二步,抽取合同唯一编码
  • 第三步,引用第一步的手机号
  • 第四步,引用第一步的手机号
  • 第五步,引用第一步的合同编号,手机号,第二部的合同唯一编码,第四步的验证码

如果单纯这5个步骤来看,也没多复杂,完全不需要什么变量追踪之类的。

但如果有20个这样的节点,或者说一个节点步骤可能会高达10步,甚至更多时,情况就会变得很不一样。

既然业务本身就是这么复杂,无法改变。

那么我们能做的就是化繁为简,把这5个步骤合并到一个接口来实现。

我们自己开发一个接口,把这个节点需要的步骤全部操作完,那么在页面上,就只需要调用一个步骤即可!

这样做带来以下好处:

  • 大幅度减少在ms上的步骤数量,避免找不到变量在哪里来,在哪里赋值的问题
  • ms在前端的步骤数量少了,接口保存时,就不会有那么大的数据量,速度也就会更快;浏览器便签内存也不会暴涨
  • 接口聚合这种方式,是直接IDE上调试代码,变量跳转这种基础操作,太轻松了。

总结

接口聚合这个方案目前能很好的解决了现阶段的问题,但这就是最好的方案吗? 我认为是的。

优点:

  • 大幅度缩短用例步骤,使ms页面不在卡顿,变量引用地狱也可以大幅减轻
  • 直接在IDE debug,实际效率更高

当然任何方案都会存在缺点,接口聚合也不例外。

  • 接口聚合需要一定的代码能力,对代码能力薄弱的同学不友好
  • 编写接口聚合前期耗时,表面上可能会比直接在ms上拖拉拽时间更长
  • 修改没有直接在ms上来得快

本文作者:花菜

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!