① 编写用例阶段:
- ⏱️ 耗时 2-3 天手工编写
- 📉 覆盖率仅 60-70%
- 🔁 易错点反复遗漏(边界值、风险场景)
② 执行用例阶段:
- 💻 需要编写代码(Selenium/Playwright)
- 🎬 或使用录制回放(UI 变化即失效)
- 🔧 维护成本极高
① AI 编写用例:
- ⚡ 10 分钟完成(从 Axure 原型一键生成)
- 🎯 覆盖率 85-95%(AI + RAG 知识库增强)
- 🧠 自动补充边界值和风险场景(+40% 专业度)
② 自然语言执行:
- 🗣️ 无需编写代码(写 "点击登录按钮" 即可执行)
- 🤖 AI 智能元素定位(UI 变化自动适配)
- 📊 实时进度监控(WebSocket 推送 + 自动截图)
从原型文件到测试用例,效率提升 20-50 倍。
📤 上传 Axure HTML 文件
↓ AI 深度解析
🤖 生成需求文档(Markdown)
↓
✋ 人工审核修正(第 1 个审核点)
↓
🔄 阶段 1:AI 拆分测试模块(3-6 个模块)
↓
✋ 选择要生成的模块(第 2 个审核点)
↓
🎯 阶段 2:AI 生成测试目的(每个模块 2-8 个测试目的)
↓
✋ 选择要生成的测试目的(第 3 个审核点)
↓
✅ 阶段 3:AI 生成测试点 + RAG 知识库增强(每个目的 3-10 个测试点)
↓
✋ 审核/编辑/保存(第 4 个审核点)
↓
💾 一键保存到用例库
| 指标 | 传统手工 | TestFlow AI | 提升 |
|---|---|---|---|
| 编写时间 | 2-3 天 | 10-30 分钟 | 20-50x ⚡ |
| 功能覆盖率 | 60-70% | 85-95% | +25-35% |
| 边界值覆盖 | 40-60% | 80-95% | +40-55% 🔍 |
| 风险场景识别 | 50-70% | 85-95% | +35-45% 🛡️ |
让 AI 从四个维度记住团队的测试经验,避免重复踩坑。
| 维度 | 说明 | 示例 |
|---|---|---|
| 📘 业务规则 | 常见业务逻辑和验证规则 | "订单金额必须 > 0,小数点后最多2位" |
| 📗 测试模式 | 成熟的测试设计模式 | "组合查询边界值测试模板" |
| 📙 历史踩坑 | 团队遇到的易错点和缺陷 | "库存扣减未考虑并发导致超卖" |
| 📕 风险场景 | 高风险和安全相关测试 | "支付回调重复通知导致重复扣款" |
用户需求:"生成订单创建的测试用例"
↓
🔍 向量化查询(阿里通义 Embedding 1024 维)
↓
📚 Qdrant 语义检索(相似度 ≥ 0.5,从四大维度检索)
📘 业务规则:"订单金额必须 > 0"
📗 测试模式:"组合查询边界值测试模板"
📙 历史踩坑:"库存扣减未考虑并发导致超卖"
📕 风险场景:"支付回调重复通知导致重复扣款"
↓
🎯 注入 AI Prompt(知识增强)
↓
📝 输出专业测试用例
✅ 包含金额边界值测试(0, -1, 0.001, 999999.99)
✅ 包含并发库存扣减测试(100 个并发请求)
✅ 包含支付回调幂等性测试(重复通知验证)
| 指标 | 无 RAG | 有 RAG | 提升 |
|---|---|---|---|
| 边界值覆盖率 | 40-60% | 80-95% | +40-55% |
| 风险场景识别 | 50-70% | 85-95% | +35-45% |
| 专业准确性 | 75-85% | 90-98% | +15-20% |
无需编写代码,用自然语言描述即可执行浏览器自动化。
❌ 传统 Selenium/Playwright 代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com/login")
username = driver.find_element(By.XPATH, "//input[@id='username']")
username.send_keys("admin@test.com")
# ... 数十行代码✅ TestFlow 自然语言执行:
1. 导航到登录页面 https://example.com/login
2. 在用户名输入框输入 admin@test.com
3. 在密码输入框输入 password123
4. 点击登录按钮
5. 验证页面显示"欢迎回来"
自然语言步骤
↓
AI 解析器(理解语义)
↓
MCP 命令生成
↓
Playwright 浏览器自动化
↓
实时截图 + WebSocket 推送
| 维度 | Selenium/Playwright | 录制回放工具 | TestFlow |
|---|---|---|---|
| 编写方式 | 编写代码 | 录制操作 | 自然语言描述 ✍️ |
| 技术门槛 | 需要编程基础 | 无需编程 | 无需编程 👍 |
| 维护成本 | 中(需修改选择器) | 极高(UI 变化即失效) | 低(AI 智能适配) 💰 |
| 灵活性 | 高 | 低(无法修改录制脚本) | 高 🔧 |
| 元素定位 | 手动写选择器 | 固定坐标/选择器 | AI 智能匹配 🤖 |
功能测试用例 → AI 生成器 → 上传 Axure HTML → 生成需求文档
→ 审核修正 → 生成测试模块 → 选择模块 → 生成测试目的
→ 选择目的 → 生成测试点(RAG 增强)→ 保存
测试用例管理 → 选择用例 → 点击执行 → 实时监控 → 查看结果和截图
测试用例管理 → AI 批量更新 → 描述变更需求 → 审核提案 → 应用修改
| 层级 | 技术 | 说明 |
|---|---|---|
| 前端 | React 18 + TypeScript + Tailwind CSS | 现代化 UI |
| 后端 | Node.js + Express + Prisma ORM | API 服务 |
| 数据库 | MySQL 8.0 | 关系型数据库 |
| AI | OpenRouter (GPT-4o/DeepSeek/Claude) + 本地 Gemini/Qwen | 多模型支持 |
| RAG | Qdrant + 阿里通义 Embedding (1024 维) | 知识库增强 |
| 自动化 | MCP + Playwright | 浏览器自动化 |
| 实时通信 | WebSocket | 进度推送 |
完整架构:ARCHITECTURE.md
project/
├── src/ # 前端源码
│ ├── components/ # React 组件
│ ├── pages/ # 页面(测试用例管理、AI 生成器)
│ └── services/ # API 客户端
├── server/ # 后端源码
│ ├── routes/ # API 路由
│ ├── services/ # 核心服务
│ │ ├── mcpClient.ts # MCP 客户端(自然语言执行)
│ │ ├── aiParser.ts # AI 解析器(自然语言 → MCP 命令)
│ │ ├── testExecution.ts # 测试执行编排
│ │ └── testCaseKnowledgeBase.ts # RAG 知识库
│ └── middleware/ # 中间件
├── prisma/ # 数据库
│ └── schema.prisma # 数据库模式
├── docs/ # 文档
│ ├── INSTALLATION.md # 安装指南
│ ├── AI_GENERATOR.md # AI 生成器详解
│ ├── RAG_SETUP.md # RAG 配置指南
│ ├── EXECUTION.md # 自然语言执行原理
│ ├── ARCHITECTURE.md # 技术架构
│ ├── CONFIGURATION.md # 配置详解
│ └── TROUBLESHOOTING.md # 故障排除
└── scripts/ # 工具脚本
- 安装指南 - 详细安装步骤和系统要求
- AI 生成器详解 - 从 Axure 到测试用例的完整流程
- RAG 知识库配置 - 向量数据库配置和知识管理
- 自然语言执行原理 - 技术实现详解和最佳实践
- 技术架构 - 系统架构和核心服务
- 配置说明 - 环境变量配置详解
- 故障排除 - 常见问题和解决方案
npx prisma migrate deploy
npx prisma generatenpx playwright install chromiumcurl http://localhost:6333/health
docker restart <qdrant_container_id>更多问题:TROUBLESHOOTING.md
欢迎 Star ⭐ / Fork 🍴 / PR 🔧
GNU General Public License v3.0 © TestFlow Team
查看完整许可:LICENSE
感谢以下项目和团队:
- Anthropic - MCP 协议
- Playwright - 浏览器自动化
- Qdrant - 向量数据库
- React - 前端框架
- 阿里云通义千问 - Embedding API