AI 赋能接口自动化测试系列(二):全场景测试数据智能构造Agent Skill 超边界参数传入系统是否做了长度截断或优雅拒绝非法格式数据如手机号传字母校验逻辑是否生效重复提交同一请求幂等性机制是否正常工作这些场景人工极易遗漏但AI可以基于规则系统化、无遗漏地生成。痛点二效率低、数据格式混乱人工来构造多个接口的全维度测试数据熟练工也需 1-2 天。且不同的人构造的数据散落在各个脚本里今天张三写了一套明天李四又写了一套格式不统一、命名不规范、复用性极差。一旦业务规则变更如密码最小长度从6位改为8位需要逐行修改所有脚本中的硬编码数据维护成本极大。痛点三业务贴合度差通用造数工具生成的 “假数据”如随机字符串无法覆盖 “库存不足的商品 ID”、“重复添加的商品 SKU” 等业务场景。且针对一些接口安全测试的场景如SQL注入、XSS攻击、路径穿越、命令注入……这些安全测试数据需要专业的安全知识储备普通测试工程师往往不会写 payload或写了也不知道对不对。AI赋能的核心思路而基于 AI 驱动的Skill技能特性恰好能解决这些问题结构化输入适配基于api-schema-parser输出的标准化接口定义精准匹配参数约束多维度自动生成一键覆盖正向、反向、边界、业务异常、安全测试等全场景数据业务场景定制化贴合实际业务逻辑生成关联数据而非脱离业务的 “纯随机数”格式无缝适配自动输出 YAML/JSON/Excel 等格式直接对接 Pytest/TestNG 等框架。温馨提示AI 造数并非 “替代人工”而是将工程师从重复造数的体力活中解放聚焦于数据规则设计、业务场景校验等核心工作。二、不要搞万能Skill要拆成专业Skill很多新手容易踩的坑想做一个万能Skill输入接口文档直接输出完美脚本。这里有一个非常重要的认知千万不要寄希望于用一个 “万能 Skill” 解决所有问题。一个技能包揽解析、造数、生成、优化、执行会导致逻辑臃肿、维护困难、扩展受限也违背了Agent Skill设计的核心思想。正确的做法是按职责拆分每个Skill只做一件事如解析、生成、校验避免功能耦合。比如可以这样来拆Skill核心职责解决什么痛点api-schema-parser接口定义结构化解析人工读文档慢、易遗漏、格式不统一api-testdata-generator测试数据智能生成人工造数重复、边界场景覆盖不全api-testscript-generator自动化脚本批量生成人工编码慢、风格不统一、规范难落地api-test-optimizer脚本质量检查与优化AI幻觉导致脚本有错、场景缺失、健壮性不足api-test-executor后续教程脚本执行与结果复盘人工执行繁琐、失败分析耗时这5个Skill形成完整闭环解析→造数→生成→优化→执行既能串联使用也能独立调用。目前本系列主要是聚焦接口脚本生成阶段工作在接口执行阶段还会根据执行阶段的工作特性将其拆分成 5 个专业的Agent Skill来各司其职。接口文档Swagger/Postman/HAR 等 │ ▼ api-schema-parser ──→ 标准化接口数据 (api_definitions.json) │ ├──→ api-testdata-generator ──→ 全场景测试数据 │ │ │ ▼ │ api-testscript-generator ──→ 接口自动化脚本工程 │ │ │ ▼ │ api-test-optimizer ──→ 脚本质量检查与优化 │ │ │ ▼ │ api-test-tagger ──→ 智能标签化管理 │ │ │ ▼ │ api-test-executor ──→ 智能执行调度 │ │ │ ├──→ api-failure-diagnoser ──→ 失败诊断与自动修复 │ │ │ └──→ api-pipeline-scheduler ──→ 全链路流水线调度 │ │ │ ├── api-test-executor执行测试 │ ├── api-testdata-cleaner清理数据 │ └── api-report-generator生成报告 │ └──→ 也可直接进入 generator-testcase-xmind/excel 生成接口级测试用例可以这样说掌握了这套Agent Skill技能组合日常接口自动化测试工作零基础的同学也能轻松搞定。目前这套AI测试赋能的Skill技能组合「狂师 . AI进化社」的成员都在使用很多同学都表示接口自动化测试落地效率明显提升了数倍代码基础薄弱的同学也能轻松落地自动化测试了。三、api-testdata-generator — 全场景测试数据智能构造人工造数的痛点做过接口自动化的同学都懂人工构造测试数据有多 “折磨”合法数据费脑“这个手机号是否符合正则”“用户名长度刚好符合要求吗”每一条合法数据都要反复核对接口文档边界数据漏测参数长度极值如密码刚好 6 位 / 32 位、枚举值边界、分页参数临界值人工梳理极易遗漏异常数据匮乏空字符串与 null 的区别、触发限流的高频请求参数、触发账户锁定的错误密码这些场景往往想不到、造不出安全数据难求SQL 注入、XSS 攻击、越权访问的测试 payload需要专门学习且难以批量构造。Agent Skillapi-testdata-generator 核心能力api-testdata-generator是专门为接口自动化测试设计的测试数据智能生成 Skill核心是 “基于规则、贴合业务、全场景覆盖”其核心特性如下1、三大输入模式覆盖全测试场景该 Skill 突破了 “仅依赖接口文档造数” 的局限支持三种灵活的输入模式适配不同测试场景输入模式核心输入输出格式适用场景传统模式API 驱动api_definitions.json接口解析结果YAML/JSON/Excel接口自动化测试高频使用规范模式规则驱动自定义字段规则文件类型、长度、正则、枚举CSV/JSON/YAML/Excel团队有固定数据规范多项目复用自然语言模式Faker 驱动自然语言描述如 “生成 10 条符合中国身份证规则的数据”CSV手工测试、性能测试、UI 自动化无需接口文档2、四大维度数据全场景覆盖基于接口约束和业务规则自动生成四类测试数据无死角覆盖测试场景正向数据符合所有必填 / 格式 / 长度约束的合法数据如符合正则的用户名、有效验证码、正常库存的商品 ID反向数据空值、超长度、非法格式含特殊字符的用户名、类型错误布尔值传字符串等异常参数边界数据参数长度极值如密码 6 位 / 32 位、枚举值边界、分页参数临界值如 pageNum10000业务异常数据触发限流的高频请求参数、触发账户锁定的错误密码、库存不足的商品 ID、已取消订单的支付请求等。3、工程化输出无缝对接自动化框架生成的测试数据并非 “零散文件”而是按工程化规范组织按接口模块分类存储如 auth/order/product/cart 等自动封装为数据驱动格式直接适配 Pytest/TestNG生成全局配置文件鉴权、测试账号和接口依赖链文件如订单流程、商品流程的关联数据。实战效果虽然api-testdata-generator技能支持三种模式的输入但对于日常绝大多数的使用场景来说使用最高频的还是传统模式基于api_definitions.json接口定义和自然语言模式基于自然语言描述Faker 驱动。我们接下来就重点验证一下这两类模式下的效果1、传统模式基于 api_definitions.json 接口定义第一步在技能列表选择api-testdata-generator技能。提供接口定义、字段规则文件或自然语言描述比如这里我们传入上一步生成好的api_definitions.json接口定义点击执行。收到提示词后api-testdata-generator技能会基于接口定义文件使用传统模式来生成测试数据最终生成的数据汇总结果如下共为59个接口生成了2032条数据包括正向数据、边界值数据异常数据安全数据等不同维度。并且生成好的数据会按照模块进行保存output/test_data/ ├── _config.yaml # 全局配置鉴权、测试账号等 ├── _dependencies.yaml # 接口依赖链order流程、product流程等 ├── summary.json # 汇总报告 ├── auth/ # 认证管理6文件login/register/logout ├── order/ # 订单管理20文件10接口×2格式 ├── admin/ # 管理后台46文件23接口×2格式 ├── address/ # 地址管理 ├── cart/ # 购物车管理 ├── captcha/ # 验证码管理 ├── product/ # 商品管理 ├── search/ # 商品搜索 ├── banner/ # Banner轮播图 └── user/ # 用户管理每条数据都精准匹配接口参数约束例如购物车接口会自动生成 “库存不足的商品 ID”“重复添加的商品 SKU” 等业务相关异常数据而非简单的随机字符串。第二种自然语言模式基于Faker 驱动此类使用方式无需依赖接口文档通过自然语言描述所需要的测试数据即可例如“帮我生成 100 条完整用户信息含姓名、手机号、身份证号、收货地址符合中国手机号和身份证规则”执行 Skill 后一键生成 CSV 格式的 100 条用户数据数据格式规范、符合业务规则可直接用于手工测试、UI 自动化或性能测试。下面我们简要演示一下操作选择api-testdata-generator技能输入帮我生成100条完整用户信息。发送提示词很快100条完整测试数据就生成好了打开生成的csv文件查看数据详细。只需一句话整整齐齐100条完整的用户信息就生成好了以后妈妈再也不用担心我为构造测试数据发愁了