AI驱动UI自动化测试生成平台探索思考


一、项目定位

AI驱动的人机协作UI自动化测试平台,AI辅助生成,人工审核确认,支持两种入口:

  1. 页面URL入口:自动分析页面生成测试用例
  2. 需求文档入口:需求阶段AI辅助分析产出测试点,可导出手动测试或转化为自动化

核心定位:让AI做重复体力活,让人做业务决策,提升测试效率,不替代测试工程师。


二、整体技术架构

┌─────────────────────────────────────────────────────────┐
│                    Frontend (React)                      │
│  React 18 + TypeScript + Vite + TailwindCSS             │
│  Zustand 全局状态 + ReactQuery 服务端数据                │
└─────────────────────────────────────────────────────────┘
                     ↓ RESTful JSON
┌─────────────────────────────────────────────────────────┐
│                   Backend (Python)                       │
│  FastAPI (async) + SQLAlchemy 2.0 + SQLite              │
│  Playwright 浏览器自动化 + OpenAI AI生成                 │
│  分层:Models → Schemas → Routers → Services            │
└─────────────────────────────────────────────────────────┘

架构特点:全异步设计,分层清晰,增量可扩展,轻量易部署。


三、核心设计思路

1. 顶层:产品隔离

  • 以「产品」作为顶层分类容器
  • 不同项目/产品数据完全隔离
  • 凭证、模块、场景都按产品隔离

2. 测试架构:模块化函数驱动

  • 测试模块:最小单元,对应一个独立功能点
  • 依赖+状态:模块定义前置依赖和状态变化
  • 测试场景:组合多个模块形成完整测试流程
  • 增量执行:认证模块会话缓存,不用每次重新登录
  • 状态追踪:处理同URL不同页面状态问题

3. 人机协作:分步确认机制

  • AI生成每个阶段输出后,必须人工确认才能进入下一阶段
  • 错的越早发现,修改成本越低
  • 支持"全部确认"一键跳过,不强制逐条修改
  • 危险操作(覆盖/删除)必须二次确认

4. 两种入口互补

入口 适用场景 测试阶段
页面URL分析 已有可访问产品,需要自动化回归 测试右移
需求文档分析 需求阶段提前测试设计 测试左移

四、当前AI难点与思考

1. AI幻觉问题

问题:AI理解需求可能偏离业务原意,匹配页面元素可能认错,生成选择器可能出错

现有应对不要求AI一次做对,每一步输出都要人肉审核确认,错了改了再往下走,接受AI会犯错,用人把关

思考:完全消除幻觉不可能,人机协作本身就是接受这个事实,AI提速,人控质量。

2. 复杂页面元素匹配

问题:页面元素多、同名元素多、动态id变化,AI可能选错

现有设计:用户只写业务描述,AI抓完用户确认,不对再改。要不要上视觉匹配(截图让用户点选)?会增加很多复杂度,当前轻量化方案更实用

思考:纯LLM匹配不可能100%对,关键是给用户便捷的修改方式,而不是追求完全自动。

3. 输出质量依赖需求输入质量

问题:轻量四阶段路径输出质量严重依赖需求文档质量,如果需求写得模糊,AI输出也模糊

思考:这不完全是缺点——需求模糊的时候,AI发散分析反而能帮助梳理需求,把模糊点暴露出来。当然可以增加"AI主动提问澄清模糊点",但会增加交互复杂度,需要权衡

4. 复用粒度平衡

问题:步骤级复用会不会粒度太细?依赖链太长反而增加维护成本?过度复用会不会改一处崩一片?

思考:不强制复用,用户自己控制。鼓励"同一页面内常用操作"复用,不鼓励跨页面全局复用。模块级和步骤级两种复用并存,用户按需选择。

5. 页面改版后的维护成本

问题:页面改版选择器全变了,复用步骤虽然改一处全生效,但怎么知道哪些复用步骤需要改?

思考:这是复用本身的trade-off,复用节省了新增代码的时间,改版时集中改一处也比到处改好。可以后续增加元素diff检测,提示哪些步骤可能受影响,属于优化迭代,不是必须第一版本做。

6. 深度页面AI生成

问题:深层页面需要多级导航+认证才能到达,AI生成步骤时怎么拿到正确元素?

现有方案:模块自己声明 page_url + 依赖前置模块,生成时自动按依赖执行到达目标页面再抓元素。解决了问题,但依赖用户正确填写依赖。


五、设计哲学

AI辅助,不替代人
早错早改,分步确认
增量扩展,兼容存量
用户控制,选择自由

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐