Skip to content

利用人工智能
批量生成测试数据


简介

  • 测试数据是软件测试过程中用于验证系统功能的数据集合。
  • 常见测试数据包括:

    • 用户数据
    • 订单数据
    • 交易数据
    • 接口请求数据
    • 边界值数据
  • 测试数据通常用于:

    • 功能测试
    • 接口测试
    • 自动化测试
    • 性能测试

为什么测试数据很重要

  • 在软件测试中,测试数据直接影响:

    • 测试覆盖率
    • 测试结果准确性
    • 自动化测试执行效果
  • 如果测试数据不足,可能导致:

    • 边界场景未被测试
    • 异常情况无法验证
    • 自动化测试无法稳定执行

传统生成测试数据的痛点

  • 手工编写数据效率低
  • 难以覆盖各种测试场景
  • 大规模数据生成困难
  • 数据格式复杂
  • 自动化测试依赖大量数据

AI 在测试数据生成中的作用

  • 自动生成测试数据
  • 批量生成不同格式数据
  • 生成边界数据
  • 生成异常测试数据
  • 快速构造复杂数据结构

AI 生成测试数据流程

uml diagram


场景

  1. 场景一:接口自动化测试

    - 批量生成接口请求数据 - 构造不同参数组合

  2. 场景二:性能测试数据准备

    - 大量用户数据 - 大量订单数据 - 大量交易记录

  3. 场景三:边界与异常测试

    - 最大长度 - 最小长度 - 特殊字符 - 非法输入

  4. 场景四:自动化测试数据准备

    - 用户账号 - 商品信息 - 地址信息


示例

假设我们需要生成一批用户数据。

数据字段:

* 用户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 在测试数据生成中的应用场景