一、软件简介
测试数据生成工具用于批量生成模拟数据,支持按自定义业务字段规则生成,如姓名、手机号、身份证号、地址、日期时间、金额、枚举等常见字段,并可直接写入目标数据库或导出为多种格式,供开发测试使用。
- 在界面上以可视化方式编辑字段规则,规则自动持久化保存;
- 生成结果可预览并导出 为 JSON / CSV / SQL,或直接写入目标数据库;
- 本地工作库(SQLite)记录每次生成的批次记录,可随时查看、编辑、追加、删除;
- 支持按批次回滚已写入目标数据库的数据(按主键删除);
- 内置加解密工具(AES / RSA / 摘要哈希 / Base64 编解码);
- 内置JSON 对比工具,直观对比两份 JSON 的差异并给出通俗解释;
- 提供命令行方式 gen / rollback / list,便于脚本调用。
二、安装与启动(Windows 安装包)
普通用户推荐使用安装包 testDataGenerator-Setup-1.0.0.exe 一键安装,无需单独安装 Java 环境。
2.1 安装
- 双击
testDataGenerator-Setup-1.0.0.exe,按向导点击「下一步」;

- 默认安装目录为
C:\Program Files\``测试数据生成工具,可自行修改; - 安装完成后会在「开始菜单」自动创建快捷方式,可勾选创建「桌面快捷方式」;
- 安装包内置 JDK 8u391 运行时(含 JavaFX),不依赖系统已安装的 Java。
2.2 启动
- 从「开始菜单」或桌面快捷方式双击
测试数据生成工具即可打开图形界面; - 双击
testDataGenerator.exe(安装目录内)同样直接进入图形界面。 
2.3 卸载
打开「控制面板 → 程序和功能」,找到 测试数据生成工具,点击「卸载」即可完整移除。
说明:安装包内已包含程序、运行库与示例规则文件,卸载时默认会一并删除安装目录中的内容;如需保留本地生成的历史数据,请提前备份 testdata.db 与 rule-data.yaml。
三、运行环境
|--------|------------------------------------------------|
| 项目 | 要求 |
| 安装包方式 | Windows 7 及以上 64 位系统;已内置运行时,无需安装 Java |
| Jar 方式 | JDK 1.8 或以上(图形界面需支持 JavaFX 的运行环境) |
| 目标数据库 | 支持任意 JDBC 数据库(SQLite / MySQL / H2 等),目标表结构需已存在 |
提示:以 jar 方式启动时,若系统默认编码为 GBK,请加 -Dfile.encoding=UTF-8 参数以保证中文正常显示。
四、启动与运行方式
4.1 图形界面(GUI)
java -Dfile.encoding=UTF-8 -jar testDataGenerator-1.0-SNAPSHOT.jar gui
4.2 命令行(CLI)
java -jar testDataGenerator-1.0-SNAPSHOT.jar [命令] [选项]
命令有 gen(批量生成)、rollback(回滚数据)、list(查看历史记录)。详见第八章。
五、GUI 使用指南
主界面共有五个页签:生成数据 、历史回滚 、规则管理 、加解密工具 、JSON对比。





5.1 生成数据
该页用于批量生成测试数据并记录批次信息。
|------------------------|------------------------------------------------------|
| 控件 | 说明 |
| 条数 | 本次生成的记录条数,如 100 |
| 规则文件(YAML) | 可选。填写时使用该文件中的字段规则生成,否则使用「规则管理」页配置的字段 |
| 浏览 | 选择 YAML 规则文件 |
| 目标JDBC(可选) | 目标数据库连接串,如 jdbc:mysql://localhost:3306/test;留空只生成不落库 |
| 表名 / 主键 | 写入目标表时使用的表名与主键,供回滚时按主键删除 |
| 工作库路径 | 本地工作库文件,默认 testdata.db,用于保存批次记录与回滚日志 |
| 生成 | 开始生成数据,写入本地工作库、刷新右侧预览;填写了目标 JDBC 时同时写入目标库 |
| 导出JSON / 导出CSV / 导出SQL | 将当前预览数据导出为对应格式文件 |
| 回滚 | 勾选历史批次后,按日志在主键列删除已写入目标库的数据 |
| 批量删除 | 删除当前批次中选中的生成记录(可用 Ctrl/Shift 多选) |
| 删除批次 | 删除当前批次的全部记录,需确认弹窗 |
| 编辑 | 对选中记录做可视化编辑并写回工作库(双击记录也可快速编辑) |
| 批次新增 | 用当前字段规则填写字段值,追加一条记录 |
| 追加记录 | 按当前选中的生成规则自动追加生成一条记录(字段未填写时按规则自动生成) |
| 预览数据 | 展示当前生成的数据,支持拖动列调整顺序,顺序会持久化保存 |
说明:点「生成」时会把本次使用的规则一并记录,之后「追加记录」沿用同一套规则,保证字段取值一致。
5.2 历史回滚
|--------|---------------------------------|
| 控件 | 说明 |
| 刷新 | 重新加载工作库中的批次列表 |
| 回滚选中批次 | 勾选批次后,根据回滚日志中记录的主键值向目标库删除已写入的数据 |
说明:回滚只删除通过本工具写入目标库、且已记录在回滚日志中的记录;手工写入或未记录的数据不会被删除。只有勾选了目标 JDBC 写入时才会记录回滚日志。
5.3 规则管理
用于维护字段规则,实时自动保存到 rule-data.yaml(首次为默认规则),增删改都会自动保存。
|-----------------|-------------------------------------|
| 控件 | 说明 |
| 添加字段 | 打开字段配置对话框,选择类型并填写参数,点「实时预览」可查看示例值 |
| 编辑 | 修改选中字段的规则 |
| 批量删除 | 选中后删除所选字段(可用 Ctrl/Shift 多选) |
| 导入YAML / 导出YAML | 从文件加载 / 导出字段规则 |
| 字段列表 | 字段按顺序展示的列表,支持拖动调整顺序,顺序即生成时的字段先后 |
5.3.1 字段类型一览
|--------------|------------|--------------------------------------------------------------------------------|
| 类型 | 说明 | 可选参数 |
| seq | 自增序号,随行数递增 | 无 |
| name | 中文姓名 | 无 |
| phone | 手机号码 | 无 |
| idCard | 身份证号 | 无 |
| email | 邮箱 | 无 |
| address | 地址 | 无 |
| datetime | 日期时间 | 格式(如 yyyy-MM-dd HH:mm:ss,支持 yyyy-MM 等部分格式)、起始/结束时间 |
| money | 金额 | 最小值、最大值、小数位数 |
| enum | 枚举取值 | 取值列表,逗号分隔,如 PENDING,PAID,CANCELLED |
| url | URL | 无 |
| ip | IP地址 | 无 |
| randomString | 随机字符串 | 最小与最大长度 |
| boundary | 边界值 | 最小值与最大值 |
| specialChars | 异常字符 | 无 |
| orgCode | 公司组织机构代码 | 无 |
| uscc | 统一社会信用代码 | 无 |
| uuid | UUID | 无 |
| crypto | 加密字段 | 模式(cipher / rsaPublic / rsaPrivate / aes / hash / encrypt / decrypt)、格式、明文或密文等 |
| fakeText | 随机中文文本 | 无 |
5.4 加解密工具
用于日常加解密处理。点击左侧选择工具类型,下方切换对应表单:
|------------|-------------------------------------------------------|
| 工具 | 说明 |
| AES 对称加解密 | 选择加密模式(ECB / CBC)、密钥长度与输出格式(Base64 / HEX),对字符串进行加密或解密 |
| RSA 非对称加解密 | 生成密钥对。也可导入 RSA 密钥对,使用公钥加密、私钥解密;密钥可导出为 PEM 格式 |
| 摘要哈希 | 对文本计算 MD5 / SHA-1 / SHA-256 / SHA-512 摘要 |
| Base64 编解码 | 对文本做 Base64、URL 安全的编码与解码 |
5.5 JSON对比
用于比较两份 JSON 文档,适合快速定位两份数据差异,降低排查成本。使用步骤:
- 在左侧 、右侧编辑框中分别粘贴 JSON 内容,编辑器带行号;
- 点击「对比」按钮;
- 下方列表展示差异:类型 / 路径 / 左侧值 / 右侧值;
- 两侧编辑框中,不一致的行会用不同颜色标出:绿=右侧多出、红=左侧多出、橙=两边不一样,颜色与列表一致,一目了然;
- 底部状态区显示详细的文本报告(编号差异列表 + 两侧 JSON 内容),可点「复制」按钮复制到剪贴板。
|--------|--------------------------------|
| 按钮 | 说明 |
| 对比 | 解析两侧 JSON 并对比,输出差异列表与状态报告 |
| 格式化 | 将两侧 JSON 按标准缩进排版(美化) |
| 压缩 | 去掉 JSON 中的空格和换行,压缩为单行(便于传输或存库) |
| 交换 | 交换左右两侧的内容 |
| 示例数据 | 载入一组示例 JSON 方便体验 |
| 清空 | 清空两侧内容、列表与状态提示 |
| 复制 | 将底部对比报告复制到剪贴板(弹出提示,不会覆盖对比结果) |
说明:若 JSON 解析失败,会在底部用通俗中文提示出错位置(第几行第几列),并在对应编辑框将该行标红、自动定位到该行。不用理解专业术语,提示已翻译成大白话。
六、字段规则 YAML 格式
fields:
- name: id
type: seq
- name: name
type: name
- name: phone
type: phone
- name: status
type: enum
values: [PENDING, PAID, CANCELLED]
- name: amount
type: money
min: "1"
max: "10000"
scale: 2
- name: created_at
type: datetime
format: yyyy-MM-dd HH:mm:ss
from: "2020-01-01 00:00:00"
to: "2030-12-31 23:59:59"
- name: encrypted_card
type: crypto
values: [aes]
format: "加密字段或密钥说明"
七、数据存储说明
|----------------|----------------------------------------------|
| 文件 | 用途 |
| testdata.db | 本地工作库(SQLite),保存生成的记录、批次对应的规则快照,以及写入目标库的回滚日志 |
| rule-data.yaml | 规则管理页的持久化规则文件 |
八、导出文件说明
- JSON:标准格式,每条记录一个数组元素;
- CSV:逗号分隔格式,带 BOM,Excel 可直接打开;
- SQL :生成
INSERT INTO ``表名 (``列...) VALUES (...);语句,字符串自动按 SQL 规则转义。
九、命令行参数说明
9.1 gen 命令 ------ 批量生成数据
java -jar testDataGenerator-1.0-SNAPSHOT.jar gen [选项]
选项:
--count N 生成条数,默认 10
--rule 文件 字段规则 YAML 文件;缺省使用内置通用规则
--format 格式 输出格式 console|json|csv|sql,默认 console
--out 文件 输出文件;缺省输出到标准输出
--table 表名 目标表名,默认 test_data
--pk 主键 主键列名,默认 id,用于回滚
--target-jdbc URL 目标数据库 JDBC URL;填写时直接写入目标库并记录回滚日志
--db 路径 本地工作库 SQLite 路径,默认 testdata.db
示例:
java -jar testDataGenerator-1.0-SNAPSHOT.jar gen --count 100 --format json --out data.json
java -jar testDataGenerator-1.0-SNAPSHOT.jar gen --count 50 --format sql --table users --target-jdbc jdbc:sqlite:test.db
9.2 rollback 命令 ------ 回滚已记录的数据
java -jar testDataGenerator-1.0-SNAPSHOT.jar rollback [--db 路径] [--batch 批次号]
根据回滚日志向目标库删除数据;省略 --batch 时回滚全部未回滚记录。
9.3 list 命令 ------ 查看历史生成记录
java -jar testDataGenerator-1.0-SNAPSHOT.jar list [--db 路径]
十、常见问题
|-----------------|----------------------------------------------------|
| 问题 | 解决办法 |
| 目标表提示不存在 | 工具不会自动建表,请先在目标库中创建好对应的表结构 |
| 追加记录时与首条记录不完全一致 | 「追加记录」使用本次生成时的规则生成;若当时未使用规则,则使用当前「规则管理」页的规则 |
| 删除字段后又出现 | 确认规则已保存到 rule-data.yaml;若使用规则文件,删除字段后应同步从文件中移除 |
| GUI 中文字显示乱码 | 以 jar 方式运行时使用 -Dfile.encoding=UTF-8 参数启动(安装包方式已内置) |
| JSON 报错看不懂 | 提示已翻译成大白话并标注第几行第几列,对应编辑框会标红并自动定位 |
需要工具可以私聊哈