AI测试探路者:让测试从“人工经验”走向“全流程自动化”

一、项目背景与痛点

在软件交付流程中,测试环节逐渐成为“木桶的短板”:

  • 依赖人工经验:测试用例设计、执行、报告全靠工程师手动完成,新人上手慢、资深人员负荷重;
  • 效率低、周期长:准备周期长、用例覆盖率随机,回归测试需要大量重复劳动;
  • 结果不可控:测试质量依赖工程师个人水平,不同人设计的用例差异巨大,缺陷漏测风险高;
  • 与研发流程脱节:测试环节无法无缝接入CI/CD流程,代码提交后无法自动触发测试,影响交付效率。

为解决这些问题,我们团队在FY26华为蓝军首届AI黑客马拉松中打造了AI测试探路者(AI Testing Pioneer),将AI能力从“辅助编码”扩展到“测试全流程”,最终斩获银奖。


二、核心目标与定位

本项目的核心目标是:构建AI驱动的全链路测试平台,实现“需求理解→用例设计→自动化执行→智能报告”的测试全流程AI驱动,让测试从依赖个人经验的“手艺活”,转变为可复制、可度量的工程化流程
我们提出“三位一体协同机制”:AI探索识别路径、人工决策把关质量、自动化执行保障效率,在提升效率的同时,避免“AI生成的用例不可信”的问题。


三、整体技术方案

平台采用前后端分离架构,无缝接入现有研发流程:

┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  需求上传    │────▶│  AI用例生成  │────▶│  自动化执行  │────▶│  智能报告生成│
│  (前端)    │     │  (后端NLP) │     │  (双执行器)│     │  (多模型)  │
└─────────────┘     └─────────────┘     └─────────────┘     └─────────────┘
       │                    │                    │                    │
       ▼                    ▼                    ▼                    ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                          技术底座                                          │
│  - 前端:Vue 3 + Element Plus(交互与可视化)                             │
│  - 后端:Node.js + Express + PostgreSQL(业务逻辑与数据存储)             │
│  - 双执行器:Playwright + Puppeteer(测试执行,自动降级)                 │
│  - AI模型:GPT-4/Claude/通义千问(多场景适配)                            │
└─────────────────────────────────────────────────────────────────────────┘

四、核心能力模块详解

1. 自动智能分析:从需求文档中“读”出测试点

基于NLP Pipeline解析需求文档(支持.docx/.pdf格式),通过分块+向量化检索定位关键段落:

  • 自动提取功能点、边界条件、异常场景、性能指标;
  • 识别隐含的测试需求(如“用户登录失败后应返回错误码”这类未明确写出的逻辑);
  • 生成结构化测试输入,为后续用例设计提供完整依据。

2. 双执行器架构:解决复杂页面测试稳定性问题

浏览器端基于Playwright、服务端基于Puppeteer构建双执行器,当视觉比对超阈值时自动切换策略:

  • 解决DOM树遍历、动态内容识别问题,覆盖Vue/React/传统jQuery等各类前端技术栈;
  • 复杂页面(如表格、动态渲染组件)测试成功率提升显著,避免单一工具的局限性;
  • 支持并行执行,大幅提升回归测试效率。

3. 三位一体协同机制:AI、人工、自动化各尽其职

  • AI探索:自动识别需求中的未覆盖路径、边缘场景,生成候选用例;
  • 人工决策:测试工程师对AI生成的用例进行审核、调整,保留关键场景的质量把关;
  • 自动化执行:通过双执行器批量执行用例,生成结果并更新基线;
    三者分工明确、协同互补,在提升效率的同时保留人工质量控制。

4. 多模型适配:不同场景用不同模型

根据任务特性选择最优模型,平衡效果、成本与合规性:

  • 需求理解、场景识别:GPT-4(理解能力强,适合复杂语义分析);
  • 用例生成、脚本编写:Claude(代码生成能力稳定,支持长文档输入);
  • 简单场景测试:通义千问/千问(成本低,满足基础需求)。

5. 智能报告生成:测试结果一键可视化

测试完成后自动生成结构化报告,包含:

  • 用例覆盖率统计、缺陷定位、风险等级评估;
  • 支持导出PDF/Excel格式,便于团队共享与复盘;
  • 缺陷与代码提交、需求文档关联,快速定位问题源头。

五、创新价值与亮点

  1. 测试全流程AI驱动:从需求到报告端到端自动化,将测试工程师从重复劳动中解放出来,聚焦复杂场景设计;
  2. 双执行器架构解决稳定性难题:单一测试工具无法覆盖的复杂场景,通过自动降级策略提升测试成功率;
  3. 三位一体协同保障质量:AI+人工+自动化结合,避免“纯AI生成用例不可信”的问题,同时提升效率;
  4. 无缝接入现有流程:可直接集成到Harness Pipeline,实现“代码提交→自动分析PRD→生成用例→执行测试→输出报告”的CI/CD闭环。

六、应用前景与落地

  • 新功能测试:可快速建立基线用例集,前端Vue 3技术栈保证界面可维护性,后端Express架构便于扩展;
  • 回归测试:在每个迭代结束时自动执行回归测试,大幅减少人工回归成本,避免“改出bug没人发现”的问题;
  • 兼容性测试:通过双执行器支持多浏览器、多版本测试,无需工程师手动搭建环境;
  • 质量分析:通过测试报告沉淀项目质量数据,为后续优化提供依据。

七、代码结构示例

ai-testing-pioneer/
├── frontend/               # 前端项目(Vue3)
│   ├── src/
│   │   ├── components/     # 公共组件(用例卡片、报告图表、需求上传)
│   │   ├── views/         # 页面组件
│   │   │   ├──需求上传.vue
│   │   │   ├──用例管理.vue
│   │   │   └──测试报告.vue
│   │   ├── services/      # API请求封装(调用后端接口)
│   │   └── App.vue
│   └── package.json
├── backend/                # 后端项目(Node.js+Express)
│   ├── src/
│   │   ├── controllers/   # 控制器(处理HTTP请求)
│   │   │   ├──需求解析.js
│   │   │   ├──用例生成.js
│   │   │   ├──测试执行.js
│   │   │   └──报告生成.js
│   │   ├── services/      # 核心服务
│   │   │   ├── nlp-service.js       # NLP需求解析服务
│   │   │   ├── use-case-service.js  # 用例生成服务(多模型适配)
│   │   │   ├── test-executor.js     # 双执行器调度服务
│   │   │   └── report-service.js    # 智能报告生成服务
│   │   ├── utils/         # 工具函数
│   │   │   ├── ai-adapter.js        # 多模型适配封装
│   │   │   ├── playwright-helper.js  # Playwright执行器封装
│   │   │   └── puppeteer-helper.js  # Puppeteer执行器封装
│   │   └── app.js         # 入口文件,启动Express服务
│   ├── package.json
│   └── init.sql           # PostgreSQL数据库初始化脚本
└── README.md

核心模块示例:双执行器调度(test-executor.js

const { PlaywrightExecutor } = require('../utils/playwright-helper');
const { PuppeteerExecutor } = require('../utils/puppeteer-helper');
const config = require('../config');

/**
 * 双执行器调度:优先使用Playwright,失败或比对超阈值时自动切换Puppeteer
 * @param {string} url - 测试页面URL
 * @param {Array} useCases - 测试用例列表
 * @returns {Promise<{results: Array, successRate: number}>}
 */
async function runTestWithFallback(url, useCases) {
  const playwrightExecutor = new PlaywrightExecutor(config.playwright);
  const puppeteerExecutor = new PuppeteerExecutor(config.puppeteer);

  let results = [];
  let successCount = 0;

  try {
    console.log('[双执行器调度] 优先使用Playwright执行测试...');
    const playwrightResults = await playwrightExecutor.runTests(url, useCases);
    results = playwrightResults;
    successCount = results.filter(r => r.success).length;

    // 检查成功率,低于阈值则切换Puppeteer重试失败用例
    const successRate = successCount / useCases.length;
    if (successRate < config.fallbackThreshold) {
      console.log(`[双执行器调度] Playwright成功率${successRate}低于阈值,切换Puppeteer重试失败用例...`);
      const failedCases = results.filter(r => !r.success).map(r => r.useCase);
      const puppeteerResults = await puppeteerExecutor.runTests(url, failedCases);

      // 合并两次执行结果
      results = results.map(r => {
        if (!r.success) {
          const puppeteerResult = puppeteerResults.find(pr => pr.useCase.id === r.useCase.id);
          return puppeteerResult || r;
        }
        return r;
      });
      successCount = results.filter(r => r.success).length;
    }
  } finally {
    // 关闭浏览器实例,释放资源
    await playwrightExecutor.close();
    await puppeteerExecutor.close();
  }

  return {
    results,
    successRate: successCount / useCases.length
  };
}

module.exports = { runTestWithFallback };

八、总结与展望

AI测试探路者的核心价值,并非“用AI代替测试工程师”,而是将工程师从重复的用例编写、执行中解放出来,聚焦更有价值的场景设计与质量决策。我们希望通过全流程AI驱动,让测试从“交付瓶颈”变为“质量保障的加速器”。

未来我们计划将平台与更多研发工具集成,实现从需求管理、代码提交到测试报告的全链路打通,让AI成为测试工程师的“得力助手”,而非“替代者”。


Logo

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

更多推荐