# 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测试用例 - ✅ 实现自动化测试报告 - ✅ 实现服务器自动管理 - ✅ 实现测试数据管理 --- **注意:** 本测试框架仅用于开发和测试环境,请勿在生产环境中运行。