基于AI的智能自动化测试系统:从Excel到全平台测试的完整解决方案
前言
最近在网上找相关的AI测试工具,有的只适合纯web用例执行,但是我司又是传统硬件需要web+android设备仪器测试,找了好久没找到合适的,干脆自己结合市面上比较好用的browser-use和Droidrun自己写一个。
项目概述
🎯 核心特性
- Excel驱动:直接读取Excel文件中的测试用例,降低使用门槛
- ** AI智能解析**:使用大模型解析自然语言测试步骤
- ** 智能代理选择**:根据测试用例内容自动选择最适合的执行引擎
- ** 多平台支持**:同时支持Web端(browser-use)和Android端(droidrun)
- ** 结果回写**:执行结果自动写回Excel文件
- ** 实时日志**:详细的执行日志和状态跟踪
🏗️ 技术架构
scss
智能AI自动化测试系统
├── 核心层 (Core)
│ ├── 配置管理 (Config)
│ ├── Excel处理 (Excel Handler)
│ ├── AI解析器 (AI Parser)
│ └── 智能执行器 (Smart Executor)
├── 代理层 (Agents)
│ ├── Browser-Use代理 (Web自动化)
│ ├── DroidRun代理 (Android自动化)
│ └── 智能选择器 (Agent Selector)
└── 工具层 (Utils)
├── 日志系统 (Logging)
├── 测试用例模型 (Test Case)
└── 结果处理 (Result Handler)
核心技术实现
1. AI解析器:自然语言到结构化步骤
AI解析器是系统的核心组件,负责将Excel中的自然语言测试用例转换为结构化的测试步骤。
python
class AIParser:
"""AI解析器"""
def __init__(self, config: Config):
self.config = config
self.api_key = config.ai.api_key
self.base_url = config.ai.base_url
async def parse_test_case(self, test_case: dict) -> ParsedTestCase:
"""解析测试用例"""
prompt = self._build_prompt(test_case)
# 调用FastGPT API
response = await self._call_ai_api(prompt)
# 解析AI响应
return self._parse_ai_response(response, test_case)
2. 智能代理选择器:自动选择最佳执行引擎
代理选择器通过关键词分析和平台识别,自动选择最适合的执行引擎。
python
class AgentSelector:
"""智能代理选择器"""
def __init__(self):
self.platform_keywords = {
"browser-use": [
"web", "网页", "浏览器", "登录", "搜索", "点击"
],
"droidrun": [
"android", "手机", "app", "应用", "滑动", "长按"
]
}
def select_agent(self, test_case: TestCase) -> Tuple[str, float]:
"""选择代理"""
scores = {"browser-use": 0.0, "droidrun": 0.0}
# 平台直接匹配
if test_case.platform.lower() in ["pc", "web"]:
scores["browser-use"] += 0.5
elif test_case.platform.lower() in ["android", "mobile"]:
scores["droidrun"] += 0.5
# 关键词匹配
content = f"{test_case.name} {test_case.steps} {test_case.expected}"
for agent, keywords in self.platform_keywords.items():
for keyword in keywords:
if keyword in content:
scores[agent] += 0.1
# 选择得分最高的代理
selected_agent = max(scores, key=scores.get)
confidence = scores[selected_agent]
return selected_agent, confidence
核心挑战与解决方案
1. FastGPT与browser-use的兼容性问题
问题描述:FastGPT返回的JSON格式与browser-use期望的Action模型结构不匹配。 如果是用browser-use直接传递gpt的key和指定模型的话,这个问题其实并没有,但是调用频率太恐怖了,用自己跑的模型能省不少钱。
css
FastGPT返回: {"go_to_url": {"url": "https://example.com"}}
browser-use期望: {"go_to_url": "https://example.com"}
解决方案:
- 详细的系统提示词:指导FastGPT返回正确格式(最好是迁移原始的模型适配文件SchemaOptimizer类和提示词迁移,官网已经提了issue,后续有进展会在评论区同步)
- 响应格式验证:在执行前验证响应格式
- 模拟模式降级:当API不可用时自动切换到模拟执行
项目亮点
1. 零代码测试编写
用户只需在Excel中用自然语言描述测试步骤,系统自动解析并执行。
示例:
makefile
测试用例名称: 百度搜索测试
执行平台: PC
测试步骤:
1. 打开百度首页 https://www.baidu.com
2. 在搜索框中输入'AI自动化测试'
3. 点击搜索按钮
4. 验证搜索结果页面显示
预期结果: 搜索结果正常显示
2. 智能代理选择
系统根据测试用例内容自动选择最适合的执行引擎:
- Web相关关键词 → Browser-Use代理
- Android相关关键词 → DroidRun代理
- 置信度评分 → 帮助用户了解选择可靠性
3. 完整的结果追踪
- 实时日志:详细的执行过程记录
- 截图支持:关键步骤自动截图
- 结果回写:执行结果自动写回Excel
- 错误处理:友好的错误信息和恢复机制
技术栈
核心技术
- Python 3.8+:主要开发语言
- FastGPT:AI服务提供商
- browser-use:先进的Web自动化库
- droidrun:Android自动化库
- asyncio:异步编程支持
- Ollama:丰富的模型库以及一键部署(跑在服务端,让fastgpt调用然后暴露api)
依赖库
python
# requirements.txt
loguru>=0.6.0 # 日志系统
pydantic>=1.10.0 # 数据验证
openpyxl>=3.0.0 # Excel处理
aiohttp>=3.8.0 # HTTP客户端
browser-use>=0.4.2 # Web自动化
droidrun>=1.0.0 # Android自动化
使用示例
1. 基本使用
python
from core.smart_executor import SmartTestExecutor
from utils.config import Config
# 加载配置
config = Config()
# 创建执行器
executor = SmartTestExecutor(config)
# 执行测试
await executor.run_tests("test_cases.xlsx")
2. 自定义测试用例
python
from core.test_case import TestCase
# 创建测试用例
test_case = TestCase(
name="登录测试",
platform="PC",
steps="1. 访问登录页面\n2. 输入用户名\n3. 输入密码\n4. 点击登录",
expected="登录成功"
)
# 执行单个测试用例
result = await executor.execute_test_case(test_case)
总结
测试用例步骤清晰的情况下,可以节省测试80%的回归时间,但是在使用中会有奇奇怪怪的问题,建议是添加测试平台或者安卓的知识库给模型调用。
唉,一个前端现在卷的奇奇怪怪的,真想做一只无忧无虑的三角洲鼠鼠。其实想拓展平台也可以,现在windows和ios也有类似工具,原理是相通的,主要是ai分析图像然后解析步骤,各平台的调用其实之前都有。