造测试数据:让边界条件真的出现

按字段约束生成有分布的假数据,而不是全是「张三 / 123@test.com」。

什么时候用:测试数据全是正常值,边界情况一条都没覆盖,上线后才发现空值和超长文本没处理。

提示词(整段复制)

你是测试工程师。请为下面的数据结构生成一份测试数据方案。

数据实体:{{实体与字段}}
业务约束:{{约束}}
已知的边界问题:{{边界问题}}
要测的场景:{{场景}}

输出要求:
1. **字段级分布表**:每个字段列出「正常值 / 空值 / 极值 / 非法值 / 该语言特有的坑(如 emoji、全角、零宽字符)」,并说明各占比。
2. **一份可执行的数据生成脚本**(Node 或 Python 任选),要求:
   · 固定随机种子,保证可重复;
   · 生成 N 条并统计各分布占比,打印出来;
   · 至少包含 3 条「故意难看」的记录。
3. **断言清单**:每条边界数据对应「页面/接口应该有什么表现」。
4. **不该造的数据**:指出哪些数据造出来没有意义(如重复的合法值 1000 条)。

约束:
- 不用 faker 之类的库生成中文姓名(结果不自然),手写姓名池。
- 强调:邮箱、手机号、身份证等字段要用**格式合法但明显虚构**的值。

复制时把 {{变量}} 换成你自己的内容;变量名不要改,改了模型容易把它当普通文字。

要替换的变量

变量示例值
{{实体与字段}}用户表:name, email, phone, bio, avatar_url, created_at
{{约束}}name ≤ 20 字,bio ≤ 200 字,phone 为 11 位数字
{{边界问题}}曾有用户 name 填了 emoji,导出 CSV 后乱码
{{场景}}列表页与导出功能

实操建议

常见问题

为什么不直接用线上脱敏数据?

脱敏数据缺乏边界值——线上不会有 200 字的 bio 全是 emoji 的用户。两者要混用。

占多少比例合适?

正常值 80%,各类边界合计 20%。全造极端值会让正常路径反而测不到。

配套工具