ARTICLE · 1259433
AI,只要5天就写完了一整套接口自动化测试平台,性能/安全/AI自动测试,都全了-1
前几天,写了一个文章,关于ai生成接口自动化平台的,感觉第一版写的不咋地,现在ai这么牛逼,我觉得,还可以再补充完善一下。所以又花了几天,跟ai打磨了一下。新的版本,支持性能压测、安全测试、ai测试、接口录入、第三方对接等等,各种复杂的功能。相关的代码已经发布到github,感兴趣的,可以随便下载玩。
一、写在前面:这套东西是什么,这篇文档怎么读
先交代身份。AutoAPI,一套接口自动化测试平台:接口管理、用例编排、执行与报告、性能压测、安全体检、Mock 服务、流量录制、ai测试、第三方对接,这些事它都管。装好之后是个网页,浏览器打开就能用,默认账号 admin / admin123,包里自带一个演示项目和几条能直接跑的用例,第一分钟就能看到东西。
这次要讲的是 v2.4.16。跟上一次公开露面(v2.2.0)比,多了两块大的:接口安全检测,还有 AI 智能助手。后面这块是本文的重头戏——简单说,平台的驾驶座旁边坐进来一个 AI,你动嘴,它动手。压测、体检、建用例这些活,说一句人话就有人接。
文档按「总分总」走:先把底子交代清楚(底层用了谁家的开源件),中间分四块讲能力——接口自动化、性能压测、安全体检、AI 代操作,最后把小工具和边界实话实说。文中所有截图全部来自真实运行的 v2.4.16,一张设计稿都没有;图里的数字也是真跑出来的,包括 AI 那场压测——没错,本文最亮眼的一组性能数据,是 AI 自己动手跑出来的。
照例自嘲一句:这平台是个「缝合怪」,把各家开源项目的长处拼在一起,拼缝的地方自己补。如果你手头正缺一个不花钱、能落地的接口测试工具,或者单纯想看看「AI 写了五天能写出个什么东西」,那就往下读吧,十五分钟足够。
二、开源底座:重点交代三块
先把底子摆清楚:这套平台没有自研底层轮子,难啃的活全部交给 GitHub 上现成的免费开源项目。值得重点交代的是三块——接口自动化的执行底座、性能压测的双引擎、安全检测的规则库;其余都是各自领域最常见的常规组件,一笔带过,见表 1。
2.1 接口自动化:站在三个开源库上的执行引擎
接口自动化这条主线,执行引擎建在三个开源库上:发 HTTP 请求用 Python 的 requests,Python 圈的事实标准,执行引擎里每一个 HTTP 步骤都是它发的;SQL 步骤连数据库走 SQLAlchemy,底下按数据库类型挂 PyMySQL 这类驱动;WebSocket 的在线调试和用例里的 WS 步骤走 websockets。HTTP、数据库、长连接,这三个最难自己造的轮子,一个都没自己造。
平台自己写的,是架在这三个库上面那层「编排逻辑」:步骤怎么串、变量怎么传递、上一步的输出怎么提取给下一步用、断言怎么判、报告怎么存。这层不厚,但它是整个平台真正的工作量所在,做到了什么程度,第三部分展开讲。
2.2 性能压测:Locust 的理念,双引擎实现
压测模块的设计理念来自两家开源前辈。核心调度模型「抄」自 Locust:虚拟用户、按权重随机挑任务、思考时间、每秒启动用户数——这套就是 Locust 的看家本领,连自定义代码任务里 client 的用法都是 Locust 风格。事务控制器、集合点、条件判断这些概念则来自 JMeter。引擎本体没直接依赖 Locust 库,是照这套理念自己写了两份:线程引擎(每用户一条线程、一个连接复用的会话,兼容代码任务这类复杂编排,硬上限两千)和异步引擎(asyncio + aiohttp 全协程化,单机一万并发用户是舒适区,实测见第四部分)。脚本层面直接兼容三家:JMeter 的 .jmx、Locust 的 .py、k6 的 .js 都能导入,老团队攒下的脚本不用重写。
2.3 安全检测与 AI:站在 OWASP 和大模型的肩膀上
安全检测的规则库,思想站在 OWASP API Security Top 10(2023)上,实现借鉴了 Arjun、jwt_tool、nuclei、ffuf 这些名项目的思路——纯 Python 轻量自研,不捆绑任何外部程序,装完就能跑。AI 助手那块更干脆:平台自己不带模型,随便接一个 OpenAI 兼容的大模型就行,DeepSeek、智谱、千问、Ollama 本地部署都可以。本文 AI 部分的全部实测,用的就是免费的 glm-4-flash——对,不花一分钱的入门档模型。
其余组件见表 1,一并致谢。开源社区是这套东西真正的地基,没有它们,后面要讲的功能一个都立不起来。
表 1 直接依赖的开源组件
三、第一部分:接口自动化——一切的地基
3.1 接口的录入与调试
登录进来先到工作台(图 1):当前项目有几个接口、几条用例、几份报告、几个压测场景、几个 Mock,一屏看完;下面按「拿到接口 → 编排执行 → 看结果」三步做了导览,左侧菜单也按这个工作流分了组,新人照着点不会迷路。

图 1 工作台首页:项目家底、三步指引与分组导览
接口在「接口管理」里维护(图 2):分组、搜索、服务端分页、被引用计数(删除前告诉你影响范围)。每条接口能就地调试(图 3)——图 3 这张是登录接口对着 Mock 环境发的真实请求,200 OK、11 毫秒,token 当场吐出来。还能挂测试账号自动登录刷新 token,调试时选上账号,${username}、${password}、${token} 直接可用。

图 2 接口管理:分组、搜索、被引用计数

图 3 单接口在线调试:真实请求,响应体、状态码、耗时直接看
接口进来的路子也多:手写一条行;DevTools 里右键 Copy as cURL 粘进来行,一次能贴几十条;Postman、HAR、Swagger 文件导进行;流量录制(3.2 与 7 节都讲);甚至 Word、Excel、PDF、Xmind 格式的接口文档都能识别进来。接口文档在 Excel 里躺着的团队,这条能省不少体力活。
3.2 用例编排与执行
用例编排把多个接口串成一条链路。看图 4 这条演示用例的编排视图:第 1 步登录提出 token,后面查信息、创建订单接着用 ${token};第 4 到 7 步演示另外几类步骤——边界值提取、SQL 查库、Python 脚本、Java 脚本,每步带启停开关(临时禁用不删除)。四类步骤(HTTP、SQL、脚本、WS)可以在一条链路里随便混排,上一步的输出做下一步的输入。

图 4 用例编排:步骤链、每步的类型与启停开关
执行页选用例点执行(图 5),每一步的请求、响应、提取、断言结果实时滚出来——图 5 跑的就是上面那条演示用例,登录步骤把 token 扣出来、断言当场判过,整条链 22 毫秒跑完。跑完的报告(图 6)是自包含 HTML 单文件,离线能看、能下载、能生成 90 天免登录的分享链接、能自动推送到飞书/企业微信/钉钉群。同一套引擎还支持数据驱动(CSV 一行一报告)、定时任务和命令行 cli.py——Jenkins 里一条命令接进每日冒烟。

图 5 用例执行:步骤级请求、响应、提取与断言结果

图 6 自包含 HTML 测试报告:离线可看,可分享可推送
3.3 编排的进阶能力
这块在 v2.2.0 时代就打磨得比较细了,压缩着讲,挑三件事说。头一件,提取器和断言不用对着接口文档抄:步骤编辑里点「先调试试一下」就地发一次真实请求,平台根据这次的响应自动给两组建议——哪些字段值得提取(token、uid 每个还推荐最合适的提取方式)、常见断言怎么配,点一下就填上。再一件,提取器有六种(JSONPath、正则、边界值、响应头、Cookie、状态码)乘断言十一种运算,表格化配置,提取给后面用、断言就地判。最后一件是变量体系,分五层——全局变量、环境配置、测试账号、用例变量、步骤变量,谁近谁说了算;URL、请求头、请求体里都能写 ${变量} 和 ${函数(参数)},项目里存一个签名函数全项目引用。
还有两个好东西呢,顺带说说:接口「引用复制」——被多处引用后改源头,引用处全部跟着变;接口快照——每次保存自动留 20 版,任意两版字段级对比、一键回滚,改坏了随时能退。一个新接口从入库到有能跑的用例,几分钟的事。
四、第二部分:性能压测——从两千到一万
4.1 双引擎与老脚本导入
压测页点「导入脚本」,JMeter 的 .jmx 文件内容直接贴进来:线程组变场景、采样器变任务、定时器变等待、断言和 If 控制器都能对应上,一个文件里多个线程组就拆成多个场景。Locust 的 .py 和 k6 的 .js 同样能导,解析用 Python 标准库的 xml.etree,机器上不装 JMeter 也能导 JMeter 的脚本。
引擎是双份的(图 7 场景编辑器里可选):线程引擎每虚拟用户一条线程、一个连接复用的会话,兼容代码任务、WS 任务这些复杂编排,硬上限两千;异步引擎基于 asyncio + aiohttp,接口任务和思考时间全部协程化,单机一万并发用户是舒适区。默认选「自动」档:纯接口场景自动走异步引擎,含复杂任务时走线程引擎,不用用户操心。

图 7 压测场景编辑器:任务编排、引擎选择、SLA 配置
4.2 空口无凭,给两组实测
本文截图同源环境,说实话寒酸了点:一台 2 核的免费沙箱。第一组是我手动跑的:300 并发用户打本机 Mock 的行情三接口,45 秒 25727 个请求、0 失败、APDEX 0.93、平均 RPS 524(图 8 是实时监控,吞吐、分位、错误率曲线一秒一跳,压测机 CPU 都干到 80% 了——免费沙箱跑出这数字,搁正经机器上还得翻几倍)。第二组更狠,是后文 AI 自己跑的:200 用户 30 秒 17604 个请求、0 失败、P95 只有 136 毫秒、APDEX 满分 1.0,这里先卖个关子,第六部分细说。这台沙箱此前还跑过 1000 并发用户全程零错误的成绩——异步引擎单机一万并发用户以内的活,不用求人。

图 8 异步引擎实时监控:300 并发用户在跑,RPS 与分位曲线实时推送
4.3 任务编排的细控与报告
压测场景的编排跟用例编排一个思路,语汇控制在性能测试的世界里。任务四类:引用接口定义(参数可覆盖、可挂提取规则)、自定义代码(Locust 风格的 client)、思考时间、WS 长连接任务。执行模式两种:Locust 式的加权随机(模拟散点流量)和 JMeter 式的顺序事务链(模拟完整业务闭环)。每个任务上的细控:执行时机三档(常规循环 / 每用户启动时执行一次,比如登录拿 token / 整场只执行一次);失败后四种动作(继续、跳过本轮剩余、停该用户、停整场);条件判断是 Python 表达式;等待类型七种,从不等到固定、均匀随机、高斯、泊松、脚本计算,再到集合点(Synchronizing Timer,全员到齐一起放行,模拟开盘洪峰那种瞬时冲击)。压测任务直接引用接口定义,环境地址、公共请求头、变量、签名函数全部继承,不用重抄一遍。
跑完自动出报告(图 9、图 10):SLA 判定(P95、错误率及格线,达标与否一眼定)、APDEX 体验分、P50~P99 分位曲线、响应时间分布直方图(长尾在哪一眼看穿)、错误分类表、任务明细。被测服务器的 CPU、内存曲线也在报告里——P95 上涨时 CPU 同步打满是容量瓶颈,CPU 闲着但响应慢多半是锁或下游依赖的问题,这种判断没有服务器指标图做不出来;被测机要做的只是跑一个零依赖的 perf_agent.py。平台还预置十个压测模板,其中五个是交易所场景——登录风暴、行情高频轮询、下单撤单链路、读写混合 8:2、开盘洪峰,每个模板的描述里写着「怎么设置、盯哪些指标、好坏怎么判」,照着抄作业就行。

图 9 压测报告:SLA 判定、APDEX、分位曲线与任务明细

图 10 报告续读:响应时间分布直方图与被测服务器指标
五、第三部分:安全体检——22 条规则给接口做体检
5.1 思路:不是扫描器,是体检
安全检测是 v2.4.0 加的。思路说出来不复杂:给接口做一次「安全体检」,22 条规则按 OWASP API Security Top 10(2023)组织成五组——配置与传输(安全头、CORS、TLS、Cookie)、认证与授权(未授权访问、IDOR、JWT 弱密钥与 alg=none、暴破防护)、注入与输入(SQLi、XSS、命令注入、路径穿越、隐藏参数)、信息泄露(AK/SK、敏感路径、影子接口)、业务与消费(无限流、批量赋值)。纯探测、不搞破坏性测试,疑似项会老实标「需人工确认」,不吓唬人。
资产不用重新录。接口库一键导入(相对路径自动拼环境基地址、变量自动替换)、流量捕获的记录直接转、手工录入也行,method 加 URL 去重。有两条底线设计值得单独说:发起检测必须勾「我确认:检测目标是我自有系统,或已获得书面测试授权」——授权这关绕不过去;检测过程实时滚日志(发现即标红),随时可停。
5.2 实测:5.9 秒,28 个问题
实测给各位看(图 11、图 12)。对象是内置的演示靶场——一个故意带 11 类漏洞的教学 API(理念来自 OWASP crAPI,随平台自动启动),选 9 个资产、勾 21 条规则,点开始。407 个请求,5.9 秒跑完,扫出来:严重 4、高危 9、中危 10、低危 3、提示 2,一共 28 个问题。

图 11 安全检测页:资产导入、规则分组、检测历史
问题清单长这样(图 12):每条带级别、证据、修复建议。拿「JWT 使用弱密钥」这条严重问题举例——证据栏写着「HS256 验签成功(字典第 1 项)」,意思是拿常见弱密钥字典试出来了;修复建议直接给命令:openssl rand -hex 32 生成新密钥,或改用 RS256 非对称签名。再比如「接受 alg=none 的未签名 JWT」这条,证据是「原 alg=HS256 改为 none 后仍返回 200」——攻击路径复现得明明白白。发现的问题可以三态流转:待处置、忽略(误报)、已修复,报告同样自包含 HTML、可分享可推送。

图 12 安全体检报告:级别、证据、修复建议与三态处置
顺带一提,体检还带个「简单并发」的摸底模式:并发数乘时长一把梭,RPS、分位、错误率、状态码分布、有没有限流,一分钟出结论。上线前想知道接口「抗不抗打、有没有限流」,这个先跑一把很省心。
六、第四部分:AI 测试——动嘴不动手(本文重点)
前面三块能力,v2.2.0 时代就有个大概。这次真正想说的是这块:界面右下角那个「AI 助手」按钮。
6.1 先把 AI 请进门:三分钟的事
管理员到「系统配置 → AI 服务」(图 13),点一个服务商预设——国内 11 家、海外 6 家、聚合 4 家、本地 4 家,一共 25 个渠道分组下拉——地址和推荐模型自动填上;粘贴 API Key,点「测试连接」(不耗 token),通过后保存,立即生效,不用重启。地址这块做得相当宽容:贴整段端点自动剪、漏 /v1 自动补、忘写 https 自动补,甚至把聊天网页地址当成 API 地址贴进来,失焦就自动换成正确写法。Key 加密存库,界面只显掩码。本文实测用的是智谱 glm-4-flash,免费额度就够跑。

图 13 AI 服务配置:25 个渠道、地址自动纠错、Key 加密存储
6.2 一句话压测实录:从人话到报告
打开聊天窗,直接说人话:「帮我压测一下K线查询接口,200个用户跑30秒」。接下来发生的事,图 14 到图 17 完整记录,全程没碰过一次鼠标键盘以外的菜单。
第一步,AI 先查接口(不瞎猜,先查后干)。动作卡显示「搜索 K线查询 接口」,回执一行摘要:共 1 个接口——它自己把目标锁定了。第二步,建压测场景。这是高影响动作,平台不让它直接干,而是弹一张确认卡(图 14):场景名、压测任务、并发和时长、SLA、目标环境,四要素列清楚,环境还能在卡上直接换。卡上带 30 秒倒计时,超时没人管就按默认方案自动执行。我点了确认,场景落库,回执给了「已创建(#40)」。

图 14 AI 发起压测:先查接口、再出方案确认卡,环境可在卡上切换
第三步,启动也是一张确认卡(图 15),场景详情、环境基地址写得明明白白。卡上那句「目标环境选错会全程 404 白压一场」的提示,是真实教训换来的——早期版本 AI 真干过拿靶场环境压 Mock 接口、2975 个请求全 404 的糗事,后来加了启动预检和这张卡。第四步,启动之后 AI 不用你催,系统自动跟踪到跑完(图 16),进度条、剩余时间实时可见。

图 15 启动确认卡:场景详情与环境基地址,30 秒倒计时自动执行

图 16 压测运行中:系统自动跟踪,跑完推送终局
第五步,AI 交作业(图 17)。30 秒,17604 个请求,RPS 533.2,0 失败,P50 121 毫秒、P95 136 毫秒、P99 140 毫秒,APDEX 满分 1.0。吞吐、延迟分位、错误构成、结论与建议,一段段讲清楚——结论是「系统能够承受 200 个用户的并发访问」,建议是「可以继续增加用户数或延长压测时间,进一步评估极限性能」。末尾还附了一张「打开性能测试页」的跳转卡,点一下直达报告和曲线。说实话,从一句人话到一份带建议的报告,全程两分多钟,其中 30 秒还是压测本身在跑。

图 17 压测终局:全套指标推送 + AI 最终分析 + 一键跳转报告
顺带说个真事,免得各位以为一路丝滑。中间有一轮,AI 光给方案不动手——方案文字写了一屏,「请确认以上方案」,动作卡倒是已经执行完了。小模型的老毛病。我回了句「好,按这个方案启动压测」,它立马接着干了。真实使用就是这样:AI 偶尔需要你催一句,但活儿它接得住。
6.3 不止压测:18 个功能域,覆盖平台本身
实测下来,AI 能操作的功能域有 18 个:建接口、贴 cURL 解析入库、OpenAPI 文档导入、建用例并执行、建压测场景并跑完分析、安全体检(从查资产、发起、跟到出问题清单一条龙)、简单并发摸底、建 Mock 端点、定时任务、接口快照、建环境、配全局变量、数据库连接、测试账号、群通知 webhook、页面跳转,外加 Jenkins 集成这类问答。覆盖面就是平台本身——你能在界面上点的,基本都能让它代点。
还有一层反向用法更好玩:不会用平台,直接问它。「cli.py 怎么接 Jenkins」「压测报告里 APDEX 是什么意思」,它对平台的接口目录和帮助文档门儿清,有问必答。新同事入职嘛,先跟 AI 聊两句,比翻文档快。指令含糊它也不闹脾气——「随便找个接口压测」这种需求,它自己查列表挑一个合适的就开干,查得到的不反问。
因为文章长度原因,所以问了2篇文章介绍,下一篇,在后面的卡片链接里面,或者直接看github上的readme也可以。
https://github.com/dominic717/AutoAPI
,觉得不错,给个star,让我装一波。















































































