[开源]通用的数据生成工具,一键生成海量数据用于性能和压力测试
![[开源]通用的数据生成工具,一键生成海量数据用于性能和压力测试](https://yy123.ink/api/img/1782589847409-m33rq4.jpg)
一、开源项目简介
ZenData是一款通用的数据生成工具,您可以使用yaml文件来定义您的数据格式,然后交由ZenData生成。
二、开源协议
使用GPL-3.0开源协议
三、界面展示
我的数据

加载已有数据文件

管理我的数据

管理內置数据

数据设计页面

数据区间编辑

数据引用编辑

ZenData自动升级


四、功能概述
ZenData 3.0 正式版发布,可解析数据库表的列类型、名称和记录,生成相关字段配置。
1、为什么开发ZenData
1.1、时代背景
最近几年DevOps概念越来越火,各种DevOps平台也如雨后春笋一样涌现。但大家往往把重点放在在工具链的搭建上,而忽略软件研发最重要的本质。工具链搭建是容易的,有各种的开源软件可以满足需求。但工具链搭建起来之后应该怎么应用呢?DevOps是希望可以通过持续集成和持续交付来实现快速的响应,但这里面有一个前提,就是质量必须要保障。如果没有质量,持续集成和交付都是空谈。如何保证质量呢?就必须要上自动化测试。
1.2、存在问题
自动化测试无论单元测试、接口测试、功能测试都会面临一个挑战,即如何能够做到大规模、工程化的自动化测试。这里面会牵扯到很多方面的技术:测试环境、测试手段、测试资源、测试管理等等,但这里面最最重要的一环是测试数据的管理。
如果测试数据无法做到灵活、大规模的管理,那么自动化测试就始终无法做到规模化,无法起到快速验证、快速集成、快速交付的目的。
1.3、目前解决方案
目前测试数据是如何来维护的呢?绝大部分的团队还是停留在手工维护阶段。手工造数据,手工维护,成本之高,可想而知。个别有能力的测试人员,会自己写点脚本来生成数据。个别有开发资源的大厂,则自己组建团队来做专门的数据工厂。这些方案都不具备通用性,成本也极其高昂。
1.4、为什么来开发ZenData
业内研究理论方法的专家老师有很多,但提供落地工具的不多。我们经过讨论之后,觉得来开发一款所有人都可以使用的通用的测试数据生成工具,于是就有了ZenData这样一款测试数据生成工具。
ZenData则通过YAML文件,定义了一种简单的数据类型描述语法。使用者不需要对技术有过多了解,通过定义简单的字段取值列表、前缀后缀等配置,即可实现测试数据维护的目的。简洁、高效、灵活,是做单元测试、接口测试、功能自动化测试、性能测试、压力测试、打桩mock的有力帮手。
ZenData通过简单的range定义实现了区间、步长、随机、引用、重复、SQL查询等方式,通过简单的规则可应对各种变化。ZenData只有一个可执行文件,支持HTTP模式,还可以对数据进行反向解析,可以输出txt、json、xml、sql等多种格式。

2、ZenData数据生成工具简介
2.1、ZenData的实现原理
ZenData使用YAML来作为数据类型配置文件。对于每一种类型的数据来讲,我们都可以将其拆分成若干的字段。比如我们要测试一个用户的订单表,会有订单的id,用户id或者账户名,订单的名称,订单的金额,订单的时间,订单状态等等字段。我们可以针对每一个字段配置其取值的范围。比如订单id,我可以定义为从1到10000,用户id可以是1-100。这样每一个字段都有了一个取值范围列表。当ZenData来生成数据的时候,从每一个字段里面依次取一个值,将其拼接在一起,就形成了一条记录。大家可以想象成每个字段都是一个转盘,按照自己的频率进行旋转,每一次旋转都从中取出一个值,和其他的字段进行组合。
上面说的是最基本的的工作原理,ZenData还提供了步长、随机、循环、引用等多种定义方式,我们会在接下来的手册里面展开讲。
2.2、ZenData 用途
ZenData 主要两大功能:数据生成和数据解析。通过一个配置文件,可以使用 ZenData 生成您想要的各种数据。同样也可以对某一个数据文件,指定其数据类型定义的配置文件,完成到结构化数据的解析。ZenData 可以用于手工测试场景下面测试数据的准备,也可以用于自动化测试脚本里面的数据生成和解析,还可一键生成海量数据用于性能和压力测试。
ZenData 特性
- 简单无依赖,只有一个可执行文件,即可满足命令行生成和 HTTP 接口两种数据生成服务;
- 使用配置文件来生成数据,使用人员不需要有开发知识,即可快速上手应用;
- 提供了简明、强大的数据定义语法,如分组、区间、步长、循环、随机、格式化、前后缀、函数和表达式等,配置灵活、扩展方便;
- 支持从文本文件中读取数据,方便用户对字段取值进行精确控制;
- 提供了 Excel 表格数据的标准 SQL 查询接口,数据维护和萃取更加灵活;
- 使用预制的序列(ranges)、实例(instances)、配置(config)对定义进行复用,以解决复杂数据的定义;
- 语法支持继承和扩展,为数据定义文件间的复用提供方便;
- 支持从数据库表的列类型、名称和记录生成数据字段配置;
- 支持文本、JSON、XML、 CSV、SQL 、Excel、ProtoBuf 多种输出格式;
- 可反向解析文章生成 YAML 配置模板;內置互联网黑话中文词库,文章创作方便而又有趣;
- 发行包內置了常见的基础业务数据的定义文件;
- 提供了 HTTP 接口形式的数据生成服务 API,各种语言都可以方便调用;
- 內置数据设计客户端,减缓数据定义语法的学习曲线,数据管理和创作更高效。
来源:ZenData官网文档
五、技术选型
- Go 69.3%
- Vue 17.4%
- JavaScript 10.4%
- Makefile 1.3%
- PHP 0.9%
- Less 0.6%
- HTML 0.1%