Files

342 lines
7.4 KiB
Markdown

# E2E/UAT 测试套件使用指南
## 快速开始
### 1. 环境准备
```bash
# 安装Python依赖
pip install -r requirements.txt
# 复制环境变量配置
cp .env.example .env
# 根据实际情况修改 .env 文件
```
### 2. 启动开发环境
```bash
# 方式1: 使用快速启动脚本
./start_dev.sh
# 方式2: 手动启动
# 启动后端
cd novalon-manage-api
mvn spring-boot:run -Dspring-boot.run.profiles=dev
# 启动前端
cd novalon-manage-web
npm run dev
```
### 3. 运行测试
```bash
# 运行所有测试
python3 run_tests.py
# 运行特定测试文件
python3 run_tests.py --test-case tests/test_auth.py
# 生成测试报告
python3 run_tests.py --html-report reports/report.html --coverage
# 使用Allure生成详细报告
pytest tests/ --alluredir=reports/allure
allure serve reports/allure
```
## 项目结构
```
test-suite/
├── api/ # API测试
│ ├── base_api.py # 基础API客户端
│ ├── auth_api.py # 认证测试
│ ├── user_api.py # 用户管理测试
│ ├── role_api.py # 角色管理测试
│ ├── menu_api.py # 菜单管理测试
│ ├── config_api.py # 配置管理测试
│ ├── audit_api.py # 审计日志测试
│ ├── notice_api.py # 通知管理测试
│ ├── file_api.py # 文件管理测试
│ └── dictionary_api.py # 字典管理测试
├── tests/ # 集成测试
│ ├── test_auth.py # 认证集成测试
│ ├── test_user.py # 用户管理集成测试
│ ├── test_role.py # 角色管理集成测试
│ ├── test_menu.py # 菜单管理集成测试
│ ├── test_config.py # 配置管理集成测试
│ ├── test_audit.py # 审计日志集成测试
│ ├── test_notice.py # 通知管理集成测试
│ ├── test_file.py # 文件管理集成测试
│ ├── test_dictionary.py # 字典管理集成测试
│ └── test_uat_workflow.py # UAT工作流测试
├── config/ # 配置文件
│ ├── settings.py # 测试配置
│ └── __init__.py
├── utils/ # 工具函数
│ ├── data_generator.py # 测试数据生成
│ ├── test_data_manager.py # 测试数据管理
│ ├── logger.py # 日志工具
│ └── assertions.py # 断言工具
├── reports/ # 测试报告输出
├── scripts/ # 辅助脚本
│ ├── start_dev.sh # 快速启动
│ ├── start_backend.sh # 启动后端
│ ├── start_frontend.sh # 启动前端
│ ├── stop_services.sh # 停止服务
│ ├── configure_h2.sh # H2配置
│ ├── generate_report.sh # 生成报告
│ └── run_e2e_uat.sh # E2E/UAT完整流程
├── .env.example # 环境变量示例
├── requirements.txt # Python依赖
├── README.md # 本文件
└── TEST_REPORT.md # 测试报告
```
## 测试分类
### 1. API测试 (api/)
#### 认证测试 (auth_api.py)
- 用户登录/登出
- Token生成与验证
- 权限验证
- JWT令牌管理
#### 用户管理测试 (user_api.py)
- 用户CRUD操作
- 用户状态管理
- 用户权限验证
- 批量操作
#### 角色管理测试 (role_api.py)
- 角色CRUD操作
- 角色权限分配
- 角色菜单配置
- 权限验证
#### 菜单管理测试 (menu_api.py)
- 菜单CRUD操作
- 路由配置
- 菜单权限
- 动态加载
#### 配置管理测试 (config_api.py)
- 系统配置CRUD
- 配置项验证
- 配置缓存
#### 审计日志测试 (audit_api.py)
- 登录日志查询
- 操作日志查询
- 异常日志查询
- 日志清理
#### 通知管理测试 (notice_api.py)
- 通知CRUD操作
- 通知发送
- 通知状态
#### 文件管理测试 (file_api.py)
- 文件上传
- 文件下载
- 文件删除
- 文件列表
#### 字典管理测试 (dictionary_api.py)
- 字典类型CRUD
- 字典数据CRUD
- 字典缓存
### 2. 集成测试 (tests/)
#### UAT工作流测试 (test_uat_workflow.py)
- 完整用户生命周期
- 完整角色权限流程
- 完整菜单配置流程
- 完整系统配置流程
- 完整审计日志流程
#### 边界条件测试 (test_boundary_conditions.py)
- 空数据处理
- 超长数据处理
- 特殊字符处理
- 边界值测试
#### 灾难恢复测试 (test_disaster_recovery.py)
- 数据库故障恢复
- 服务重启恢复
- 数据备份恢复
#### 安全测试 (test_security.py)
- SQL注入防护
- XSS防护
- 认证绕过防护
- 权限提升防护
#### 性能测试 (test_performance.py)
- 响应时间测试
- 并发性能测试
- 压力测试
## 配置说明
### 环境变量 (.env)
```bash
# API配置
BASE_URL=http://localhost:8084
FRONTEND_URL=http://localhost:3000
# 数据库配置
DATABASE=h2
DATABASE_HOST=localhost
DATABASE_PORT=55432
DATABASE_NAME=manage_system
DATABASE_USERNAME=novalon
DATABASE_PASSWORD=novalon123
# 测试用户凭证
TEST_USERNAME=admin
TEST_PASSWORD=admin123
# 浏览器配置
HEADLESS_BROWSER=true
BROWSER_TYPE=chromium
# 超时配置(毫秒)
REQUEST_TIMEOUT=30000
# 测试模式
TEST_MODE=true
ENV=dev
# 并行测试配置
PARALLEL_TEST=true
NUM_WORKERS=4
# 重试配置
RERUN_FAILED_TESTS=true
RERUN_COUNT=2
# 覆盖率配置
COVERAGE_REPORT=true
COVERAGE_THRESHOLD=80
# 报告配置
HTML_REPORT=reports/report.html
JUNIT_REPORT=reports/junit.xml
ALLURE_REPORT=reports/allure
# 日志配置
LOG_LEVEL=INFO
LOG_FILE=reports/test.log
```
### H2数据库配置
```yaml
# application-h2-test.yml
spring:
r2dbc:
url: r2dbc:h2:mem:///testdb
username: sa
password:
datasource:
url: jdbc:h2:mem:testdb
username: sa
password:
h2:
console:
enabled: true
path: /h2-console
flyway:
enabled: false
```
## CI/CD集成
### Woodpecker配置
```yaml
pipeline:
test-e2e-uat:
image: python:3.11
commands:
- cd test-suite
- pip install -r requirements.txt
- python3 run_tests.py --parallel --reruns 2 --coverage
when:
event: [push, pull_request]
```
### 运行命令
```bash
# 本地运行
python3 run_tests.py
# 生成报告
python3 run_tests.py --html-report reports/report.html --coverage
# Allure报告
pytest tests/ --alluredir=reports/allure
allure serve reports/allure
```
## 最佳实践
### 1. 测试编写
- 使用Fixture管理测试数据
- 使用Fixture自动清理测试数据
- 使用参数化测试覆盖多种场景
- 使用断言验证预期结果
### 2. 测试运行
- 提交前运行本地测试
- 使用并行测试提高效率
- 失败用例自动重试
- 生成详细的测试报告
### 3. 测试维护
- 定期清理测试数据
- 更新测试用例覆盖新功能
- 优化测试性能
- 增加测试覆盖
## 故障排查
### 常见问题
1. **连接失败**
- 检查后端服务是否启动
- 检查BASE_URL配置
- 检查网络连接
2. **认证失败**
- 检查TEST_USERNAME和TEST_PASSWORD
- 检查用户是否存在
- 检查用户状态
3. **测试超时**
- 增加REQUEST_TIMEOUT
- 检查服务性能
- 检查网络延迟
4. **数据清理失败**
- 检查数据库连接
- 检查权限配置
- 手动清理测试数据
## 技术支持
- **作者**: 张翔
- **版本**: 1.0.0
- **更新日期**: 2026-03-31