关于数据工厂平台 的俩种设计路线

 数据工厂平台,也就是快速构造各种测试数据的平台。

这个重要性和实用性不言而喻。很多人都需要,隔壁小孩都馋哭了哪种。

    平台的基本原理其实就是 通过一些输入数据,然后操作shell/数据库/一些算法/接口/第三方等等来输出 你需要的数据。

    而这些数据的构造有个显著特点,就是需要大量麻烦繁琐的步骤。

    

    这里我们要考虑到,输入的数据从哪来?

  1. 用户手动输入

  2. 代码调用接口获取

  3. 代码调用一些文件/表格获取

  4. 代码去查数据库

 

以上这些,是常见的入口数据。所以平台的打造应该是如下:

    用户手动输入一部分,其他凡事能你用代码拿到的数据都交给代码。然后通过后台函数返回用户期待的数据:

    以下我举个例子:

比如我是做房地产行业的,我需要建造一套测试环境房源用来测试。

 

手动构造的步骤是:

打开app-登陆账户-进入构造页面-开始构造-输入房源标题-价格-地址-类型-各种规则等等-然后拍照上船-然后提交审核-然后去我们后台审核平台去找到这个审核申请-然后选中一些补充一些点击确认-然后需要测试环境登陆堡垒机-进入特定目录-执行跑批脚本-然后app上房源点击上线。

 

整个过程麻烦程度可见一斑,而这还只是简化了说。比如其中一个地址,就要包含 国家-省-市-区-县-街道-门牌号 等等。规则包含-入住/退订价格/配套设施/加客人.........等等数十条。其中的价格又包含 日价/包月/特殊价/会员价/节日价/几点后的折扣 等等等等。 

 

如果你用手去构造一套房源,就算是对业务流程非常熟悉的老测试,都需要十几分钟,新手?那就是根本建造不出来。  更主要的是麻烦啊。谁愿意这么累啊~

 

这种情况很多很多,这种需求成百上千,什么优惠卷。什么消息通道,什么订单,什么点评。每一个 都是让人头疼的存在,这严重拉低了 测试效率 ,提高了大家对测试无聊过程的反感,浪费了我们的生命,浪费了我们本该花在如何设计用例的时间。

 

所以这种数据构造平台就显得非常非常重要。而且不只是我们测试自己在用,开发同学,产品同学,运维同学等 也都是常客。

 

上面说了这么多,那么具体这种平台长啥样呢?

这就给大家来个图:

这个房源构造 截图是我缩小了浏览器🔍比例,所以排版看起来不是很好。

 

    但是这个页面就很简单了。其实如果没有特殊要求,只需要输入测试同学的房东账户密码,点击构造按钮就可以了~

甚至还可以控制次数~

 

而下面那么多输入框,其实全都有最常用的默认值,使用者什么都不用管直接点构造就可以,除非是有特殊需求,比如说要构造一个 日价200块钱的~ 那么就去下面找到价格一改,然后点构造就可以。

 

这就是传统的快速构造平台。那么它从页面上拿到用户的特殊输入数据,然后又有自己的默认值。

整个过程之前也说了。极为复杂,到底多复杂,让人不敢回忆的那种复杂。

当时就单这一个功能,半条命进去了~ 但是好在这工程属于一劳永逸的,而且几乎无人敢动这的代码,除了你。

 

    整个执行过程非常复杂和漫长,所以难免会经常有改动,这时我们为了不去重构项目代码,然后重新部署到服务器。所以就开发出来了在线维护所有步骤的功能。

如上图,可见,这个页面可以在线进行步骤设置,是调接口,还是调数据库,还是调shell ,都可以。看到上面id害怕么?104. 没错,需要104步才能构造完这个房源,毕竟一个房源的画像真的是几百个维度,这也是我们小猪的擅长专业所在,所以欢迎大家旅游出门都用小猪民宿哦~ 我们那是相当负责且专业的呢~

    试想一下,如果这些步骤让人去操作。半条命估计不够~

    好了上面介绍的,仅仅是一个功能。而我司的这个数据工厂平台包含数十个这样的功能。其实最难的不是写代码,而是很多诸如页面逻辑和接口,还有接口的参数,数据库的地址,shell的脚本,这些都需要你去发现,询问其他同事,不断的试错~ 才能构造成功。这个过程你也许会放弃,会退缩,会重复测试一百次,才可能最终成功~ 当然我说的这个算是比较复杂的,大家公司内也肯定有很多简单的小数据需求。

       但是请记住,大多数情况下,越简单的功能越没人用,越像这种复杂的,越有人用~

    好了 重点来了!!!

    当年仅凭在下一人之力,打造出这个平台,然后又陆续搞了其他七八个不同领域的测试平台。本以为公司要卸磨杀驴了,结果发现这些平台覆盖的业务太大了,只要开发每天在改代码,产品在提需求,那么你的平台对应的快速构造数据基本也要同步更新,所以无止境的维护任务等待你,你闲不下来了~

    这也是为什么建议大家 打造自己公司的数据工厂的原因之一~

 

    好了,上面是开玩笑说的,大家别往心里去~

 

在这种情况下,我决定数据工厂平台

从【自营模式】走向【市场模式】

    也就是我提供一个平台,然后由所有同学在上面自行设计/开发/维护 数据构造的小工具。这样才是从根本上转移维护压力,走出了一个可持续发展路线。

    而且对于很多同学对代码技术的向往,自己也可以在上面创造工具,而不是等着我做好然后用,有理想的测试同学都会欢迎这样的市场化平台。然后我的平台存在的意义是什么呢?或者说凭什么人家不自己电脑本地写个脚本,非要到你平台上写脚本呢?

 

    那就是我能提供很多便利和量化:

 

    你不用考虑django的技术,也不用考虑做前端页面,也不用考虑控制数据库/shell/并发/线程/性能/数据管理等的复杂算法。只需要单纯写好python/java的简单调用代码即可(代码放在了页面上,可维护)

    而且对于统一所有各种工具的风格上有很大作用,因为风格统一,其他人在用的时候没有什么学习成本。

    而且对于工具脚本互相之间的流通,减少造轮子的重复成本也有本质上的改善,不然你写了个造订单的脚本,别人都不知道。就算知道了,每次还要麻烦你在本地执行,你也嫌累。

    对于想秀出自己的同学,这个平台更好了。你利用统一全公司的流量给他进行工具推广,树立下名气~

    对于某些需要用工具来量化okr/kpi的同学也很好。不然没人知道你的工具造出来到底好在哪,用了多少次,给组织创造了多少贡献,领导也好给你打分,给你升职加薪,也好跟上层领导做汇报~

    对于维护更简单了。你创造的工具不一定非要你负责维护,之后谁对这比较熟悉新业务,谁就可以帮你进行维护~

      

那么给大家看一下这个热饭新设计的市场化数据构造平台的样子~

热饭给这个设计叫做,测试平台小程序~ (意思是任何人都可以自己在上面开发小程序)

新建一个空白的小程序是下面的样子:

 

            

 

使用者可以在上面添加各种输入框,环境选择,数据库选框等,构造出基本输入架构后。

打开下面的在线代码编辑:

开始写代码,然后保存,支持最多三个不同的脚本,当然有页面调试功能。

然后平台会自动生成对应的执行按钮等。

 

下面展示一个小的工具完成效果:

其他人进来后,看到的就是如上图的效果。

输入房源标题部分后,数据库发现作者已经选好了。自己可以选其他的数据库也。

然后点击执行按钮,下面就会出现 成功/失败的 结果和数据了~

 

    好了,介绍完以上俩种数据平台,大家想学哪一种,可以在此进行投票了:

    过几天有空就开始新开这个系列呢。

 

虽然上面我觉得第二种是更先进的,但是前提是公司的同事都有空且基础不低的情况,如果你的水平远超其他同事太多,建议还是第一种平台,让同事省心,你多费费心比较稳妥。不然其他同事写的工具脚本水平太差,那就失去了意义。

    欢迎关注公众号:测试开发干货

    欢迎加入testerhome社团:测试方舟号

    欢迎留言讨论或加群讨论:vx: qingwanjianhua