9.9 KiB
9.9 KiB
本地开发环境集成测试方案设计
日期: 2026-04-15
作者: 张翔 (全栈质量保障与效能工程师)
版本: 1.0
1. 任务概述
1.1 目标
启动前后端系统(包含网关服务),确保前后端联通,在开发环境中使用已有的测试框架进行用户旅程测试。数据库部署在Docker中,应用直接在开发环境中运行。
1.2 成功标准
- ✅ 数据库在Docker中成功启动并初始化
- ✅ 后端网关和应用服务在本地成功启动
- ✅ 前端应用在本地成功启动并连接到后端
- ✅ 用户旅程测试(E2E测试)成功执行
- ✅ 所有服务健康状态正常
2. 技术架构
2.1 系统架构
┌─────────────────────────────────────────────────────────────┐
│ 本地开发环境 │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Vue 3 │ │ Spring Cloud│ │ Spring Boot │ │
│ │ 前端应用 │◄──►│ Gateway │◄──►│ 应用服务 │ │
│ │ (端口:3000)│ │ (端口:8080)│ │ (端口:8084) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ▲ ▲ ▲ │
│ │ │ │ │
│ └─────────────────────────┴───────────────┘ │
│ HTTP/REST API 通信 │
├─────────────────────────────────────────────────────────────┤
│ Docker容器环境 │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────────┐ │
│ │ PostgreSQL 15数据库 │ │
│ │ (端口:55432) │ │
│ │ Flyway自动迁移 │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
2.2 技术栈
- 后端: Java 21 + Spring Boot 3.5.13 + Spring Cloud Gateway
- 前端: Vue 3 + TypeScript + Vite + Element Plus
- 数据库: PostgreSQL 15 (Docker容器)
- 测试框架: Playwright (E2E测试)
- 构建工具: Maven (后端) + pnpm/npm (前端)
3. 配置方案
3.1 数据库配置
- 容器服务: PostgreSQL 15 (postgres:15-alpine)
- 端口映射: 55432:5432 (避免与本地PostgreSQL冲突)
- 数据库名称: manage_system
- 认证信息: novalon/novalon123
- 数据卷: postgres_data (持久化存储)
- 健康检查: pg_isready命令验证
3.2 后端服务配置
- 网关服务:
- 端口: 8080
- 路由配置: /api/** → localhost:8084
- 过滤器: JWT认证、RBAC授权、重试机制
- 应用服务:
- 端口: 8084
- 数据库连接: r2dbc:postgresql://localhost:55432/manage_system
- 健康检查: /actuator/health端点
- 启动方式: Maven多模块同时启动
3.3 前端服务配置
- 开发服务器: Vite (端口:3000)
- API代理: 配置代理到网关服务 (localhost:8080)
- 环境变量: 使用开发环境配置
- 构建工具: pnpm (推荐) 或 npm
3.4 测试配置
- 测试框架: Playwright
- 测试范围: 冒烟测试 (login-logout.spec.ts)
- 测试数据:
- 管理员账号: admin/Test@123
- 普通用户账号: user/Test@123
- 测试环境: 连接到本地运行的服务
4. 实施步骤
4.1 阶段一:数据库容器启动
# 1. 启动PostgreSQL容器
docker-compose up -d postgres
# 2. 等待数据库就绪 (10秒)
sleep 10
# 3. 验证数据库连接
docker-compose exec postgres pg_isready -U novalon -d manage_system
4.2 阶段二:后端服务启动
# 1. 进入后端项目目录
cd /Users/zhangxiang/Codes/Novalon/novalon-manage-system/novalon-manage-api
# 2. 使用Maven同时启动网关和应用
mvn spring-boot:run -pl manage-gateway,manage-app -am
4.3 阶段三:前端服务启动
# 1. 进入前端项目目录
cd /Users/zhangxiang/Codes/Novalon/novalon-manage-system/novalon-manage-web
# 2. 安装依赖 (如果未安装)
pnpm install # 或 npm install
# 3. 启动开发服务器
pnpm run dev # 或 npm run dev
4.4 阶段四:执行E2E测试
# 1. 在另一个终端执行冒烟测试
cd /Users/zhangxiang/Codes/Novalon/novalon-manage-system/novalon-manage-web
pnpm run test:e2e:smoke # 或 npm run test:e2e:smoke
5. 验证检查点
5.1 数据库验证
- PostgreSQL容器运行状态正常 (
docker-compose ps) - 数据库端口55432可访问 (
telnet localhost 55432) - Flyway迁移脚本执行成功 (查看应用日志)
5.2 后端验证
- 网关服务在8080端口响应 (
curl http://localhost:8080/actuator/health) - 应用服务在8084端口响应 (
curl http://localhost:8084/actuator/health) - 健康检查端点返回UP状态
- 网关能正确路由到应用服务
5.3 前端验证
- 开发服务器在3000端口运行 (
curl http://localhost:3000) - 页面能正常加载 (浏览器访问 http://localhost:3000)
- API请求能正确代理到后端
5.4 测试验证
- 冒烟测试执行通过
- 登录登出流程正常
- 测试报告生成成功
6. 故障排除预案
6.1 常见问题及解决方案
问题1:端口冲突
- 症状: 服务启动失败,提示端口被占用
- 解决方案:
- 检查8080、8084、55432端口是否被占用:
lsof -i :8080 - 停止占用端口的进程或修改配置使用其他端口
- 修改application.yml中的端口配置
- 检查8080、8084、55432端口是否被占用:
问题2:数据库连接失败
- 症状: 应用启动时报数据库连接错误
- 解决方案:
- 验证Docker容器状态:
docker-compose ps - 检查数据库日志:
docker-compose logs postgres - 验证网络连接:
telnet localhost 55432 - 检查数据库认证信息配置
- 验证Docker容器状态:
问题3:服务启动失败
- 症状: Maven启动时报依赖或配置错误
- 解决方案:
- 清理Maven缓存:
mvn clean - 重新下载依赖:
mvn dependency:resolve - 检查Spring配置文件和环境变量
- 查看详细错误日志
- 清理Maven缓存:
问题4:测试失败
- 症状: Playwright测试执行失败
- 解决方案:
- 验证测试环境服务是否正常运行
- 检查测试数据是否正确
- 查看测试失败截图和日志
- 运行调试模式:
pnpm run test:e2e:debug
6.2 回滚方案
-
停止所有服务:
# 停止Docker容器 docker-compose down # 停止Maven进程 (Ctrl+C) # 停止npm进程 (Ctrl+C) -
清理临时文件:
# 清理Maven构建目录 cd /Users/zhangxiang/Codes/Novalon/novalon-manage-system/novalon-manage-api mvn clean # 清理前端缓存 cd /Users/zhangxiang/Codes/Novalon/novalon-manage-system/novalon-manage-web rm -rf node_modules/.vite -
重新执行: 按照4.1-4.4步骤重新执行
7. 监控与日志
7.1 服务监控
- 数据库:
docker-compose logs -f postgres - 后端应用: Maven控制台输出 + 应用日志
- 前端: Vite开发服务器控制台输出
- 测试: Playwright测试报告和控制台输出
7.2 关键指标
- 服务启动时间
- API响应时间
- 数据库连接状态
- 测试执行成功率
- 资源使用情况 (CPU/内存)
8. 后续优化建议
8.1 短期优化
- 自动化脚本: 创建一键启动脚本,简化操作流程
- 环境配置: 完善本地开发环境配置文件
- 测试数据: 优化测试数据管理,支持数据重置
8.2 中期优化
- 容器化开发环境: 考虑使用DevContainer统一开发环境
- 测试覆盖率: 增加更多E2E测试场景
- 性能监控: 集成APM工具监控应用性能
8.3 长期优化
- CI/CD集成: 将本地测试流程集成到CI/CD流水线
- 多环境支持: 支持开发、测试、预发、生产多环境
- 安全加固: 加强安全测试和漏洞扫描
9. 附录
9.1 配置文件位置
- 数据库配置:
docker-compose.yml - 后端配置:
novalon-manage-api/manage-*/src/main/resources/application*.yml - 前端配置:
novalon-manage-web/.env*,vite.config.ts - 测试配置:
novalon-manage-web/playwright.config.ts
9.2 相关文档
- 项目README:
/Users/zhangxiang/Codes/Novalon/novalon-manage-system/README.md - E2E测试说明:
novalon-manage-web/e2e/README.md - API文档:
http://localhost:8084/swagger-ui.html(启动后访问)
9.3 联系方式
- 负责人: 张翔
- 角色: 全栈质量保障与效能工程师
- 原则: 质量是设计出来的,并通过自动化流水线保障