
模拟数据生成器 — 即时生成测试用的假JSON、CSV和SQL数据
📷 Photo by luis gomes / Pexels模拟数据生成器 — 即时生成测试用的假JSON、CSV和SQL数据
不再手动编写测试数据。在浏览器中即时免费生成包含姓名、邮箱、地址等字段的真实感假数据集。
想象这个场景:你刚搭建好一个崭新的React仪表盘。设计做好了,组件都接好了。打开应用,看到的是……空表格、骨架屏加载器,还有因为复制了同一个对象十二遍而导致每一行都显示"张三"的一片虚空。
我们都经历过这种情况。手写虚拟数据看起来是两分钟的工作,却不知怎么吃掉了半个下午。从 { id: 1, name: "Alice" } 开始,然后发现还需要邮箱地址,然后是电话号码,然后是公司名,然后至少要二十行让分页功能发挥作用,然后同事问为什么每个用户都住在"123号主街",你不得不承认是自己手打了那个地址。
有更好的方法。模拟数据生成器在几秒内生成真实多样的假数据集,无需任何设置。
为什么手写测试数据是个陷阱
手工制作的虚拟数据问题不只是耗时——它太完美了。你输入干净、统一、可预测的值,因为这些是最容易输入的。所有名字都是常见的,每个邮箱都遵循相同的模式,每个字符串长度大致相同。
真实数据是乱糟糟的。名字有连字符、重音和不寻常的大写。邮箱地址带数字。公司名称有标点符号。如果只用整洁的虚拟数据测试,你会在生产环境发现那些整齐的测试固件永远不会暴露的 bug。
好的模拟数据应该:
- 多样 — 不同的长度、不同的模式、不同的文化来源
- 充足 — 足够多的行来压力测试分页、过滤和排序
- 可按需重现 — 即使schema改变也能重新生成
- 格式灵活 — JavaScript用JSON,电子表格用CSV,数据库用SQL
这正是这个工具提供的。
使用场景:什么时候需要模拟数据?
UI原型设计
你在设计用户管理表格、联系人列表或排行榜。需要看起来真实的行来观察布局在不同数据密度下的表现。公司名称30个字符时表格会溢出吗?头像列会破坏网格吗?你需要近似真实的数据才能发现问题,而且需要在有任何真实用户之前就发现。
数据库填充
本地开发数据库是空的。运行应用就是不断碰到空状态页面和只在零记录时才出现的边界情况。用50到100行模拟数据填充,让你的开发环境像真实应用一样运行。SQL输出模式可以直接将INSERT语句粘贴到数据库客户端或迁移脚本。
API模拟和契约测试
在后端API准备好之前构建前端。需要返回合理JSON的模拟服务器——不只是无限重复的 { "name": "test" },而是看起来像真实系统可能返回的数据。导出JSON输出,放入固件文件或MSW(Mock Service Worker)这样的工具,UI开发就可以独立推进。
演示和展示
录制产品演示或做演示。没有什么比"John Doe / john@example.com"重复十遍的表格更能破坏精美产品的幻象了。模拟数据生成器几秒钟就能让你的屏幕看起来像一个真实、有数据的应用。
如何使用模拟数据生成器
打开模拟数据生成器,你会看到三个主要控件。
1. 字段选择
使用复选框选择要包含的字段。可用字段:
- id — 从1开始的连续整数
- firstName / lastName — 来自国际姓名池
- email — 由名/姓衍生,带随机两位数后缀,以
@example.com结尾 - phone — 美国格式:
+1-XXX-XXX-XXXX - company — 来自虚构公司名称列表
- jobTitle — 真实职位名称(软件工程师、产品经理等)
- address — 门牌号 + 街道名 + 类型(St, Ave, Blvd, Dr)
- city / country — 来自15个主要世界城市/国家配对
- zipCode — 随机5位邮政编码
- birthDate — 1944到2006年之间的日期
- avatar — 基于邮箱哈希的Gravatar风格URL
- isActive — 布尔值,70%概率为true
- age — 18到80之间的整数
自由组合。只需要 id、firstName、lastName 和 email?勾选这四个就完成了。
2. 行数
用数字输入框设置行数(1到100)。默认是10。分页和过滤测试可以调到50或100。
3. 输出格式
在三种格式中切换:
JSON — 返回对象数组。适合JavaScript/TypeScript项目、API固件。
CSV — 返回带表头的数据行。可在Excel或Google表格中打开,导入数据库,或通过脚本处理。
SQL — 返回 INSERT INTO users (...) VALUES (...) 语句。直接复制粘贴到数据库客户端。支持PostgreSQL、MySQL、SQLite及任何支持标准INSERT语法的SQL方言。
4. 生成、复制、下载
点击生成创建新批次的随机数据。使用复制把输出放到剪贴板,或下载保存为 .json、.csv 或 .sql 文件。
输出格式详解
JSON
[
{
"id": 1,
"firstName": "Amara",
"lastName": "Rossi",
"email": "amara.rossi74@example.com",
"company": "NovaSoft"
}
]
JSON输出是顶层数组,可以直接赋值给变量、作为固件文件使用,或从模拟API提供。
CSV
id,firstName,lastName,email,company
1,Amara,Rossi,amara.rossi74@example.com,NovaSoft
CSV是数据交换的通用语言。用PostgreSQL的 COPY 导入,用pandas加载,在Google表格中打开。
SQL
INSERT INTO users (id, firstName, lastName, email, company) VALUES (1, 'Amara', 'Rossi', 'amara.rossi74@example.com', 'NovaSoft');
SQL输出针对名为 users 的表。如果你的表名不同,在任何文本编辑器中快速查找替换即可。
Faker.js vs 浏览器工具:如何选择
最常见的基于库的模拟数据解决方案是Faker.js,它很出色。选择指南:
使用Faker.js(或类似库)的情况:
- 需要将模拟数据生成作为自动化测试套件的一部分
- 一次需要超过100行
- 需要特定语言环境的数据(法语地址、带汉字的日语姓名)
- 需要将模拟数据生成集成到CI流水线
使用这个浏览器工具的情况:
- 不安装任何东西就立即需要数据
- 在项目甚至还没有package.json的阶段做原型
- 需要填充无法运行脚本的远程或共享数据库
- 与需要测试数据的非开发者同事共享工具
两种方法各有其位置。浏览器工具零摩擦——无安装、无导入、无配置。
技巧和窍门
avatar字段是真实URL。 生成的Gravatar风格URL在任何 <img> 标签中都会渲染为图标图像。
用isActive测试软删除。 isActive 布尔值70%为true,给过滤视图(仅活跃用户、仅非活跃用户等)的测试提供真实的混合比例。
不改设置重新生成。 即使你没有更改任何内容,每次点击生成按钮都会创建新批次。
下载+导入工作流。 数据库填充最快的工作流:选择字段 → 行数设100 → 选SQL → 点下载 → 在数据库客户端中打开.sql文件 → 运行。完成。
总结
模拟数据是你经常需要但永远无法为其投入真正时间的东西。模拟数据生成器把10分钟的任务变成10秒的任务。选择你的字段,选择你的格式,点击生成,然后回到真正重要的工作。
如果你想检查或重新格式化JSON数据,去JSON格式化工具。需要将CSV转换为JavaScript应用可用的格式?CSV转JSON即时处理。
无需安装。无需注册。数据不离开你的浏览器。按需提供数据。