自动化测试方案
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 分析当前页面 → 决定下一步操作 → 执行操作 → 再次观察 → 循环
安装
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 # 官方推荐,最快最便宜使用示例
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:
{
"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 开源,国内可直接访问)
原理
三层架构:
- **MCP Server 层:**封装了 39 个移动端操作工具,通过 MCP 协议暴露给 AI
- **底层引擎:**Android 用 ADB + UIAutomator2,iOS 用 WebDriverAgent
- **三范式自动降级:**先尝试元素交互(最精准)→ 失败则 SoM 视觉识别(AI 看截图找元素)→ 再失败则坐标定位(兜底)
元素交互(最精准) → SoM 视觉识别(AI 看截图) → 坐标定位(兜底)
安装
pip install -r requirements.txt编辑 ~/.cursor/mcp.json(macOS/Linux):
{
"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。工作流程:
- 截取屏幕截图
- 视觉语言模型(Seed-1.5-VL)理解截图内容(识别按钮、文本框、菜单等)
- 根据用户自然语言指令,决定操作
- 执行系统级操作(鼠标点击/键盘输入/窗口切换)
- 再次截屏,验证结果,循环
截取屏幕 → VLM 理解画面 → 决定操作 → 执行操作 → 截屏验证 → 循环
安装
- **macOS:**下载 .dmg 拖入 Applications,授权辅助功能 + 屏幕录制权限
- **Windows:**双击安装包安装
- 源码构建:
git clone→npm install→npm run build
模型配置(三选一)
方式一:本地部署(用 vLLM)
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-SFT | 2B | 轻量级,快速验证 |
| UI-TARS-7B-DPO | 7B | 推荐,性价比最高 |
| UI-TARS-72B-DPO | 72B | 最强精度,需要好显卡 |
使用方式
打开 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_click、windows_type、windows_fill、windows_get_text、windows_screenshot、windows_list_windows、windows_focus、windows_close、windows_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 中添加:
{
"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_cases | AI 解析 OpenAPI 规范,理解字段类型/约束/依赖关系,自动生成正向+反向+边界用例 | 新接口上线当天基础 Case 自动覆盖,漏测率降低 90% |
| analyze_failure_reason | AI 分析失败日志 + 环境状态 + 代码变更记录,判断根因 | 自动区分"环境问题"还是"代码缺陷",减少人工排查时间 |
| suggest_assertion_fix | AI 对比期望值和实际值的差异,推测断言应如何修改 | 接口返回格式变更时自动建议修复方案 |
| validate_schema_change | AI 对比新旧 OpenAPI diff,分析影响范围 | 接口字段变更时自动评估哪些测试用例受影响 |
效果
企业级优势
- 不侵入原有框架,老项目零改造成本
- 所有 AI 操作可审计、可回溯
- 渐进式引入,从"智能补 Case"开始,逐步扩展到全链路
五、性能测试
8. k6 + LLM(开源方案)
地址: https://github.com/grafana/k6(k6 本身,26,000+ Star)
原理
k6 是 Grafana 出品的云原生性能测试引擎(Go 编写,JS 脚本)。结合 LLM 后形成三层架构:
- **SKILL 层:**定义工作流(意图识别 → 需求收集 → 脚本生成 → 执行 → 分析)
- **Scripts 层:**稳定可复用的原子脚本(数据准备、k6 压测脚本、辅助模块)
- **References 层:**Cookbook 参考手册,约束 AI 生成脚本的质量
使用方式
对 AI 说"对 /api/users 接口做压力测试",AI 会:
- 收集需求(多少并发?多长时间?通过标准是什么?)
- 参考 Cookbook 生成 k6 脚本(含 Thresholds 自动判定)
- 执行
k6 run script.js - 分析结果,输出瓶颈定位 + 优化建议
AI 生成的 k6 脚本示例
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 无限循环 |
| 移动端 | 优先使用模拟器而非真机,减少设备成本 |
课堂练习
- 给你的 AI 测试项目加一个 Flake 检测机制:同一用例运行 3 次,记录通过率。
- 计算你的 CI 每月 Token 消耗,设置一个合理的成本报警阈值。
补充练习与参考答案
补充练习
- 如果团队资源有限,你会优先自动化哪一层,为什么?
- 列出 3 条你判断“这个场景不适合自动化”的标准。
- 怎样定义一条自动化用例是否值得长期维护?
参考答案要点
- 通常优先自动化高频、稳定、可重复、收益高的链路,例如接口层或稳定 UI 冒烟集。
- 不适合自动化的场景往往是需求变化快、判定标准主观、环境极不稳定或维护成本过高。
- 长期维护价值取决于发现缺陷能力、执行频率、稳定性和维护成本之间的平衡。