基于百练平台大模型和 Playwright 的智能 E2E 测试自动化平台
这是一个创新的端到端(E2E)测试自动化平台,利用百练平台的大模型能力,让用户通过自然语言描述测试需求,自动生成、执行测试用例,并提供详细的测试报告。
- 🤖 AI 驱动 - 使用百练平台通义千问模型自动生成测试用例
- 🎯 一句话生成 - 用自然语言描述需求,AI 自动生成 1-N 个测试用例
- 🔄 场景管理 - 支持测试场景与用例的层级管理
- 🔐 智能验证码识别 - 使用 qwen-vl-plus 模型自动识别验证码
- 🌐 Web 界面 - 现代化的 Vue3 + Element Plus 管理界面
- 💾 会话复用 - 支持登录会话保存和复用,提高测试效率
- 📊 详细报告 - 自动生成 Markdown 格式的测试报告
- ⚙️ 全局配置 - 统一管理 URL、用户名、密码等配置
- Python 3.11+
- Node.js 18+
- MySQL 5.7+
- Playwright 浏览器
�ash git clone <repository-url> cd e2etest
复制后端环境变量模板:
�ash cd backend cp .env.example .env
编辑 .env 文件,填入真实配置:
`env
BAILIAN_API_KEY=your_api_key_here BAILIAN_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 BAILIAN_LLM_MODEL=qwen-plus BAILIAN_VL_MODEL=qwen-vl-plus
DATABASE_URL=mysql+aiomysql://username:password@host:port/database
`
`�ash cd backend pip install -r requirements.txt
playwright install chromium `
`�ash
mysql -u root -p CREATE DATABASE e2etest CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; EXIT; `
�ash cd backend python -m app.main
后端服务将在 http://localhost:8000 启动
�ash cd frontend npm install
�ash npm run dev
前端服务将在 http://localhost:5174 启动
- 访问前端页面 http://localhost:5174
- 点击"快速生成"菜单
- 填写目标 URL 和测试需求
- 选择生成策略:
- 仅正向测试(1个用例)
- 基础覆盖(3个用例)
- 全面测试(5个用例)
- 可选:开启"自动识别验证码"
- 点击"生成测试用例"
- 访问"全局配置"页面
- 设置默认 URL、用户名、密码等
- 保存配置
- 在快速生成时,开启"使用全局配置"
- 访问"测试场景"页面
- 创建新场景,填写场景描述
- 选择登录配置:
- 不需要登录
- 执行登录
- 使用全局会话
- 使用指定会话
- 生成和执行测试用例
e2etest/ ├── backend/ # 后端服务 │ ├── app/ │ │ ├── api/ # API 路由 │ │ │ ├── test_cases.py # 测试用例 API │ │ │ ├── scenarios.py # 场景管理 API │ │ │ ├── configs.py # 全局配置 API │ │ │ └── sessions.py # 会话管理 API │ │ ├── core/ # 核心配置 │ │ │ ├── config.py # 配置管理 │ │ │ ├── database.py # 数据库配置 │ │ │ └── llm_logger.py # LLM 日志 │ │ ├── models/ # 数据模型 │ │ │ ├── test_case.py # 场景和用例模型 │ │ │ ├── global_config.py # 全局配置模型 │ │ │ └── test_session.py # 会话模型 │ │ ├── schemas/ # Pydantic schemas │ │ │ ├── test_case.py │ │ │ ├── global_config.py │ │ │ └── ... │ │ ├── services/ # 业务逻辑 │ │ │ ├── llm/ # LLM 集成 │ │ │ │ └── bailian_client.py │ │ │ ├── captcha/ # 验证码服务 │ │ │ ├── generator/ # 测试生成引擎 │ │ │ ├── executor/ # 测试执行引擎 │ │ │ └── session/ # 会话管理 │ │ └── main.py # 应用入口 │ ├── logs/ # 日志目录 │ ├── requirements.txt # Python 依赖 │ └── .env # 环境变量(不提交) ├── frontend/ # 前端应用 │ ├── src/ │ │ ├── api/ # API 调用 │ │ ├── components/ # 公共组件 │ │ ├── views/ # 页面组件 │ │ ├── router/ # 路由配置 │ │ ├── utils/ # 工具函数 │ │ ├── App.vue # 根组件 │ │ └── main.js # 入口文件 │ ├── package.json # Node.js 依赖 │ └── vite.config.js # Vite 配置 ├── README.md # 项目文档 ├── IMPROVEMENTS.md # 改进说明 ├── SESSION_MANAGEMENT.md # 会话管理方案 └── LLM_LOGS.md # LLM 日志说明
在 �ackend/.env 中配置:
env BAILIAN_API_KEY=your_api_key BAILIAN_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 BAILIAN_LLM_MODEL=qwen-plus # 文本生成模型 BAILIAN_VL_MODEL=qwen-vl-plus # 视觉识别模型
env DATABASE_URL=mysql+aiomysql://username:password@host:port/database
注意: 密码中的特殊字符(如 @, #, !)需要进行 URL 编码:
- @ → %40
- ! → %21
示例:密码 E2e123!@# 编码为 E2e123!%40%23
env BROWSER_HEADLESS=True # 无头模式(关闭后可看到浏览器) BROWSER_TIMEOUT=30000 # 超时时间(毫秒)
欢迎贡献代码!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (git checkout -b feature/AmazingFeature)
- 提交更改 (git commit -m 'Add some AmazingFeature')
- 推送到分支 (git push origin feature/AmazingFeature)
- 提交 Pull Request
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
A: 请确保已安装 Playwright 浏览器:
�ash playwright install chromium
如果仍有问题,请检查事件循环策略(代码中已处理)。
A: 日志文件位于 �ackend/logs/llm_interactions.log,使用以下命令查看:
`�ash
cat backend/logs/llm_interactions.log
tail -f backend/logs/llm_interactions.log `
A: 检查以下几点:
- 确保 qwen-vl-plus 模型配置正确
- 检查验证码图片是否清晰可见
- 查看后端日志了解详细错误信息
A: 使用会话复用功能:
- 创建登录场景并保存会话
- 其他场景选择"使用全局会话"或"使用指定会话"
- 自动跳过登录步骤
A: 查看后端日志文件,每次 LLM 调用都会记录:
- 估算的输入 tokens
- 估算的输出 tokens
- 实际的 token 使用情况(如果 API 返回)
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送邮件
- 加入讨论组
- 百练平台 - 提供强大的大模型服务
- Playwright - 现代化的浏览器自动化工具
- FastAPI - 高性能的 Python Web 框架
- Vue 3 - 渐进式 JavaScript 框架
- Element Plus - Vue 3 组件库
Made with ❤️ using AI