微信号:mogu_ttech

介绍:蘑菇街测试技术基础

数据工厂平台实践

2016-06-23 17:56 莫尘


为什么需要数据工厂?

在互联网公司的运营和测试中,无时无刻不在和数据打交道。目前的数据创建管理方式存在一些问题,如:

  1. 创建数据不方便。比如,为了下一个订单,测试人员要找用户团队造买家和卖家数据,找商品团队造商品和库存数据,找优惠团队造优惠数据。

  2. 数据污染。测试的数据和线上真实数据不易区分,易污染线上数据。

  3. 不易管理。创建好的数据容易丢失或者弄混。部分动态数据因过期需要重新创建数据。

  4. 没有统一的格式,不易分享。

  5. 不利于测试的自动化

所以,我们需要一个平台,不但能创造数据,管理数据,还有提供数据分发和动态处理的能力。这就是数据工厂。

一个数据工厂应该有哪些功能?

  • 首先当然是创建数据。数据从哪里来?从自动化的角度说,可以从业务的后端接口,配置管理平台或者外部导入等方式获取。我们不推荐直接操作数据库,因为这种方式不具备通用性。

  • 其次是格式化数据。将创造好的数据用数据工厂预先设定好的json格式保存在工厂的持久化中,方便做数据管理。

  • 管理/分发数据。提供统一的增删查改功能(后端+前端)及统一的接口给各个业务方,提供用途及权限设置。

  • 数据展示。提供前端交互页面,用户根据需要输入查询条件,数据工厂展示相应数据。对于敏感数据如密码提供加密保护。

蘑菇街数据工厂的设计思路

1. 树状结构

数据工厂里的数据都不应该是孤立的,我们建立了tree schema,用于连接各个数据部分。树的根部是用户,因为用户是一切数据的源头。从用户往上,建立店铺和会员分支。在蘑菇街里,每个用户都可以非常方便的创建自己的店铺,所以从用户到店铺这块并没有多少障碍;而会员方面却复杂的多,因为涉及到一些动态读取的数据,一旦设置好过几天就可能被修改。从店铺往上,建立商品和店铺优惠券分支;从商品往上,建立库存和商品优惠券分支,等等...。所以整个树形结构用json格式表示出来的简单example如下:

{

  "user": {

    "shopId": {

      "shopCoupon": [1,2,3],

      "itemID": [

        {

          "stockID": ["a","b","c"],

          "itemCounpon": [1,2,3]

        }

      ]

    },

    "memberId": {

      "level": 1,

      "modou": 2

    }

  }

}

基于这个树状结构,当我们需要新增加数据类型时,只需要找到它的父节点即可。每一个数据都是有上下文关系(上图只是示例,实际情况下,叶子会根据业务的扩展而不断增多、延伸。情况会比这个结构复杂的多)。这也为下文的基于场景的数据获取提供了可能。

2. 提供规范化的后端接口

实现业务底层的接口模块,如tesla接口(蘑菇街的后端中间件),mwp接口,metabase接口,数据导入接口等。在此基础上,对外提供统一restful接口,如

创建:/api/业务名/create

删除:/api/业务名/delete

修改:/api/业务名/edit

查询:/api/业务名/get

这样,一个新增的数据类型,只要修改相应的底层接口模块即可以完成数据对接。类似plug-in组件的效果。

3. 基于场景的数据模型

在测试中,通常我们用到的是一系列数据,而不是单单一种数据。例如,一个用户下单购买一个卖家的商品。数据工厂需要提供一个买家用户,一个卖家用户,这个卖家用户的商品,优惠券等等。这样就需要用户提供一个json文件说明需要的数据及其关联关系。数据工厂根据这个json文件创造相应的数据。最后,把创造好的数据以一个完整的包装给用户。

现状与展望

目前,该数据工厂已服务于蘑菇街全链路压测平台和自动化测试平台。

其中,压测平台向数据工厂获取压测用户(2w个),压测商品(100w个),压测店铺等。接下来,还会支持压测数据的动态生成,即通过提供基本数据和数据随机组合脚本的方式使压测数据增加几百甚至上个千倍。使得压测数据量更加接近真实大促数据。

自动化测试平台向数据工厂获取测试用户(包括用户id,邮件,手机,地址等),商品(可设置库存),会员(可设置等级&魔豆),店铺(可设置店铺等级)等。接下来,还会支持更多的数据类型和功能。

普通的测试或者运营用户,也可以通过数据工厂获取自己需要的数据。数据工厂提供两种数据共享类型,独占和共享,独占的数据将不会被其他用户看到。

我们希望数据工厂成为提供测试数据的中心,更好的为产品的质量提升贡献一份力量。


 
MoguTTech 更多文章 全平台自动化测试框架 欢迎来到蘑菇街测试技术的微信公众号
猜您喜欢 秘籍 | 想抓住用户的心思?《推荐系统(理论篇)》免费电子书下载! Android Studio 2.0 真的来了! 另辟蹊径的网络协议分析方法 善小即为:打造透明公益 —— 中国扶贫基金会贾坤及其信息化顾问团队 【解密武汉iOS钱景】老彭深入iOS“龙潭虎穴”面试直播(1)