写测试需要数据。用真实数据有隐私风险,手动输入 user1@test.com、user2@test.com 又无聊且低效。假数据生成器解决这两个问题:拟真的测试数据,即生即用,零配置。
测试数据的质量直接影响测试质量
劣质测试数据会让测试失去意义:
过于简单:用 "test" 当名字,"a@b.c" 当邮箱,能通过的校验逻辑,遇到 "O'Brien" 或 "user+tag@子域名.example.com.cn" 可能直接崩。
缺乏多样性:所有测试用户都是短 ASCII 名字,国际化 bug 就此藏身——超长名字溢出、含特殊字符时排序失序,这些都是真实用户会触发的问题。
硬编码 fixture:测试夹具里写死的数据随时间偏离真实数据形态。动态生成的数据强迫你的代码处理各种合法输入。
生成器能生成什么
支持以下类别:
个人信息
- 中文/英文姓名(姓、名或全名)
- 邮箱地址
- 手机号(支持多国格式)
- 出生日期
- 用户名
地址与位置
- 街道地址
- 城市、省份、国家
- 邮政编码
- 经纬度坐标
网络与技术
- URL 和域名
- IPv4 / IPv6 地址
- UUID(v4)
- 用户代理(User-Agent)
- 十六进制颜色值
金融数据
- 银行卡号(通过 Luhn 算法校验,测试用)
- IBAN
- 金额
文本
- Lorem ipsum 段落
- 随机句子和单词
- 密码(可配置复杂度)
单次生成单个值,或批量生成几十条记录,一键完成。
典型使用场景
填充本地开发数据库
空数据库最影响开发体验。生成 50 条真实感的用户记录一次性导入:
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "王志远",
"email": "zhiyuan.wang@example.net",
"phone": "13812345678",
"created_at": "2025-11-14T08:22:00Z"
}
]
单元测试与集成测试
不要把测试数据写死在代码里:
# 与其这样
user = {"name": "张三", "email": "test@test.com"}
# 不如生成多样化的合法输入
# 验证校验逻辑对所有情况都正确处理
API Mock 服务器
前端先行开发时,用生成的数据填充 Mock 响应,让 UI 处理真实数据会触发的边界情况——超长名字、含点的邮箱、空结果状态等。
UI 开发与演示
"王志远" 和 "aleksandr.korolenko@company-mail.example.com" 能暴露出 "测试用户" 和 "test@test.com" 藏起来的布局 bug,设计评审更有价值。
压测脚本
k6、Locust、JMeter 等压测工具通常需要每个虚拟用户使用不同的账号。生成包含 10,000 条唯一邮箱和姓名的 CSV,直接导入脚本。
无需安装 Faker.js
Node.js 项目的标准做法是安装 Faker.js:
npm install @faker-js/faker
import { faker } from '@faker-js/faker';
const user = {
name: faker.person.fullName(),
email: faker.internet.email(),
};
这适合在应用代码里集成数据生成逻辑。但如果你只是需要快速生成测试数据——演示前夕、一次性数据库初始化、设计评审——直接开浏览器比搭 Node.js 项目快得多。
ZeroTool 假数据生成器使用轻量浏览器原生实现,无 CDN 依赖、无 npm、无构建流程。
数据质量:拟真但非真实
生成的数据符合常见校验规则:
- 邮箱地址符合 RFC 5321 格式
- 手机号使用有效的国家码和格式
- 银行卡号通过 Luhn 算法校验(可用于测试支付表单验证逻辑)
- 日期落在合理范围内
注意:生成的数据不是真实数据。银行卡号无法在真实支付渠道通过,只能用于格式校验测试。生成的邮箱不属于真实用户,不得用于真实通信或生产系统。
隐私安全
生成器在浏览器本地运行,生成的数据不传输到任何服务器。即便用于模拟内部数据 schema 也完全放心。
导出格式
生成结果支持以下格式导出:
- JSON — API Mock、种子脚本
- CSV — 电子表格工具、数据库导入
- SQL — INSERT 语句,直接执行入库
与同类工具对比
| 工具 | 需要安装 | 浏览器可用 | 自定义 Schema |
|---|---|---|---|
| @faker-js/faker | 是(npm) | 否 | 是(代码) |
| Mockaroo | 否 | 是 | 是(UI) |
| ZeroTool | 否 | 是 | 基础 |
需要复杂 schema 和实体间关联关系时,Mockaroo 或本地 Faker.js 更强大。需要快速生成单类数据、零配置时,浏览器工具更快。
小结
好的测试数据让测试更有意义,能发现真实 bug。假数据生成器覆盖最常见的数据类别——个人信息、地址、UUID、密码——无需任何安装配置。
进阶用法:结合 fast-check 等基于属性的测试库,自动生成上千条值并验证代码对所有情况的正确性。