AI 编程测试数据工厂提示:批量生成边界用例而非happy path
测试数据工厂的目标是覆盖决策分支,不是生成「看起来真实」的姓名。 让 AI 按故障模式吐夹具,比让它编造一整张「真实用户表」更安全、更有用。
先定义模式目录
- 空 / null / 缺字段
- 超长字符串、emoji、双向文本
- 时区与夏令时边界
- 权限拒绝与幂等重放
- 货币最小单位与四舍五入
提示词
你是测试数据工厂。针对函数/API:{{签名与契约摘要}}
请按下列模式各生成 2 组输入(JSON),并注明期望:通过 / 4xx / 抛错类型。
模式列表:{{模式}}
约束:
- 使用明显虚构标识,如 user_test_001
- 禁止生成真实身份证、手机、邮箱域名可投递地址
- 不要写完整利用链或攻击步骤;只给输入形状
输出表格:模式|输入|期望|备注
接入工作流
生成 → 人工抽检 → 纳入 fixture 目录 → CI 跑。PR 描述自动化可参考 从 diff 写 PR 描述;从工单出测试计划见 测试计划。
坑
- 「尽量真实」导致误用同事姓名。
- 一次生成上千条却无断言,等于噪音。
与属性测试的分工
属性测试(property-based)负责通用不变量;AI 工厂负责「业务味」边界(特定错误码、特定权限组合)。两者输出都应进入版本库,而不是只存在聊天记录。生成数据若含 Unicode 边界,在 CI 环境确认 Locale 设置一致,避免本地绿、流水线红。
禁止要求模型产出可利用的攻击载荷细节;安全测试走专门流程与授权环境。把工厂提示词与契约摘要放在同一目录,契约一变就重生成并人工 diff。
输出格式约定
统一 JSON Lines,每行含 id/mode/input/expected。方便直接喂测试框架。模型偶尔会漏字段,用 schema 校验拒收。对时间类用例,固定一个 frozen_now,避免「现在」漂移。
代码助手生成夹具后,开发者仍要读一遍期望断言是否合理。把工厂提示与敏感信息扫描工具串联:输出含真邮箱域名则失败。示例模式名为示意。
与契约测试
若有 OpenAPI/JSON Schema,把 schema 片段喂给工厂,要求输入违反/满足两类都生成。违反例用于 4xx 断言。生成后跑契约测试套件。勿生成真实密钥形态的字符串。示例契约为虚构。 工厂提示与夹具目录同版本发布,回滚才有依据。安全与隐私扫描放在合并前。示例模式名可替换为你们的故障分类法。生成数据只服务测试,不得导入生产用户表。把「禁止真实身份信息」写成 CI 规则,比口头提醒可靠。示意 JSON 字段按测试框架调整。
评审夹具时重点看期望是否可判定:含糊的「应报错」要改成具体状态码或异常类型。否则测试会变成主观题。示例期望字段按框架调整。