refactor(backend): 重命名后端项目为 gym-manage-api,修改包名为 cn.novalon.gym.manage
This commit is contained in:
@@ -0,0 +1,341 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user