e2ad1331cc
feat(测试): 新增Playwright和Vitest测试配置 feat(测试): 添加测试覆盖率报告生成功能 feat(测试): 实现前后端测试脚本集成 fix(测试): 修复测试密码不匹配问题 fix(测试): 修正URL等待策略 fix(测试): 调整错误消息选择器 refactor(测试): 重构测试目录结构 refactor(测试): 优化测试用例组织方式 docs: 更新测试报告文档 docs: 添加测试覆盖率报告模板 ci: 添加Docker测试环境配置 ci: 实现测试自动化脚本 chore: 更新依赖版本 chore: 添加测试相关配置文件
285 lines
6.8 KiB
Markdown
285 lines
6.8 KiB
Markdown
# E2E和UAT自动化测试框架
|
|
|
|
## 📋 概述
|
|
|
|
这是一个完整的端到端(E2E)和用户验收测试(UAT)自动化测试框架,基于Python Playwright实现,支持Novalon管理系统的全面自动化测试。
|
|
|
|
## 🎯 主要特性
|
|
|
|
- ✅ **完整的E2E测试覆盖** - 涵盖所有关键业务流程
|
|
- ✅ **UAT用户验收测试** - 模拟真实用户操作场景
|
|
- ✅ **自动化测试执行** - 一键运行所有测试
|
|
- ✅ **详细的测试报告** - 生成HTML和JSON格式的测试报告
|
|
- ✅ **服务器自动管理** - 自动启动和停止测试服务器
|
|
- ✅ **测试数据管理** - 自动化的测试数据初始化和清理
|
|
- ✅ **截图和日志** - 失败时自动截图和记录详细日志
|
|
- ✅ **并发测试支持** - 支持并发操作和边界场景测试
|
|
|
|
## 📁 项目结构
|
|
|
|
```
|
|
novalon-manage-system/
|
|
├── scripts/
|
|
│ ├── server_manager.py # 服务器管理脚本
|
|
│ ├── e2e_uat_automation.py # E2E和UAT自动化测试主脚本
|
|
│ ├── test_report_generator.py # 测试报告生成器
|
|
│ ├── run_e2e_uat.sh # 测试运行Shell脚本
|
|
│ └── requirements.txt # Python依赖
|
|
├── test_screenshots/ # 测试截图目录
|
|
├── test_logs/ # 测试日志目录
|
|
└── test_reports/ # 测试报告目录
|
|
```
|
|
|
|
## 🚀 快速开始
|
|
|
|
### 1. 安装依赖
|
|
|
|
```bash
|
|
cd scripts
|
|
pip install -r requirements.txt
|
|
playwright install --with-deps
|
|
```
|
|
|
|
### 2. 配置环境
|
|
|
|
确保以下服务可用:
|
|
- 后端API服务:http://localhost:8084
|
|
- 前端Web服务:http://localhost:3003
|
|
- PostgreSQL数据库:localhost:55432
|
|
|
|
### 3. 运行测试
|
|
|
|
#### 方式一:使用Shell脚本(推荐)
|
|
|
|
```bash
|
|
# 执行完整测试流程(启动服务器+运行测试+清理)
|
|
./scripts/run_e2e_uat.sh run
|
|
|
|
# 仅启动服务器
|
|
./scripts/run_e2e_uat.sh start
|
|
|
|
# 仅运行测试
|
|
./scripts/run_e2e_uat.sh test
|
|
|
|
# 仅停止服务器
|
|
./scripts/run_e2e_uat.sh stop
|
|
|
|
# 清理测试环境
|
|
./scripts/run_e2e_uat.sh cleanup
|
|
|
|
# 生成测试报告
|
|
./scripts/run_e2e_uat.sh report
|
|
```
|
|
|
|
#### 方式二:使用Python脚本
|
|
|
|
```bash
|
|
# 运行E2E和UAT测试(无头模式)
|
|
python scripts/e2e_uat_automation.py
|
|
|
|
# 运行测试(有头模式,可以看到浏览器操作)
|
|
python scripts/e2e_uat_automation.py --headed
|
|
|
|
# 自定义URL和超时时间
|
|
python scripts/e2e_uat_automation.py \
|
|
--base-url http://localhost:3003 \
|
|
--api-url http://localhost:8084 \
|
|
--timeout 30000
|
|
```
|
|
|
|
#### 方式三:使用服务器管理脚本
|
|
|
|
```bash
|
|
# 启动所有服务器
|
|
python scripts/server_manager.py start --server all
|
|
|
|
# 启动特定服务器
|
|
python scripts/server_manager.py start --server backend
|
|
python scripts/server_manager.py start --server frontend
|
|
|
|
# 停止所有服务器
|
|
python scripts/server_manager.py stop --server all
|
|
|
|
# 重启服务器
|
|
python scripts/server_manager.py restart --server all
|
|
|
|
# 查看服务器状态
|
|
python scripts/server_manager.py status --server all
|
|
```
|
|
|
|
## 📊 测试用例
|
|
|
|
### TC-001: 完整登录流程
|
|
- 测试管理员登录
|
|
- 验证Dashboard页面加载
|
|
- 验证登录日志记录
|
|
- 测试普通用户登录
|
|
|
|
### TC-002: 角色管理完整流程
|
|
- 导航到角色管理页面
|
|
- 验证字段映射
|
|
- 创建新角色
|
|
- 编辑角色信息
|
|
- 删除角色
|
|
|
|
### TC-003: 菜单管理数据验证
|
|
- 导航到菜单管理页面
|
|
- 验证菜单树结构
|
|
- 验证一级和二级菜单
|
|
- 通过API验证字段映射
|
|
|
|
### TC-004: 前后端字段映射一致性
|
|
- 验证角色API字段映射
|
|
- 验证菜单API字段映射
|
|
- 验证用户API字段映射
|
|
|
|
### TC-005: RBAC权限验证
|
|
- 测试管理员权限
|
|
- 测试普通用户权限
|
|
- 测试未授权访问拦截
|
|
|
|
### TC-006: 空数据处理
|
|
- 测试角色空数据
|
|
- 测试菜单空数据
|
|
|
|
### TC-007: 异常输入处理
|
|
- 测试重复角色标识
|
|
- 测试空用户名登录
|
|
- 测试空密码登录
|
|
|
|
### TC-008: 并发操作测试
|
|
- 测试多用户并发编辑
|
|
- 验证并发冲突处理
|
|
|
|
## 📈 测试报告
|
|
|
|
测试完成后会自动生成以下报告:
|
|
|
|
1. **HTML报告** - 交互式HTML报告,包含:
|
|
- 测试摘要统计
|
|
- 详细测试结果
|
|
- 失败截图
|
|
- 错误信息
|
|
- 测试步骤
|
|
|
|
2. **JSON报告** - 机器可读的JSON格式报告
|
|
|
|
3. **文本报告** - 简洁的文本格式报告
|
|
|
|
报告位置:
|
|
- `test_reports/test_report_YYYYMMDD_HHMMSS.html`
|
|
- `test_reports/test_report_YYYYMMDD_HHMMSS.json`
|
|
- `test_reports/E2E_UAT_Report_YYYYMMDD_HHMMSS.txt`
|
|
|
|
## 🔧 配置说明
|
|
|
|
### 测试配置
|
|
|
|
可以在 `e2e_uat_automation.py` 中修改 `TestConfig` 类来调整测试配置:
|
|
|
|
```python
|
|
@dataclass
|
|
class TestConfig:
|
|
base_url: str = "http://localhost:3003" # 前端URL
|
|
api_url: str = "http://localhost:8084" # 后端URL
|
|
headless: bool = True # 无头模式
|
|
timeout: int = 30000 # 超时时间(毫秒)
|
|
screenshot_dir: str = "test_screenshots" # 截图目录
|
|
```
|
|
|
|
### 测试用户配置
|
|
|
|
测试用户信息:
|
|
|
|
```python
|
|
admin_user = {
|
|
"username": "admin",
|
|
"password": "admin123",
|
|
"expected_role": "超级管理员"
|
|
}
|
|
|
|
test_user = {
|
|
"username": "test_user",
|
|
"password": "test123",
|
|
"expected_role": "测试普通用户"
|
|
}
|
|
```
|
|
|
|
## 🐛 故障排除
|
|
|
|
### 问题1: 服务器启动失败
|
|
|
|
**解决方案:**
|
|
```bash
|
|
# 检查端口占用
|
|
lsof -i :8084
|
|
lsof -i :3003
|
|
|
|
# 杀死占用端口的进程
|
|
lsof -ti:8084 | xargs kill -9
|
|
lsof -ti:3003 | xargs kill -9
|
|
```
|
|
|
|
### 问题2: 测试超时
|
|
|
|
**解决方案:**
|
|
- 增加超时时间:`--timeout 60000`
|
|
- 检查服务器是否正常运行
|
|
- 检查网络连接
|
|
|
|
### 问题3: Playwright浏览器未安装
|
|
|
|
**解决方案:**
|
|
```bash
|
|
playwright install --with-deps
|
|
```
|
|
|
|
### 问题4: 测试数据问题
|
|
|
|
**解决方案:**
|
|
```bash
|
|
# 重新初始化测试数据
|
|
cd novalon-manage-api/manage-app
|
|
mvn flyway:clean flyway:migrate
|
|
```
|
|
|
|
## 📝 最佳实践
|
|
|
|
1. **定期运行测试** - 在每次代码提交前运行测试
|
|
2. **维护测试数据** - 定期更新测试数据以反映业务变化
|
|
3. **分析失败原因** - 仔细分析测试失败的根本原因
|
|
4. **更新测试用例** - 根据业务需求更新测试用例
|
|
5. **保持测试独立性** - 确保测试用例之间相互独立
|
|
6. **使用版本控制** - 将测试脚本纳入版本控制
|
|
|
|
## 🤝 贡献指南
|
|
|
|
1. Fork项目
|
|
2. 创建特性分支
|
|
3. 提交更改
|
|
4. 推送到分支
|
|
5. 创建Pull Request
|
|
|
|
## 📄 许可证
|
|
|
|
本项目采用MIT许可证。
|
|
|
|
## 📞 支持
|
|
|
|
如有问题,请联系:
|
|
- 项目负责人:张翔
|
|
- 邮箱:zhangxiang@novalon.com
|
|
|
|
## 🔄 更新日志
|
|
|
|
### v1.0.0 (2024-03-24)
|
|
- ✅ 初始版本发布
|
|
- ✅ 实现完整的E2E测试框架
|
|
- ✅ 实现UAT测试用例
|
|
- ✅ 实现自动化测试报告
|
|
- ✅ 实现服务器自动管理
|
|
- ✅ 实现测试数据管理
|
|
|
|
---
|
|
|
|
**注意:** 本测试框架仅用于开发和测试环境,请勿在生产环境中运行。 |