AI测试探路者
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格式,便于团队共享与复盘;
- 缺陷与代码提交、需求文档关联,快速定位问题源头。
五、创新价值与亮点
- 测试全流程AI驱动:从需求到报告端到端自动化,将测试工程师从重复劳动中解放出来,聚焦复杂场景设计;
- 双执行器架构解决稳定性难题:单一测试工具无法覆盖的复杂场景,通过自动降级策略提升测试成功率;
- 三位一体协同保障质量:AI+人工+自动化结合,避免“纯AI生成用例不可信”的问题,同时提升效率;
- 无缝接入现有流程:可直接集成到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成为测试工程师的“得力助手”,而非“替代者”。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)