太强了!GitHub上开源了一款AI自动化测试框架,0代码搞定前后端测试!

现在让 AI 写代码,已经不算新鲜事了。Claude Code、Codex、Cursor 这类AI Agent,一句需求丢过去,几分钟就能把功能连同单元测试一起交上来。

但交上来的这些代码,谁确认过真的能用?

单元测试是AI自己写的,写什么测什么,自己出题自己答。页面渲染没渲染,接口通了没通,下单流程走不走得完,这些事单测管不着。很多团队现在的做法还是老一套,开发自测两下,测试同学手工点一遍,点不过来就赌它没问题。

AI 把写代码的速度提上去了,验证这道工序没有跟上。代码越交越快,欠下质量账越攒越多。

最近我在 GitHub 上翻到一个AI 自动化测试的项目:TestSprite-cli ,挺有意思,分享给大家。

TestSprite CLI 是个啥?

TestSprite 是西雅图一家做 AI 测试的创业公司,主业是云端自动化测试平台。今年 6 月 11 号,他们把平台的命令行入口开源了出来,就是 testsprite-cli。这个项目,记住几个关键信息即可。

  • Apache-2.0 协议,TypeScript + Node 实现
  • 4300+ star,197 fork
  • 最新版本 v0.14.0,10 月 6 号发布,仓库 10 月 7 号还有提交
  • 官网还宣传从 URL 到首批 50 到 100 条端到端用例约 10 分钟,以及 10 万开发者在用。这类口径没法核验,听听就行。

它干的事很简单,一句话概括:就是当你的AI Agent改完代码后,CLI 会打开真实运行的应用,像一个真人用户那样把功能走一遍,坏了就拿回一份完整的失败报告,交给Agent自己修。

官方给这类工具起的位置叫验证层,verification layer。写代码的环节 AI 化了,验证环节也得 AI 化,而且要接在 AI 自己手里。

0 代码写测试,一条用例是一个 JSON

用 Playwright 写一条登录校验,你得找选择器、配等待、写断言,几十行起步,选择器一变还得回来改。在这个工具里,一条测试是一个计划文件,描述你要保证的行为。

{
  "projectId": "prj_abc123",
  "type": "frontend",
  "name": "Login rejects an empty password",
  "planSteps": [
    {
      "type": "action",
      "description": "Navigate to /login and submit the form with an empty password"
    },
    {
      "type": "assertion",
      "description": "Verify an inline error says the password is required"
    }
  ]
}

整个文件里没有一行浏览器代码。action 和 assertion 都是自然语言描述,上传后云端把它变成真实点击、真实导航、真实请求,跑在云端的真浏览器和真 API 上。README 里有一句原话很直接,Not a mock。

前端走这条路。后端测试走 Python,在云端沙箱里直接跑测试函数,沙箱预置了 requests、pytest、numpy、scipy 这些常用库。后端用例之间还能编排依赖,造数据、用数据、收尾清理这几类用例按顺序串起来,变量往下传。前后端在一个套件里一起管。

不想自己写第一批用例,还有生成这条路。test plan generate 让平台探索你的应用或者读你上传的 API 文档,起草一批用例放在服务端等你审,看中哪条收哪条。

跑挂了,能自动生成失败详情包

测试跑挂了,最烦的是排查。截图在 A 系统,日志在 B 系统,DOM 是三天前抓的,拼在一起看半天,发现看的已经是两个版本的东西。

这个工具的失败报告设计得讲究。test failure get 拉下来的是一整个包,失败步骤、前后相邻的步骤、截图、DOM 快照、测试源码、根因假设、建议修复的位置,全在里面。所有材料共享同一个 snapshotId,CLI 明确拒绝把两次运行的数据拼在一起。

这个设计明摆着是给 AI 读的。Agent有个拿手好戏,拿着缝合的上下文一本正经地推理,把证据钉死在同一次运行里,它就只能对着真实现场说话。人读这份包也一样省事,排查一个失败不用再跨三个系统翻材料。

整条路径循环

AI每次改完代码,先问一个问题,这个行为套件里覆盖了吗。

没覆盖就 test create,用一个新的计划文件描述新行为。已经覆盖就 test rerun,把现有用例重放一遍,确认没改坏。挂了就 test failure get 拿失败包,修完重跑。每一次通过都存进长期套件,覆盖面跟着项目一起长。

云端那一层是故意做成黑盒的。Agent只描述意图、读结果,不需要知道测试是怎么被驱动的,只看真人用户会遇到什么。

一条命令,接进Claude Code、Codex

这是 setup 命令干的事。

npm install -g @testsprite/testsprite-cli
testsprite setup

setup 验完 API key,会探测你项目里在用哪些AI Agent,把一套现成的 skill 文件落进仓库。官方支持 8 类主流Agent,Claude Code、Codex、Cursor、Cline、Windsurf、Antigravity、Kiro、Copilot。

skill 里写的是硬规矩,我读的时候印象很深。功能完成后就会自动跑一次验证,不许攒到收尾放大招。允许跳过的场景收得极窄,纯文档改动、纯构建配置、缺凭证,其余都要跑。每个功能至少一次跑到通过,才许说做完了。

这些规矩针对的就是许多AI Agent的老毛病,标完 done 就收工。装上 skill 之后,Claude Code 或 Codex 写完功能,会自己去建测试、跑测试、读失败包、修完重跑,整段不需要人介入。

平台侧另有一个 MCP Server 给 IDE 用,同一个验证引擎的另一条入口,走哪条看习惯。

本地起的服务也能测

前面的例子默认应用已经部署了。本地开发时应用跑在 localhost,云端够不着,它的解法是隧道。

testsprite project create --type frontend --name "My local app" --local 3000
testsprite test run <test-id>

跑测试时 CLI 自动开一条隧道,控制面走 WSS,数据面走 TLS,把本机回环地址接到云端测试机,免费档也能用这条通道。计费按次,前端重跑一次 0.5 积分,后端 0.2。本机不部署就能拿到云端真实浏览器跑出来的结果,这个体验对前端同学很友好。

接进 CI

--wait 模式下跑挂的用例,会在 GitHub PR 的检查页逐条标注,一条失败一行,汇总表追加到 job summary。--report junit 输出 JUnit XML,现有流水线怎么接就怎么接,不挑 CI。

几个要留神的点

  • 测试怎么被驱动的过程看不到。云端黑盒是设计选择,对使用者意味着排障只能依赖失败包给的材料,想自己插一脚调试做不到
  • 后端测试在沙箱里跑,不能 import 你项目的代码,纯 HTTP 接口测试没问题,要连本地数据库、依赖项目内模块的场景就不合适
  • 平台是收费生意,CLI 是开源入口。跑起来按积分计费,量大了要掂量成本。
  • AI 生成的用例质量仍要人把关,断言写得太松,跑一万遍也是绿

我的几条建议

1、天天让编程Agent交活的,装上让它自己验收

两条命令的成本,免费档就能跑。Agent写完自己过一遍真实浏览器,比你手工点省事,也比完全没人点强。

2、做测试开发的,把它的设计拆开看

自洽失败包、稳定的 JSON 输出契约、写给Agent的验证纪律 skill,这三个设计都值得抄。特别是第一件,怎么给 AI 喂一口干净的排障上下文,往后所有测试工具都得回答这个问题。

3、管质量的,盯住回归套件只增不减

它把每次通过的用例都存进长期套件,这正是回归资产该有的长法。AI 交活越快,这种只涨不清零的验证资产越值钱。

写在最后

这个项目最让我在意的一点,是它把「谁说做完了」从一句口头承诺变成了一道可执行的工序。AI说 feature complete 的时候,以前靠人去戳穿,现在有一条命令替你去戳。

当然,工具本身大家可用可不用。TestSprite 走云端积分计费,这套模式会劝退一部分团队,不合适就不必硬上。但文章里那几个设计思路是通用的,给 AI 喂自洽的排障上下文、把验证纪律写成 skill 立成硬规矩、让通过用例存进只增不减的回归套件,这些搬进自己的工具和流程里照样成立。

推荐一个开源项目,不是让大家都要去用它。把这些思路学走,用回自己的项目里,这才是看开源项目该带走的东西。

地址放这了。

GitHub 👉 https://github.com/TestSprite/testsprite-cli

官网 👉 https://www.testsprite.com/

觉得有用,欢迎转给团队里天天收 AI 代码的同学。


posted @ 2026-10-20 09:16  狂师  阅读(306)  评论(1)    收藏  举报