基于AI的智能自动化测试系统:从Excel到双平台测试的完整解决方案

基于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"}

解决方案

  1. 详细的系统提示词:指导FastGPT返回正确格式(最好是迁移原始的模型适配文件SchemaOptimizer类和提示词迁移,官网已经提了issue,后续有进展会在评论区同步)
  2. 响应格式验证:在执行前验证响应格式
  3. 模拟模式降级:当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分析图像然后解析步骤,各平台的调用其实之前都有。

相关推荐
chao_7891 小时前
frame 与新窗口切换操作【selenium 】
前端·javascript·css·selenium·测试工具·自动化·html
天蓝色的鱼鱼1 小时前
从零实现浏览器摄像头控制与视频录制:基于原生 JavaScript 的完整指南
前端·javascript
三原1 小时前
7000块帮朋友做了2个小程序加一个后台管理系统,值不值?
前端·vue.js·微信小程序
popoxf2 小时前
在新版本的微信开发者工具中使用npm包
前端·npm·node.js
爱编程的喵2 小时前
React Router Dom 初步:从传统路由到现代前端导航
前端·react.js
每天吃饭的羊2 小时前
react中为啥使用剪头函数
前端·javascript·react.js
Nicholas683 小时前
Flutter帧定义与60-120FPS机制
前端
多啦C梦a3 小时前
【适合小白篇】什么是 SPA?前端路由到底在路由个啥?我来给你聊透!
前端·javascript·架构
薛定谔的算法3 小时前
《长安的荔枝·事件流版》——一颗荔枝引发的“冒泡惨案”
前端·javascript·编程语言
中微子3 小时前
CSS 的 position 你真的理解了吗?
前端·css