342 lines
7.4 KiB
Markdown
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
|