[开源]通用的数据生成工具,一键生成海量数据用于性能和压力测试

开源系统流程管理
2026-06-28 03:52 1 次浏览 • 0 次下载 0KB
[开源]通用的数据生成工具,一键生成海量数据用于性能和压力测试

一、开源项目简介

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 特性

  1. 简单无依赖,只有一个可执行文件,即可满足命令行生成和 HTTP 接口两种数据生成服务;
  2. 使用配置文件来生成数据,使用人员不需要有开发知识,即可快速上手应用;
  3. 提供了简明、强大的数据定义语法,如分组、区间、步长、循环、随机、格式化、前后缀、函数和表达式等,配置灵活、扩展方便;
  4. 支持从文本文件中读取数据,方便用户对字段取值进行精确控制;
  5. 提供了 Excel 表格数据的标准 SQL 查询接口,数据维护和萃取更加灵活;
  6. 使用预制的序列(ranges)、实例(instances)、配置(config)对定义进行复用,以解决复杂数据的定义;
  7. 语法支持继承和扩展,为数据定义文件间的复用提供方便;
  8. 支持从数据库表的列类型、名称和记录生成数据字段配置;
  9. 支持文本、JSON、XML、 CSV、SQL 、Excel、ProtoBuf 多种输出格式;
  10. 可反向解析文章生成 YAML 配置模板;內置互联网黑话中文词库,文章创作方便而又有趣;
  11. 发行包內置了常见的基础业务数据的定义文件;
  12. 提供了 HTTP 接口形式的数据生成服务 API,各种语言都可以方便调用;
  13. 內置数据设计客户端,减缓数据定义语法的学习曲线,数据管理和创作更高效。
来源:ZenData官网文档

五、技术选型

  • Go 69.3%
  • Vue 17.4%
  • JavaScript 10.4%
  • Makefile 1.3%
  • PHP 0.9%
  • Less 0.6%
  • HTML 0.1%