测试数据怎么造?假数据生成与脱敏
一、需要假数据的三个场景
- 开发与测试:填满列表页看分页效果、测试表单校验、压测数据库;
- 演示与截图:给客户看的界面不能出现真实客户信息;
- 对外提供样例:技术支持要用户提供数据复现问题,但真实数据不能外发。
共同前提是:数据看起来要像真的(格式合法),但不能对应到任何真实的人。
二、假数据生成:格式真、内容假
| 字段 | 实测样例 | 说明 |
|---|---|---|
| 姓名 | 蔡杰、程婷 | 从常见姓氏与名字随机组合 |
| 手机号 | 18543974410 / 列表里是 138****5675 | 保留号段与长度 |
| 邮箱 | user17325@mail.example.org | 域名用 reserved 示例域 |
| 身份证 | 11010519931102379X | 校验位按国标算法算得真实有效 |
| 地址 | 成都市武侯区解放大道110号 | 省市区真实、路名虚构 |
关键点:身份证号是「格式合法」而不是「真实存在」。地区码、出生日期、顺序码都是随机拼装的,校验位按国标算法补齐——所以它能通过表单校验和数据库字段长度检查,但查不到对应的真人(用号码校验工具验证会发现校验位自洽、信息可解析,这正是它能用于测试的原因)。
**手机号中间四位是星号(138\*\*\*\*1234)是刻意的:保留号段与尾号足以测试界面展示、格式校验与存储逻辑,但拼不出可拨打的完整号码,避免生成器被误用于骚扰或注册。需要完整格式时自行替换星号**——工具只负责给你结构,不负责给你可用的号码。
单次最多生成 100 条,全部在浏览器本地即时生成、不经过服务器也不落盘。需要更大量数据时建议用 Faker、mockjs 之类的程序化方案批量生成后入库。
三、反向需求:脱敏
脱敏是另一个方向——把真实数据里的敏感部分遮掉:
姓名:张三 → 姓名:张*
手机:13800138000 → 手机:138****8000
身份证:11010519491231002X → 身份证:110105********002X
卡号:6222021234567894 → 卡号:6222********7894
邮箱:zhangsan@example.com → 邮箱:zh******@example.com
地址:北京市朝阳区某某路 88 号 3 单元 501 → 地址:北京市朝阳区*****************
保留前几位、后几位是刻意设计:既能确认「是哪条记录、是哪位客户」,又去掉了可定位到具体个人的信息。地址保留到区县同理——区县级别不足以定位住所,但足够让人对照。
四、脱敏的四条规则
- 不可逆:星号替换后无法还原,工具也不生成原文与掩码的对照表、不保留原文副本。如果需要「可还原的遮蔽」,那属于加密而不是脱敏,必须自己保管密钥;
- 姓名只脱敏带标签的写法(如「姓名:张三」)。中文姓名没有固定格式,两到四个汉字都可能成词,纯正则判断会把正文里的普通词误判成人名——准确率优先,正文里的人名用「自定义关键词」精确处理;
- 支持自定义关键词:公司名、项目代号、内部编号这类不在标准类型里的敏感词,填进自定义列表即可整体替换;
- 全文处理:一次粘贴整段文本,工具按类型统计命中数量(实测样例 6 类各命中 1 处,加上自定义关键词共 7 处)。
五、三个常见误区
- 「脱敏等于加密」:脱敏不可逆、无密钥,只用于展示与外发;加密可逆、有密钥,用于存储与传输;
- 「把身份证中间遮掉就安全了」:出生日期(第 7~14 位)与地区码是身份证最有辨识度的部分,遮掉它们比只遮后四位有效得多;
- 「假数据和脱敏是一回事」:假数据是造出不像真的数据,脱敏是处理真实数据——前者用于测试环境,后者用于对外发布。
六、直接算
→ 假数据生成器:姓名、手机、邮箱、身份证、地址批量生成
→ 数据脱敏工具:姓名、手机、身份证、卡号、邮箱、地址一键遮蔽
→ 号码校验计算器:验证生成的测试号码格式是否合法
本站文章为个人使用经验的原创整理,除已注明来源的引用外均为本人撰写。文中涉及的软件名称、商标、截图等归各自权利人所有,引用仅用于说明与交流。如认为本站内容侵犯了你的合法权益,请通过「关于本站」页面的联系方式告知,核实后将及时更正或删除。