Skip to content

自动化测试方案

Web · 移动端 · 桌面端 · 接口测试 · 性能测试 · AI 驱动的新一代自动化

本篇定位

覆盖 Web 端、移动端、桌面端、接口测试、性能测试 五大领域的 AI 驱动自动化方案。每个方案包含原理、安装、使用方式和效果评估。游戏测试方案请查看 游戏测试方案

一、Web 端

1. Browser-Use

地址: https://github.com/browser-use/browser-use(86,500+ Star,MIT 许可证)

原理

底层是 Playwright 浏览器引擎 + LangChain Agent 框架。LLM 作为"大脑",Playwright 作为"手脚"。Agent 会:截屏/获取页面状态 → LLM 分析当前页面 → 决定下一步操作(点击/输入/滚动/切标签页) → 执行 → 再次观察 → 循环,直到任务完成。整个过程像一个真人在操作浏览器。

截屏 / 获取页面状态 → LLM 分析当前页面 → 决定下一步操作 → 执行操作 → 再次观察 → 循环

安装

bash
pip install browser-use
# 安装浏览器
uvx browser-use install

配置 .env

OPENAI_API_KEY=your-key      # 或
ANTHROPIC_API_KEY=your-key    # 或
GOOGLE_API_KEY=your-key       # 或
BROWSER_USE_API_KEY=your-key  # 官方推荐,最快最便宜

使用示例

python
from browser_use import Agent, Browser, ChatBrowserUse
import asyncio

async def main():
    agent = Agent(
        task="去淘宝搜索 iPhone 16,找到最便宜的那个,告诉我价格",
        llm=ChatBrowserUse(),
        browser=Browser(),
    )
    result = await agent.run()
    print(result)

asyncio.run(main())

也支持 CLI 模式:

browser-use open https://example.com
browser-use click 5
browser-use type "Hello"
browser-use screenshot page.png

效果

  • 基准测试得分 89.1%,超越大部分商业方案
  • 支持多标签页、错误自动恢复、动态页面自适应
  • 支持 GPT-4o / Claude / Gemini / 本地模型(Ollama + DeepSeek)
  • 可自定义工具扩展 Agent 能力

2. Playwright MCP

地址: https://github.com/microsoft/playwright-mcp(30,500+ Star,微软官方)

原理

和 Browser-Use 的关键区别是——不用截图,不需要视觉模型。它把网页转换成可访问性树(Accessibility Tree),即结构化文本(角色、名称、状态),LLM 直接基于文本语义理解页面结构并操作。成本更低、更稳定。

核心差异

Browser-Use 依赖截图 + 视觉模型理解页面;Playwright MCP 将网页转换为结构化的可访问性树,用普通文本 LLM 即可驱动,成本更低、更稳定。

安装配置(Cursor)

打开 Cursor Settings → MCP → Add new MCP Server,命令填:

npx @playwright/mcp@latest

配置(Claude Desktop)

编辑 claude_desktop_config.json

json
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["-y", "@playwright/mcp@latest"]
    }
  }
}

使用方式

配置好后,直接在 Cursor / Claude 中用自然语言:

  • "打开 https://example.com ,在搜索框输入 AI testing,点击搜索"
  • "帮我测试这个登录页面,用错误密码看看报什么错"
  • "把这个操作流程生成一个 Playwright 测试脚本"

效果

  • AI 会一步步操作浏览器,每步都基于可访问性快照决策
  • 可自动生成完整的 Playwright 测试代码文件
  • 不需要视觉模型,用普通文本 LLM 即可驱动
  • 微软官方维护,和 Playwright 生态深度集成

Browser-Use vs Playwright MCP 选择

选型建议

  • 想让 AI 自主完成复杂任务(爬取、填表、操作流程) → Browser-Use
  • 想让 AI 辅助生成测试代码 → Playwright MCP
  • 两者可以同时使用,互补

二、移动端

3. Mobile-MCP

地址: https://gitee.com/miklechun/mobile-mcp(Gitee 开源,国内可直接访问)

原理

三层架构:

  1. **MCP Server 层:**封装了 39 个移动端操作工具,通过 MCP 协议暴露给 AI
  2. **底层引擎:**Android 用 ADB + UIAutomator2,iOS 用 WebDriverAgent
  3. **三范式自动降级:**先尝试元素交互(最精准)→ 失败则 SoM 视觉识别(AI 看截图找元素)→ 再失败则坐标定位(兜底)

元素交互(最精准) → SoM 视觉识别(AI 看截图) → 坐标定位(兜底)

安装

bash
pip install -r requirements.txt

编辑 ~/.cursor/mcp.json(macOS/Linux):

json
{
  "mcpServers": {
    "mobile-automation": {
      "command": "python3",
      "args": ["/Users/mac/Desktop/mobile_mcp/mobile_mcp/mcp_tools/mcp_server.py"],
      "cwd": "/Users/mac/Desktop/mobile_mcp",
      "env": {
        "PYTHONPATH": "/Users/mac/Desktop/mobile_mcp",
        "MOBILE_PLATFORM": "android"
      }
    }
  }
}

前置条件

  • **Android:**手机开启 USB 调试,连接电脑,adb devices 能识别
  • **iOS:**配置 WebDriverAgent

使用方式

在 Cursor 中直接说:

  • "帮我测试登录流程"
  • "点击首页的搜索按钮,输入 test,然后截图"
  • "把刚才的操作生成 pytest 测试脚本"

工具清单

  • **基础工具(9个):**元素列表、精确点击、文本点击、坐标点击、文本输入、按类名查找、元素等待、截图、区域截图
  • **智能工具(4个):**自然语言智能点击、智能输入、AI 视觉识别、AI 状态检查
  • **测试工具:**自动录制 → 一键生成 pytest 脚本(含等待逻辑和弹窗处理)

效果

效率对比

  • 传统 Appium 方式:学习 + 写代码 + 调试 ≈ 2 周起步
  • Mobile-MCP 方式:对 AI 说人话 → 2 分钟搞定
  • UI 改了 AI 自动适配,无需维护元素定位
  • 结合飞书 MCP 实现用例自动化执行闭环

三、桌面端

4. UI-TARS Desktop(字节跳动)

地址: https://github.com/bytedance/UI-TARS-desktop(29,300+ Star)

原理

和其他方案根本不同——它用的是视觉语言模型(VLM),不依赖控件树或 DOM。工作流程:

  1. 截取屏幕截图
  2. 视觉语言模型(Seed-1.5-VL)理解截图内容(识别按钮、文本框、菜单等)
  3. 根据用户自然语言指令,决定操作
  4. 执行系统级操作(鼠标点击/键盘输入/窗口切换)
  5. 再次截屏,验证结果,循环

截取屏幕 → VLM 理解画面 → 决定操作 → 执行操作 → 截屏验证 → 循环

安装

  • **macOS:**下载 .dmg 拖入 Applications,授权辅助功能 + 屏幕录制权限
  • **Windows:**双击安装包安装
  • 源码构建:git clonenpm installnpm run build

模型配置(三选一)

方式一:本地部署(用 vLLM)

bash
pip install vllm>=0.6.1
python -m vllm.entrypoints.openai.api_server \
  --served-model-name ui-tars \
  --model bytedance-research/UI-TARS-7B-DPO

**方式二:**云端 API(火山引擎 / HuggingFace Inference) **方式三:**直接用 OpenAI 兼容接口的第三方模型

模型规格选择

模型参数量适用场景
UI-TARS-2B-SFT2B轻量级,快速验证
UI-TARS-7B-DPO7B推荐,性价比最高
UI-TARS-72B-DPO72B最强精度,需要好显卡

使用方式

打开 UI-TARS Desktop 应用 → 输入自然语言指令:

  • "打开 Chrome,搜索今天的天气"
  • "打开 Excel,在 A1 输入销售数据,B1 输入 100"
  • "切换到微信,给张三发消息说下午开会"

效果

  • 全平台(Windows/macOS/Linux)
  • 不依赖控件 ID 或 DOM,纯视觉理解,任何应用都能操作
  • 界面变了也能自适应(vs RPA 界面一变就崩)
  • 支持 MCP 扩展接入外部工具

5. FlaUI-MCP(Windows 专项)

地址: https://github.com/shanselman/FlaUI-MCP

原理

和 UI-TARS 相反——不截图,不用视觉模型。它基于 Windows UI Automation API,把应用的控件树转成结构化的可访问性树,每个元素分配语义引用(如 w1e5),AI 通过引用精准操作。类似于 Playwright MCP 对浏览器做的事,FlaUI-MCP 对 Windows 桌面应用做。

安装

  • 需要 Windows 10/11 + .NET 8.0 Runtime
  • 从 GitHub Releases 下载,解压到任意文件夹
  • 在 MCP 客户端配置中指向可执行文件路径

工具清单

windows_launch(启动应用)、windows_snapshot(获取控件树快照)、windows_clickwindows_typewindows_fillwindows_get_textwindows_screenshotwindows_list_windowswindows_focuswindows_closewindows_batch(批量操作)

效果

  • 精准操作 WPF/WinForms/UWP 等 Windows 原生应用
  • 不依赖坐标,不怕分辨率变化
  • 比视觉方案更快更稳,但只能用于 Windows

UI-TARS vs FlaUI-MCP 选择

选型建议

  • 跨平台 / 任意应用(包括游戏、自研软件) → UI-TARS(视觉方案)
  • Windows 原生应用 + 追求速度和稳定性 → FlaUI-MCP(控件树方案)

四、接口测试

6. api-testing-mcp

地址: https://github.com/cocaxcode/api-testing-mcp(MIT 许可证) NPM: @cocaxcode/api-testing-mcp

原理

一个包含 42 个工具的 MCP Server,覆盖 API 测试全生命周期。AI 通过 MCP 协议调用这些工具,实现从导入 OpenAPI → 生成测试 → 执行请求 → 断言验证 → 负载测试 → 环境对比的完整闭环。所有数据以纯 JSON 本地存储,零云依赖。

安装(Cursor)

.cursor/mcp.json 中添加:

json
{
  "mcpServers": {
    "api-testing": {
      "command": "npx",
      "args": ["-y", "@cocaxcode/api-testing-mcp@latest"]
    }
  }
}

使用方式(全自然语言)

  • "导入这个 OpenAPI 文档 https://xxx/swagger.json"
  • "GET /users 接口,验证返回 200"
  • "用随机数据 POST 创建一个用户"
  • "登录为管理员,提取 token,然后拿 token 去请求 /dashboard"
  • "50 个并发请求打 /health,看看性能怎么样"
  • "对比 dev 和 prod 环境的 /users 接口响应差异"
  • "把这个请求导出为 cURL 命令"

42 个工具分类

类别功能
请求GET/POST/PUT/PATCH/DELETE,支持 Bearer/API Key/Basic 认证
断言状态码、响应体、Schema 验证
流程多步请求链、变量提取与传递
OpenAPI导入 Swagger/OpenAPI 规范,自动识别端点和参数
Mock 数据基于 Schema 自动生成测试数据
负载测试并发测试 + P50/P90/P99 百分位指标
环境管理多环境切换(dev/staging/prod)
响应 Diff跨环境对比同一接口的返回差异
导出Postman 集合导入/导出、cURL 导出

效果

  • 零配置开箱即用
  • 完全替代 Postman 的核心功能,且由 AI 驱动
  • 导入 OpenAPI 后 AI 自动了解每个端点、必需字段和合法值

7. 接口自动化框架 + MCP 插件(企业级方案)

**来源:**腾讯云社区工程实践(非开源产品,是一种架构模式)

原理

不替换现有框架,而是把 AI 作为可插拔的智能插件嵌入已有的 pytest/HttpRunner 等框架。通过 MCP 协议暴露 4 个核心 AI 能力:

MCP 工具原理效果
generate_test_casesAI 解析 OpenAPI 规范,理解字段类型/约束/依赖关系,自动生成正向+反向+边界用例新接口上线当天基础 Case 自动覆盖,漏测率降低 90%
analyze_failure_reasonAI 分析失败日志 + 环境状态 + 代码变更记录,判断根因自动区分"环境问题"还是"代码缺陷",减少人工排查时间
suggest_assertion_fixAI 对比期望值和实际值的差异,推测断言应如何修改接口返回格式变更时自动建议修复方案
validate_schema_changeAI 对比新旧 OpenAPI diff,分析影响范围接口字段变更时自动评估哪些测试用例受影响

效果

企业级优势

  • 不侵入原有框架,老项目零改造成本
  • 所有 AI 操作可审计、可回溯
  • 渐进式引入,从"智能补 Case"开始,逐步扩展到全链路

五、性能测试

8. k6 + LLM(开源方案)

地址: https://github.com/grafana/k6(k6 本身,26,000+ Star)

原理

k6 是 Grafana 出品的云原生性能测试引擎(Go 编写,JS 脚本)。结合 LLM 后形成三层架构:

  1. **SKILL 层:**定义工作流(意图识别 → 需求收集 → 脚本生成 → 执行 → 分析)
  2. **Scripts 层:**稳定可复用的原子脚本(数据准备、k6 压测脚本、辅助模块)
  3. **References 层:**Cookbook 参考手册,约束 AI 生成脚本的质量

使用方式

对 AI 说"对 /api/users 接口做压力测试",AI 会:

  1. 收集需求(多少并发?多长时间?通过标准是什么?)
  2. 参考 Cookbook 生成 k6 脚本(含 Thresholds 自动判定)
  3. 执行 k6 run script.js
  4. 分析结果,输出瓶颈定位 + 优化建议

AI 生成的 k6 脚本示例

python
import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  stages: [
    { duration: '30s', target: 50 },
    { duration: '1m', target: 100 },
    { duration: '30s', target: 0 },
  ],
  thresholds: {
    http_req_duration: ['p(95)<500'],
    http_req_failed: ['rate<0.01'],
  },
};

export default function () {
  const res = http.get('https://api.example.com/users');
  check(res, { 'status is 200': (r) => r.status === 200 });
  sleep(1);
}

效果

  • 自然语言 → 自动生成可执行的 k6 脚本
  • 脚本自带通过/失败标准(Thresholds),直接对接 CI/CD
  • 脚本能自修复:检测指标异常时自动调整场景
  • 配合 Grafana + Prometheus 实现实时可视化大盘
  • 完全开源免费

与传统性能测试对比

传统方式需要手写 JMeter/Locust 脚本,理解协议细节,手动设置阈值。k6 + LLM 方案用自然语言描述需求,AI 自动生成带通过标准的脚本,并在执行后自动分析瓶颈、给出优化建议。

补充:自动化测试的稳定性治理

Flake(片状测试)治理

AI 自动化测试的 Flake 率天然高于传统测试,因为 AI 输出不确定。以下是降低 Flake 的策略:

策略做法适用场景
多次运行取多数同一用例跑 3 次,2/3 通过即 PASS质量评测类用例
放宽断言用"包含关键词"替代"精确匹配"自然语言输出
分层标记critical 用例必须 100% 通过,quality 用例允许 10% 失败CI 门禁
温度锁定评测时固定 temperature=0回归测试
Seed 固定使用 seed 参数提高可复现性调试和对比

成本控制最佳实践

环节控制方式
日常 CI使用便宜模型(gpt-4o-mini),Golden Set 控制在 20-50 条
发版前使用正式模型跑完整数据集,但设置每日成本上限
浏览器自动化每轮测试限定最大步骤数,避免 AI Agent 无限循环
移动端优先使用模拟器而非真机,减少设备成本

课堂练习

  1. 给你的 AI 测试项目加一个 Flake 检测机制:同一用例运行 3 次,记录通过率。
  2. 计算你的 CI 每月 Token 消耗,设置一个合理的成本报警阈值。

补充练习与参考答案

补充练习

  1. 如果团队资源有限,你会优先自动化哪一层,为什么?
  2. 列出 3 条你判断“这个场景不适合自动化”的标准。
  3. 怎样定义一条自动化用例是否值得长期维护?

参考答案要点

  • 通常优先自动化高频、稳定、可重复、收益高的链路,例如接口层或稳定 UI 冒烟集。
  • 不适合自动化的场景往往是需求变化快、判定标准主观、环境极不稳定或维护成本过高。
  • 长期维护价值取决于发现缺陷能力、执行频率、稳定性和维护成本之间的平衡。