ChatGPT测试数据提示词:5种贴近真实业务写法
如果你想用ChatGPT生成真正能用的测试数据,光靠“生成10条用户数据”这种提示词远远不够。你得把业务角色、字段约束、逻辑关系、异常边界,甚至连真实数据的片段都塞进提示词里——不然的话,出来的数据看似格式整齐,一跑业务立马露馅。
换句话说,提示词里如果没有业务上下文,模型就会按通用套路出牌,生成一堆“张三李四”“2024-01-01”这种无意义的假数据。而真实测试场景里,用户昵称可能带emoji、手机号可能有掩码、订单金额可能为负——这些边界情况都必须明确告诉模型。
明确业务角色与使用场景
第一步很简单,但也最容易被忽略:在提示词开头直接告诉AI它现在是什么角色。比如:“你是一名有5年电商后台系统测试经验的QA工程师,正在为‘订单履约中心’模块准备UAT测试数据。”
你可能会觉得,不就是个角色设定吗?还真不是客套话。不加角色限定,模型默认按通用语料生成数据——用户姓名全是“张三”“李四”,而真实电商测试中需要覆盖“海外仓收件人姓名含空格与撇号”“越南语昵称混用拉丁字母”等边缘情况。这一步决定了模型调用的知识库是通用语料还是领域语料。
绑定真实字段规则与约束
方法一:用表格形式列出字段+规则+示例(实测下来效果最好)。在提示词中直接插入类似这样的结构:
【用户ID】:8位纯数字,首位不能为0,需包含3个已知灰度用户ID(10000001、10000002、10000003);【注意:不得生成重复ID,否则数据库唯一索引会报错】
【手机号】:中国大陆11位,前3位必须是13X/15X/18X/17X,后8位禁止全0或全9;
【下单时间】:2024-03-01 00:00:00 至 2024-03-07 23:59:59之间,且必须满足“下单时间早于支付时间”;
【优惠券码】:固定前缀“DISC_”,后接6位大写字母+数字组合,其中至少2位为数字,且每条记录的券码必须唯一。
把约束写得越细,模型生成的假数据就越接近真实业务。比如手机号后8位禁止全0或全9,就是防止生成“15900000000”这种一眼假的傻数据。
注入业务逻辑链与依赖关系
第一步,确定主表数据生成顺序——订单数据必须晚于用户数据生成,商品SKU数据必须早于订单明细生成。这个顺序如果搞反了,关联关系就是乱的。
第二步,强制字段间存在可验证逻辑。例如:“每条订单记录中的‘实付金额’=‘商品总价’−‘优惠券抵扣’−‘平台补贴’,且三者均为非负数;若优惠券抵扣大于商品总价,则‘实付金额’为0,同时‘支付状态’字段必须为‘已取消’。”
这一步漏掉的话,ChatGPT大概率生成“优惠券抵扣100元,商品总价80元,实付20元”这种荒谬数据——而真实系统会拦截该订单并返回错误码。有了逻辑链,假数据才能通过业务校验。
预留异常与边界值槽位
方法一:在提示词末尾加一句显式声明,要求包含特定异常样本。比如:“请在20条数据中,严格包含以下5类边界值各1条:①手机号末尾为1234567;②用户昵称含emoji(如☕);③下单时间精确到毫秒(如2024-03-05 14:22:33.892);④优惠券码过期(有效期截止为2024-03-01);⑤收货地址字段为空字符串(不是null,是"")。”
方法二:用否定式排除假数据。直接写明:“禁止出现以下情况:所有用户性别字段全为‘男’;所有订单创建时间集中在同一分钟;优惠券码出现连续重复字符(如DISC_AAAAAA)。”这种“不能做什么”的约束,有时候比“要做什么”更管用。
提供真实源数据片段作锚点
贴一段脱敏后的线上日志片段或DB导出样本,不超过3行就行。例如:
“用户ID: 20489123, 昵称: ‘小鹿同学☕’, 手机号: 159****8821, 注册渠道: wechat_mini_program, 首单时间: 2024-02-18 10:33:12”
模型会据此学习字段粒度、符号习惯(比如手机号掩码方式)、甚至中文标点偏好——☕是真实用户常用的emoji。没有这个锚点,它可能生成“昵称: XiaoLuTongXue”这种不符合国内App实际的拼音格式。真实数据片段就像给模型画了一个样本框,让它不至于跑偏。
