Files
novalon-manage-system/scripts
张翔 e2ad1331cc feat: 添加测试框架和覆盖率报告功能
feat(测试): 新增Playwright和Vitest测试配置
feat(测试): 添加测试覆盖率报告生成功能
feat(测试): 实现前后端测试脚本集成

fix(测试): 修复测试密码不匹配问题
fix(测试): 修正URL等待策略
fix(测试): 调整错误消息选择器

refactor(测试): 重构测试目录结构
refactor(测试): 优化测试用例组织方式

docs: 更新测试报告文档
docs: 添加测试覆盖率报告模板

ci: 添加Docker测试环境配置
ci: 实现测试自动化脚本

chore: 更新依赖版本
chore: 添加测试相关配置文件
2026-03-25 09:03:37 +08:00
..

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. 安装依赖

cd scripts
pip install -r requirements.txt
playwright install --with-deps

2. 配置环境

确保以下服务可用:

3. 运行测试

方式一:使用Shell脚本(推荐)

# 执行完整测试流程(启动服务器+运行测试+清理)
./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脚本

# 运行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

方式三:使用服务器管理脚本

# 启动所有服务器
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 类来调整测试配置:

@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"    # 截图目录

测试用户配置

测试用户信息:

admin_user = {
    "username": "admin",
    "password": "admin123",
    "expected_role": "超级管理员"
}

test_user = {
    "username": "test_user",
    "password": "test123",
    "expected_role": "测试普通用户"
}

🐛 故障排除

问题1: 服务器启动失败

解决方案:

# 检查端口占用
lsof -i :8084
lsof -i :3003

# 杀死占用端口的进程
lsof -ti:8084 | xargs kill -9
lsof -ti:3003 | xargs kill -9

问题2: 测试超时

解决方案:

  • 增加超时时间:--timeout 60000
  • 检查服务器是否正常运行
  • 检查网络连接

问题3: Playwright浏览器未安装

解决方案:

playwright install --with-deps

问题4: 测试数据问题

解决方案:

# 重新初始化测试数据
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许可证。

📞 支持

如有问题,请联系:

🔄 更新日志

v1.0.0 (2024-03-24)

  • 初始版本发布
  • 实现完整的E2E测试框架
  • 实现UAT测试用例
  • 实现自动化测试报告
  • 实现服务器自动管理
  • 实现测试数据管理

注意: 本测试框架仅用于开发和测试环境,请勿在生产环境中运行。