多 Agent 协作的自动化测试系统
覆盖 Desktop、Web、Extension、Android 四个平台
下面带你看看它是怎么运转的
就像一家公司有老板、技术骨干和一线员工一样,QA-AGENTS 也分成三层,各司其职。点击每一层看看里面都有谁。
shared/reports/review-*.md。.test.mjs。src/tests/run.mjs。从"手动操作一遍"到"自动反复测试",只需要三步。
你在 OneKey App 上正常操作——点按钮、输文字、切页面。录制员在后台默默记下你的每一步。
AI 把你的操作翻译成测试脚本——一段能自动重复你刚才操作的代码。它还会验证脚本能跑通。
每次 App 更新后,打开测试面板(Dashboard),勾选要测的用例,点一下"执行",AI 就自动帮你跑一遍。
这些是 QA-AGENTS 用到的核心技术。别被名字吓到,每一个都有大白话解释。
每个 Agent 之间的协作,就像同事在群里发消息一样。选择一个场景,看看它们是怎么配合的。
OneKey 有 Desktop、Web、Extension、Android 四种形态。QA-AGENTS 能分别连接它们,用类似的方式测试。每次会话首次连接时会让你 4 选 1。
装在电脑上的 OneKey 应用(TF 包 / MAS 包)。通过 Electron一种让网页技术变成桌面软件的技术。你用的 VS Code、Discord 都是用它做的。 技术开发,所以能用网页测试工具来测。
录制监控:localhost:3210
路径配置:ONEKEY_BIN
在浏览器里打开的 OneKey 网页版。直接用 Chrome 打开测试,会自动扫描可用 Chrome Profile 让你选,登录状态保留。
录制监控:localhost:3211
安装在 Chrome 浏览器里的 OneKey 扩展。需要提供 Extension ID + Chrome Profile,自动通过 CDP 连接。
录制监控:localhost:3210
真机 USB 连接,通过 UIAutomatorAndroid 系统自带的 UI 测试框架,可以读 App 内的按钮、文字等元素。 + AI Vision无 testid 时用 AI 看截图找元素,类似肉眼定位。 混合执行。Midscene 框架。
录制监控:localhost:3210
引擎:Midscene Hybrid
QA-AGENTS 有一套"记忆系统",能从每次测试中学习,下次遇到类似问题时更快解决。
每次测试的结果都会被记下来:用了哪个选择器、花了多长时间、成功还是失败。就像一个人的日记本,什么都记。
把相似的记忆分组。比如"在桌面端经常找不到搜索按钮"会被归成一个场景。就像把散乱的笔记整理成一本错题集。
下次碰到类似问题时,系统会自动翻错题集,找出之前是怎么解决的。不用每次都从头分析,效率越来越高。
系统发现同一个按钮连续 3 次找不到,自动归类为"选择器失效",下次直接用备选方案,不再浪费时间重试。
每个 Agent 都有自己的"专属笔记本",只有指定的 Agent 能往里写,其他人只能看。这样就不会互相打架了。
| 数据文件 | 谁能写 | 用大白话说 |
|---|---|---|
| test_cases.json | 用例设计师 | 所有要测的内容清单,类似"考试大纲" |
| ui-map.json | 知识管理员 | 页面上每个按钮/输入框的"地址",方便测试工具找到它们 |
| knowledge.json | 知识管理员 | 积累的经验和技巧,比如"这个弹窗要等 2 秒才出来" |
| diagnosis.json | 质检经理 | 失败原因分析,类似"病历表" |
| results/*.json | 执行员 | 每次测试跑完的成绩单:通过/失败/跳过 |
| reports/*.md | 报告员 | 整理好的质量报告,给人看的那种 |
| mem_cells.json | 知识管理员 | 原始记忆条目,测试过程的"流水账" |
| mem_scenes.json | 知识管理员 | 归类后的"错题集",相似问题归到一起 |
| ui-semantic-map.json | 知识管理员 | 新版"语义定位层":生成用例和维护时优先引用,比 ui-map 更稳定 |
| generated/app-monorepo-testid-index.json | 知识管理员 | 从 app-monorepo 源码 x 分支同步过来的 testID 全集 |
| runtime-config.json | Dashboard UI | 本机钱包账户配置(转账用例需要),gitignored,每人本地配一次 |
| checklists.json | Dashboard UI | 回归 Checklist 集合,Dashboard 左侧面板可视化管理 |
| reports/review-*.md | 代码审查员 | 提交前 /qa-review 跑出来的审查报告 |
点击文件夹可以展开/收起。每个文件旁边都标注了它的作用。
src/tests/run.mjs
npm run clean 清理产物在 Claude Code 对话框里直接输入这些话,AI 就知道你要干嘛。跟发微信一样简单。
| 你说 | AI 做什么 |
|---|---|
| @用例文件.md 开始录制 | 读取用例 → 启动录制器 → 引导你逐场景操作(Desktop/Web/Extension) |
| @文件 /onekey-record-from-file | 用例文件 → 场景重编排 → 输出覆盖映射 → 引导录制 → 生成 .test.mjs |
| 录完了 | 展示录制到的每一步,等你确认 |
| 录制测试 | Android 流程:真机录制 → 确认 → 生成 Midscene 脚本 → 验证 |
| 你说 | AI 做什么 |
|---|---|
| qatest 开始执行 | 启动 App + Dashboard,打开执行面板 |
| 跑测试 | 执行 → 汇总结果 → 失败自动诊断 |
| 执行测试 MARKET-SEARCH-002 | 只跑指定的那一个用例 |
| 你说 | AI 做什么 |
|---|---|
| 诊断失败 | 分析最近失败的用例,给出根因和修复建议 |
| 为什么失败 MARKET-FAV-003 | 分析指定用例的失败原因 |
| 更新选择器 | 修复失效的页面元素定位 |
| 生成报告 | 生成测试质量报告 |
| 你说 | AI 做什么 |
|---|---|
| 设计用例 | 从需求文档分析,设计测试场景 |
| 写用例 | 同上 |
| @需求文档 生成测试用例 | PRD → 结构化用例 → 输出到 docs/qa/testcases/cases/<模块>/ |
| 你说 | AI 做什么 |
|---|---|
| /qa-review 或 审查提交 | 提交前检查用例 / 规则 / 脚本 / Skill 的规范性 + 安全性,报告存到 shared/reports/review-*.md |
| npm run clean | 清理 dist、录制截图、Android session、DS_Store(保留 result JSON) |
开始之前需要准备这些东西。大部分都是"装好就不用管"的。
/Applications/OneKey-3.localized/OneKey.app/Contents/MacOS/OneKey
遇到问题先看这里,大部分情况都能自己解决。
pkill -f "OneKey" && sleep 2
/Applications/OneKey-3.localized/OneKey.app/Contents/MacOS/OneKey --remote-debugging-port=9222 &
Web / 插件端同理,杀掉 Chrome 后脚本会自动重启。
pkill -f "tsx src/dashboard" && npx tsx src/dashboard/server.ts
rm -rf /tmp/chrome-ext-cdp-profile