示例CSV(虚拟数据)生成工具
只需指定列名和类型(序号ID、姓名、邮箱、日期、数值等),即可即时生成并下载用于测试和QA的虚拟CSV数据。
支持的数据类型
| 类型 | 生成示例 |
|---|---|
| 序号ID | 1, 2, 3, ... 或带前缀的序号,如 USR-0001 |
| 姓名 | 混合日式与欧美风格的虚构姓名,如 Taro Yamada、Emma Smith |
| 邮箱地址 | [email protected](根据生成的姓名自动创建) |
| 电话号码 | 类似日本手机号格式的 090-1234-5678 |
| 日期 | 在指定范围内的随机日期,格式为 YYYY-MM-DD |
| 整数 | 在指定的最小值与最大值范围内的随机整数 |
| 小数(金额等) | 在指定范围内的随机小数(保留两位小数) |
| 布尔值 | true/false(标签可自定义) |
| 自由文本 | 类似 "Lorem ipsum dolor sit amet." 的随机词句 |
生成示例 CSV(虚拟数据)
开发与测试需要**形貌像样的数据**。直接拿正式数据来用,在个人信息的观点上应当避免;而手写十行也够折腾。本工具只要指定列名与数据类型,即可当场生成测试与质量保证用的虚拟 CSV 并下载。
**能指定类型正是本工具的要点。** 若整份数据都填同一个字符串,便无从测试排序与检索。由于可按列分别选择流水号、姓名、电子邮件、日期、数值等类型,因而能做出**分布贴近真实数据的文件**。生成全在浏览器内完成,不会向服务器送出任何内容。另外,所生成的姓名与电子邮件皆为虚构,与真实人物无关。
生成虚拟 CSV 的步骤
- 定义列 按需要新增若干组列名与数据类型。
- 选择数据类型 可从流水号、姓名、电子邮件、日期、数值等之中选择。**每一列都能指定不同的类型。**
- 设定选项 部分类型可更细致地指定范围或格式。
- 指定行数 填入所需的条数。
- 下载 生成的 CSV 可直接用作测试数据。
用好本工具的小技巧
- 在种子栏输入任意数字,即可从相同的列定义中反复生成完全相同的虚拟数据,便于共享错误报告或自动化测试的fixture。
- 生成的CSV遵循RFC 4180规范,包含逗号、换行符或双引号的值都会被正确加引号和转义。
- 邮箱列会自动引用同一行中位于其前面的姓名列的数据,将两者搭配使用可以得到内部一致的数据。
- 所有生成过程完全在浏览器内完成,不会发送到任何服务器——这是完全虚构的数据,不包含任何真实的个人信息。
- 行数上限为10,000行,以避免浏览器卡顿。如需更多数据,可固定种子后分批生成再合并文件。
这些场景会用到
测试导入功能
**无须动用正式数据**,可回避处理个人信息的风险。
检查画面是否变形
可用含长姓名与特殊字符的数据,查看版面是否走样。
衡量性能
加大行数后生成,便能测量大量数据下的处理时间。
准备展示环境
在商谈或评审要展示的画面里,事先放进像样的数据。
测试数据的术语
- 虚拟数据
- 并不存在、为测试而造的数据。**其值皆为虚构,与真实人物无关。**
- CSV
- 以逗号分隔的文本格式,多数电子表格软件与数据库皆可读取。
- 流水号
- 自1起依序递增的整数,常用来代替主键。
- 边界值
- 最大长度、最小值等容易出问题的取值。**除虚拟数据外,请另行备妥这些。**
- 遮罩
- 把正式数据的一部分遮去后使用的手法,是有别于生成虚拟数据的另一种选择。
- 字符编码
- 在 CSV 中,混淆 UTF-8 与 Shift_JIS 是乱码的主因。
常见问题
闲话 ― 为什么测试需要"带种子"的虚拟数据
在软件开发中,使用虚拟数据而非真实记录进行测试是普遍做法,主要出于两个原因:保护个人信息(避免在开发或测试环境中出现真实客户数据),以及可以自由地按需构造边界情形和异常输入。这也正是 Ruby 的 Faker、Python 的 Faker、JavaScript 的 @faker-js/faker 等库被广泛使用的原因。
然而,完全随机的虚拟数据有一个弱点:不可复现。当某个测试偶尔失败时,很难判断原因究竟是逻辑上的真实缺陷,还是恰好生成了某个特殊的异常值所致。带种子的伪随机数生成器(seeded PRNG)正是为解决这一问题而生:只要给定相同的种子,每次运行都会得到完全相同的数列,也就是完全相同的虚拟数据,从而使缺陷复现和测试结果验证变得容易得多。
本工具采用的 mulberry32 算法,能够以相对简单的计算量生成质量较高的伪随机数列,是 JavaScript 中常用的轻量级选择。它并不适用于加密用途,但对于测试数据生成这种更看重"确定性与速度"的场景来说,恰恰是合适的选择。