利用人工智能
批量生成测试数据
简介
- 测试数据是软件测试过程中用于验证系统功能的数据集合。
-
常见测试数据包括:
- 用户数据
- 订单数据
- 交易数据
- 接口请求数据
- 边界值数据
-
测试数据通常用于:
- 功能测试
- 接口测试
- 自动化测试
- 性能测试
为什么测试数据很重要
-
在软件测试中,测试数据直接影响:
- 测试覆盖率
- 测试结果准确性
- 自动化测试执行效果
-
如果测试数据不足,可能导致:
- 边界场景未被测试
- 异常情况无法验证
- 自动化测试无法稳定执行
传统生成测试数据的痛点
- 手工编写数据效率低
- 难以覆盖各种测试场景
- 大规模数据生成困难
- 数据格式复杂
- 自动化测试依赖大量数据
AI 在测试数据生成中的作用
- 自动生成测试数据
- 批量生成不同格式数据
- 生成边界数据
- 生成异常测试数据
- 快速构造复杂数据结构
AI 生成测试数据流程
场景
-
场景一:接口自动化测试
- 批量生成接口请求数据 - 构造不同参数组合
-
场景二:性能测试数据准备
- 大量用户数据 - 大量订单数据 - 大量交易记录
-
场景三:边界与异常测试
- 最大长度 - 最小长度 - 特殊字符 - 非法输入
-
场景四:自动化测试数据准备
- 用户账号 - 商品信息 - 地址信息
示例
假设我们需要生成一批用户数据。
数据字段:
* 用户ID
* 用户名
* 手机号
* 邮箱
* 注册时间
需要生成:100 条测试数据
AI 工具

AI 提示词示例
你是一名资深的测试工程师。
请生成100条用户测试数据,包含以下字段:
用户ID
用户名
手机号
邮箱
注册时间
要求:
1 手机号符合中国手机号格式
2 邮箱格式正确
3 数据格式为 JSON
AI 生成测试数据示例
[
{
"用户ID": 1,
"用户名": "用户1",
"手机号": "13800138000",
"邮箱": "user1@example.com",
"注册时间": "2023-01-01T10:00:00Z"
},
{
"用户ID": 2,
"用户名": "用户2",
"手机号": "13800138001",
"邮箱": "user2@example.com",
"注册时间": "2023-01-02T10:00:00Z"
},
{
"用户ID": 3,
"用户名": "用户3",
"手机号": "13800138002",
"邮箱": "user3@example.com",
"注册时间": "2023-01-03T10:00:00Z"
},
{
"用户ID": 4,
"用户名": "用户4",
"手机号": "13800138003",
"邮箱": "user4@example.com",
"注册时间": "2023-01-04T10:00:00Z"
},
{
"用户ID": 5,
"用户名": "用户5",
"手机号": "13800138004",
"邮箱": "user5@example.com",
"注册时间": "2023-01-05T10:00:00Z"
},
{
"用户ID": 6,
"用户名": "用户6",
"手机号": "13800138005",
"邮箱": "user6@example.com",
"注册时间": "2023-01-06T10:00:00Z"
},
{
"用户ID": 7,
"用户名": "用户7",
"手机号": "13800138006",
"邮箱": "user7@example.com",
"注册时间": "2023-01-07T10:00:00Z"
},
{
"用户ID": 8,
"用户名": "用户8",
"手机号": "13800138007",
"邮箱": "user8@example.com",
"注册时间": "2023-01-08T10:00:00Z"
},
{
"用户ID": 9,
"用户名": "用户9",
"手机号": "13800138008",
"邮箱": "user9@example.com",
"注册时间": "2023-01-09T10:00:00Z"
},
{
"用户ID": 10,
"用户名": "用户10",
"手机号": "13800138009",
"邮箱": "user10@example.com",
"注册时间": "2023-01-10T10:00:00Z"
},
{
"用户ID": 11,
"用户名": "用户11",
"手机号": "13800138010",
"邮箱": "user11@example.com",
"注册时间": "2023-01-11T10:00:00Z"
},
{
"用户ID": 12,
"用户名": "用户12",
"手机号": "13800138011",
"邮箱": "user12@example.com",
"注册时间": "2023-01-12T10:00:00Z"
},
{
"用户ID": 13,
"用户名": "用户13",
"手机号": "13800138012",
"邮箱": "user13@example.com",
"注册时间": "2023-01-13T10:00:00Z"
},
{
"用户ID": 14,
"用户名": "用户14",
"手机号": "13800138013",
"邮箱": "user14@example.com",
"注册时间": "2023-01-14T10:00:00Z"
},
{
"用户ID": 15,
"用户名": "用户15",
"手机号": "13800138014",
"邮箱": "user15@example.com",
"注册时间": "2023-01-15T10:00:00Z"
},
{
"用户ID": 16,
"用户名": "用户16",
"手机号": "13800138015",
"邮箱": "user16@example.com",
"注册时间": "2023-01-16T10:00:00Z"
},
{
"用户ID": 17,
"用户名": "用户17",
"手机号": "13800138016",
"邮箱": "user17@example.com",
"注册时间": "2023-01-17T10:00:00Z"
},
{
"用户ID": 18,
"用户名": "用户18",
"手机号": "13800138017",
"邮箱": "user18@example.com",
"注册时间": "2023-01-18T10:00:00Z"
},
{
"用户ID": 19,
"用户名": "用户19",
"手机号": "13800138018",
"邮箱": "user19@example.com",
"注册时间": "2023-01-19T10:00:00Z"
},
{
"用户ID": 20,
"用户名": "用户20",
"手机号": "13800138019",
"邮箱": "user20@example.com",
"注册时间": "2023-01-20T10:00:00Z"
},
{
"用户ID": 21,
"用户名": "用户21",
"手机号": "13800138020",
"邮箱": "user21@example.com",
"注册时间": "2023-01-21T10:00:00Z"
},
{
"用户ID": 22,
"用户名": "用户22",
"手机号": "13800138021",
"邮箱": "user22@example.com",
"注册时间": "2023-01-22T10:00:00Z"
},
{
"用户ID": 23,
"用户名": "用户23",
"手机号": "13800138022",
"邮箱": "user23@example.com",
"注册时间": "2023-01-23T10:00:00Z"
},
{
"用户ID": 24,
"用户名": "用户24",
"手机号": "13800138023",
"邮箱": "user24@example.com",
"注册时间": "2023-01-24T10:00:00Z"
},
{
"用户ID": 25,
"用户名": "用户25",
"手机号": "13800138024",
"邮箱": "user25@example.com",
"注册时间": "2023-01-25T10:00:00Z"
},
{
"用户ID": 26,
"用户名": "用户26",
"手机号": "13800138025",
"邮箱": "user26@example.com",
"注册时间": "2023-01-26T10:00:00Z"
},
{
"用户ID": 27,
"用户名": "用户27",
"手机号": "13800138026",
"邮箱": "user27@example.com",
"注册时间": "2023-01-27T10:00:00Z"
},
{
"用户ID": 28,
"用户名": "用户28",
"手机号": "13800138027",
"邮箱": "user28@example.com",
"注册时间": "2023-01-28T10:00:00Z"
},
{
"用户ID": 29,
"用户名": "用户29",
"手机号": "13800138028",
"邮箱": "user29@example.com",
"注册时间": "2023-01-29T10:00:00Z"
},
{
"用户ID": 30,
"用户名": "用户30",
"手机号": "13800138029",
"邮箱": "user30@example.com",
"注册时间": "2023-01-30T10:00:00Z"
},
{
"用户ID": 31,
"用户名": "用户31",
"手机号": "13800138030",
"邮箱": "user31@example.com",
"注册时间": "2023-01-31T10:00:00Z"
},
{
"用户ID": 32,
"用户名": "用户32",
"手机号": "13800138031",
"邮箱": "user32@example.com",
"注册时间": "2023-02-01T10:00:00Z"
},
{
"用户ID": 33,
"用户名": "用户33",
"手机号": "13800138032",
"邮箱": "user33@example.com",
"注册时间": "2023-02-02T10:00:00Z"
},
{
"用户ID": 34,
"用户名": "用户34",
"手机号": "13800138033",
"邮箱": "user34@example.com",
"注册时间": "2023-02-03T10:00:00Z"
},
{
"用户ID": 35,
"用户名": "用户35",
"手机号": "13800138034",
"邮箱": "user35@example.com",
"注册时间": "2023-02-04T10:00:00Z"
},
{
"用户ID": 36,
"用户名": "用户36",
"手机号": "13800138035",
"邮箱": "user36@example.com",
"注册时间": "2023-02-05T10:00:00Z"
},
{
"用户ID": 37,
"用户名": "用户37",
"手机号": "13800138036",
"邮箱": "user37@example.com",
"注册时间": "2023-02-06T10:00:00Z"
},
{
"用户ID": 38,
"用户名": "用户38",
"手机号": "13800138037",
"邮箱": "user38@example.com",
"注册时间": "2023-02-07T10:00:00Z"
},
{
"用户ID": 39,
"用户名": "用户39",
"手机号": "13800138038",
"邮箱": "user39@example.com",
"注册时间": "2023-02-08T10:00:00Z"
},
{
"用户ID": 40,
"用户名": "用户40",
"手机号": "13800138039",
"邮箱": "user40@example.com",
"注册时间": "2023-02-09T10:00:00Z"
},
{
"用户ID": 41,
"用户名": "用户41",
"手机号": "13800138040",
"邮箱": "user41@example.com",
"注册时间": "2023-02-10T10:00:00Z"
},
{
"用户ID": 42,
"用户名": "用户42",
"手机号": "13800138041",
"邮箱": "user42@example.com",
"注册时间": "2023-02-11T10:00:00Z"
},
{
"用户ID": 43,
"用户名": "用户43",
"手机号": "13800138042",
"邮箱": "user43@example.com",
"注册时间": "2023-02-12T10:00:00Z"
},
{
"用户ID": 44,
"用户名": "用户44",
"手机号": "13800138043",
"邮箱": "user44@example.com",
"注册时间": "2023-02-13T10:00:00Z"
},
{
"用户ID": 45,
"用户名": "用户45",
"手机号": "13800138044",
"邮箱": "user45@example.com",
"注册时间": "2023-02-14T10:00:00Z"
},
{
"用户ID": 46,
"用户名": "用户46",
"手机号": "13800138045",
"邮箱": "user46@example.com",
"注册时间": "2023-02-15T10:00:00Z"
},
{
"用户ID": 47,
"用户名": "用户47",
"手机号": "13800138046",
"邮箱": "user47@example.com",
"注册时间": "2023-02-16T10:00:00Z"
},
{
"用户ID": 48,
"用户名": "用户48",
"手机号": "13800138047",
"邮箱": "user48@example.com",
"注册时间": "2023-02-17T10:00:00Z"
},
{
"用户ID": 49,
"用户名": "用户49",
"手机号": "13800138048",
"邮箱": "user49@example.com",
"注册时间": "2023-02-18T10:00:00Z"
},
{
"用户ID": 50,
"用户名": "用户50",
"手机号": "13800138049",
"邮箱": "user50@example.com",
"注册时间": "2023-02-19T10:00:00Z"
},
{
"用户ID": 51,
"用户名": "用户51",
"手机号": "13800138050",
"邮箱": "user51@example.com",
"注册时间": "2023-02-20T10:00:00Z"
},
{
"用户ID": 52,
"用户名": "用户52",
"手机号": "13800138051",
"邮箱": "user52@example.com",
"注册时间": "2023-02-21T10:00:00Z"
},
{
"用户ID": 53,
"用户名": "用户53",
"手机号": "13800138052",
"邮箱": "user53@example.com",
"注册时间": "2023-02-22T10:00:00Z"
},
{
"用户ID": 54,
"用户名": "用户54",
"手机号": "13800138053",
"邮箱": "user54@example.com",
"注册时间": "2023-02-23T10:00:00Z"
},
{
"用户ID": 55,
"用户名": "用户55",
"手机号": "13800138054",
"邮箱": "user55@example.com",
"注册时间": "2023-02-24T10:00:00Z"
},
{
"用户ID": 56,
"用户名": "用户56",
"手机号": "13800138055",
"邮箱": "user56@example.com",
"注册时间": "2023-02-25T10:00:00Z"
},
{
"用户ID": 57,
"用户名": "用户57",
"手机号": "13800138056",
"邮箱": "user57@example.com",
"注册时间": "2023-02-26T10:00:00Z"
},
{
"用户ID": 58,
"用户名": "用户58",
"手机号": "13800138057",
"邮箱": "user58@example.com",
"注册时间": "2023-02-27T10:00:00Z"
},
{
"用户ID": 59,
"用户名": "用户59",
"手机号": "13800138058",
"邮箱": "user59@example.com",
"注册时间": "2023-02-28T10:00:00Z"
},
{
"用户ID": 60,
"用户名": "用户60",
"手机号": "13800138059",
"邮箱": "user60@example.com",
"注册时间": "2023-03-01T10:00:00Z"
},
{
"用户ID": 61,
"用户名": "用户61",
"手机号": "13800138060",
"邮箱": "user61@example.com",
"注册时间": "2023-03-02T10:00:00Z"
},
{
"用户ID": 62,
"用户名": "用户62",
"手机号": "13800138061",
"邮箱": "user62@example.com",
"注册时间": "2023-03-03T10:00:00Z"
},
{
"用户ID": 63,
"用户名": "用户63",
"手机号": "13800138062",
"邮箱": "user63@example.com",
"注册时间": "2023-03-04T10:00:00Z"
},
{
"用户ID": 64,
"用户名": "用户64",
"手机号": "13800138063",
"邮箱": "user64@example.com",
"注册时间": "2023-03-05T10:00:00Z"
},
{
"用户ID": 65,
"用户名": "用户65",
"手机号": "13800138064",
"邮箱邮箱": "user65@example.com",
"注册时间": "2023-03-06T10:00:00Z"
},
{
"用户ID": 66,
"用户名": "用户66",
"手机号": "13800138065",
"邮箱": "user66@example.com",
"注册时间": "2023-03-07T10:00:00Z"
},
{
"用户ID": 67,
"用户名": "用户67",
"手机号": "13800138066",
"邮箱": "user67@example.com",
"注册时间": "2023-03-08T10:00:00Z"
},
{
"用户ID": 68,
"用户名": "用户68",
"手机号": "13800138067",
"邮箱": "user68@example.com",
"注册时间": "2023-03-09T10:00:00Z"
},
{
"用户ID": 69,
"用户名": "用户69",
"手机号": "13800138068",
"邮箱": "user69@example.com",
"注册时间": "2023-03-10T10:00:00Z"
},
{
"用户ID": 70,
"用户名": "用户70",
"手机号": "13800138069",
"邮箱": "user70@example.com",
"注册时间": "2023-03-11T10:00:00Z"
},
{
"用户ID": 71,
"用户名": "用户71",
"手机号": "13800138070",
"邮箱": "user71@example.com",
"注册时间": "2023-03-12T10:00:00Z"
},
{
"用户ID": 72,
"用户名": "用户72",
"手机号": "13800138071",
"邮箱": "user72@example.com",
"注册时间": "2023-03-13T10:00:00Z"
},
{
"用户ID": 73,
"用户名": "用户73",
"手机号": "13800138072",
"邮箱": "user73@example.com",
"注册时间": "2023-03-14T10:00:00Z"
},
{
"用户ID": 74,
"用户名": "用户74",
"手机号": "13800138073",
"邮箱": "user74@example.com",
"注册时间": "2023-03-15T10:00:00Z"
},
{
"用户ID": 75,
"用户名": "用户75",
"手机号": "13800138074",
"邮箱": "user75@example.com",
"注册时间": "2023-03-16T10:00:00Z"
},
{
"用户ID": 76,
"用户名": "用户76",
"手机号": "13800138075",
"邮箱": "user76@example.com",
"注册时间": "2023-03-17T10:00:00Z"
},
{
"用户ID": 77,
"用户名": "用户77",
"手机号": "13800138076",
"邮箱": "user77@example.com",
"注册时间": "2023-03-18T10:00:00Z"
},
{
"用户ID": 78,
"用户名": "用户78",
"手机号": "13800138077",
"邮箱": "user78@example.com",
"注册时间": "2023-03-19T10:00:00Z"
},
{
"用户ID": 79,
"用户名": "用户79",
"手机号": "13800138078",
"邮箱": "user79@example.com",
"注册时间": "2023-03-20T10:00:00Z"
},
{
"用户ID": 80,
"用户名": "用户80",
"手机号": "13800138079",
"邮箱": "user80@example.com",
"注册时间": "2023-03-21T10:00:00Z"
},
{
"用户ID": 81,
"用户名": "用户81",
"手机号": "13800138080",
"邮箱": "user81@example.com",
"注册时间": "2023-03-22T10:00:00Z"
},
{
"用户ID": 82,
"用户名": "用户82",
"手机号": "13800138081",
"邮箱": "user82@example.com",
"注册时间": "2023-03-23T10:00:00Z"
},
{
"用户ID": 83,
"用户名": "用户83",
"手机号": "13800138082",
"邮箱": "user83@example.com",
"注册时间": "2023-03-24T10:00:00Z"
},
{
"用户ID": 84,
"用户名": "用户84",
"手机号": "13800138083",
"邮箱": "user84@example.com",
"注册时间": "2023-03-25T10:00:00Z"
},
{
"用户ID": 85,
"用户名": "用户85",
"手机号": "13800138084",
"邮箱": "user85@example.com",
"注册时间": "2023-03-26T10:00:00Z"
},
{
"用户ID": 86,
"用户名": "用户86",
"手机号": "13800138085",
"邮箱": "user86@example.com",
"注册时间": "2023-03-27T10:00:00Z"
},
{
"用户ID": 87,
"用户名": "用户87",
"手机号": "13800138086",
"邮箱": "user87@example.com",
"注册时间": "2023-03-28T10:00:00Z"
},
{
"用户ID": 88,
"用户名": "用户88",
"手机号": "13800138087",
"邮箱": "user88@example.com",
"注册时间": "2023-03-29T10:00:00Z"
},
{
"用户ID": 89,
"用户名": "用户89",
"手机号": "13800138088",
"邮箱": "user89@example.com",
"注册时间": "2023-03-30T10:00:00Z"
},
{
"用户ID": 90,
"用户名": "用户90",
"手机号": "13800138089",
"邮箱": "user90@example.com",
"注册时间": "2023-03-31T10:00:00Z"
},
{
"用户ID": 91,
"用户名": "用户91",
"手机号": "13800138090",
"邮箱": "user91@example.com",
"注册时间": "2023-04-01T10:00:00Z"
},
{
"用户ID": 92,
"用户名": "用户92",
"手机号": "13800138091",
"邮箱": "user92@example.com",
"注册时间": "2023-04-02T10:00:00Z"
},
{
"用户ID": 93,
"用户名": "用户93",
"手机号": "13800138092",
"邮箱": "user93@example.com",
"注册时间": "2023-04-03T10:00:00Z"
},
{
"用户ID": 94,
"用户名": "用户94",
"手机号": "13800138093",
"邮箱": "user94@example.com",
"注册时间": "2023-04-04T10:00:00Z"
},
{
"用户ID": 95,
"用户名": "用户95",
"手机号": "13800138094",
"邮箱": "user95@example.com",
"注册时间": "2023-04-05T10:00:00Z"
},
{
"用户ID": 96,
"用户名": "用户96",
"手机号": "13800138095",
"邮箱": "user96@example.com",
"注册时间": "2023-04-06T10:00:00Z"
},
{
"用户ID": 97,
"用户名": "用户97",
"手机号": "13800138096",
"邮箱": "user97@example.com",
"注册时间": "2023-04-07T10:00:00Z"
},
{
"用户ID": 98,
"用户名": "用户98",
"手机号": "13800138097",
"邮箱": "user98@example.com",
"注册时间": "2023-04-08T10:00:00Z"
},
{
"用户ID": 99,
"用户名": "用户99",
"手机号": "13800138098",
"邮箱": "user99@example.com",
"注册时间": "2023-04-09T10:00:00Z"
},
{
"用户ID": 100,
"用户名": "用户100",
"手机号": "13800138099",
"邮箱": "user100@example.com",
"注册时间": "2023-04-10T10:00:00Z"
}
]
使用 AI 的注意事项
- 数据格式必须正确
- 数据要符合业务规则
- 避免生成真实敏感数据
- 必要时进行自动校验
自动校验数据格式
import json
import re
from datetime import datetime
# 手机号正则
phone_pattern = re.compile(r"^1[3-9]\d{9}$")
# 邮箱正则
email_pattern = re.compile(r"^[\w\.-]+@[\w\.-]+\.\w+$")
def validate_user(user):
'''
校验单条用户数据
:param user: 单条用户数据
:return:
'''
errors = []
# 必须字段
required_fields = ["用户ID", "用户名", "手机号", "邮箱", "注册时间"]
for field in required_fields:
if field not in user:
errors.append(f"缺少字段: {field}")
# 手机号校验
phone = user.get("手机号", "")
if not phone_pattern.match(phone):
errors.append(f"手机号格式错误: {phone}")
# 邮箱校验
email = user.get("邮箱", "")
if not email_pattern.match(email):
errors.append(f"邮箱格式错误: {email}")
# 时间格式校验
register_time = user.get("注册时间", "")
try:
datetime.fromisoformat(register_time.replace("Z", "+00:00"))
except Exception:
errors.append(f"注册时间格式错误: {register_time}")
return errors
def validate_users(file_path):
'''
校验整个数据文件
:param file_path: 数据文件路径
:return:
'''
with open(file_path, "r", encoding="utf-8") as f:
users = json.load(f)
total = len(users)
error_count = 0
for i, user in enumerate(users, start=1):
errors = validate_user(user)
if errors:
error_count += 1
print(f"\n第{i}条数据存在问题:")
for err in errors:
print(" -", err)
print("\n校验完成")
print(f"总数据量: {total}")
print(f"错误数据: {error_count}")
print(f"有效数据: {total - error_count}")
if __name__ == "__main__":
validate_users("users.json")
总结
- 什么是测试数据
- 测试数据的重要性
- 传统生成测试数据的痛点
- 如何利用 AI 批量生成测试数据
- AI 在测试数据生成中的应用场景