# Ether 智慧物业管理平台 - 集成测试方案 **文档版本**: v1.0 **创建日期**: 2026-02-14 **测试负责人**: 测试专家 **项目技术栈**: Spring Boot 3.x + Java 17 + PostgreSQL + Vue 3 + TypeScript --- ## 一、测试范围和目标 ### 1.1 测试范围 #### 后端服务模块 | 模块 | 服务 | 主要功能 | 测试优先级 | |------|------|----------|------------| | ether-auth | 认证服务 | 用户登录、权限验证、JWT Token管理 | P0 | | ether-mdm | 主数据管理 | 项目管理、业主管理、空间管理、设备管理 | P0 | | ether-ops | 运营调度 | 工单管理、巡检管理、投诉建议、满意度调查、问卷调查、智能派单 | P0 | | ether-asset | 资产管理 | 设备资产管理、维保计划 | P1 | | ether-finance | 财务计费 | 费用管理、账单管理、支付管理 | P1 | | ether-gateway | API网关 | 路由转发、认证拦截、限流熔断 | P1 | #### 前端功能模块 | 模块 | 主要功能 | 测试优先级 | |------|----------|------------| | 登录认证 | 登录、登出、Token刷新、密码修改 | P0 | | 用户管理 | 用户CRUD、角色分配、状态管理 | P0 | | 角色权限 | 角色CRUD、权限分配、数据权限 | P0 | | 项目管理 | 项目CRUD、成员管理、项目切换 | P0 | | 工单管理 | 工单全生命周期管理、分配、处理、验收 | P0 | | 设备管理 | 设备CRUD、二维码、维修历史 | P1 | | 巡检管理 | 巡检计划、巡检任务、巡检记录 | P1 | | 投诉建议 | 投诉提交、处理流程、统计分析 | P1 | | 满意度调查 | 调查创建、回应收集、统计分析 | P1 | | 问卷调查 | 问卷创建、回应收集、结果分析 | P1 | | 智能派单 | 派单规则、算法匹配、负载均衡 | P1 | | 运营大屏 | 数据可视化、实时监控 | P2 | | 综合报表 | 多维度统计、报表导出 | P2 | ### 1.2 测试目标 #### 主要目标 1. **业务流程覆盖**: 验证所有核心业务流程端到端正确执行 2. **边界条件覆盖**: 验证系统在边界条件下的正确性和稳定性 3. **数据一致性覆盖**: 验证数据在各模块间的正确流转和一致性 4. **测试覆盖率达到99%**: 代码覆盖率、功能覆盖率、场景覆盖率 #### 质量目标 | 指标 | 目标值 | 说明 | |------|--------|------| | 代码覆盖率 | >= 99% | Jacoco计算,包含行覆盖和分支覆盖 | | 功能覆盖率 | 100% | 所有功能点均有测试用例 | | 接口覆盖率 | 100% | 所有API接口均有集成测试 | | 业务场景覆盖率 | 100% | 所有业务场景均有E2E测试 | | 缺陷修复率 | 100% | 所有发现的缺陷必须修复 | --- ## 二、测试策略和方法 ### 2.1 测试层次架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ E2E 端到端测试 │ │ (Playwright/Puppeteer - 用户真实操作场景) │ ├─────────────────────────────────────────────────────────────┤ │ API 集成测试 │ │ (Spring Boot Test - 服务间交互验证) │ ├─────────────────────────────────────────────────────────────┤ │ 组件集成测试 │ │ (MockMvc - Controller层集成测试) │ ├─────────────────────────────────────────────────────────────┤ │ 数据集成测试 │ │ (Testcontainers - 真实数据库测试) │ └─────────────────────────────────────────────────────────────┘ ``` ### 2.2 测试方法 #### 2.2.1 后端集成测试 | 测试类型 | 工具 | 适用场景 | |----------|------|----------| | 服务集成测试 | Spring Boot Test + H2/Testcontainers | 验证服务内部组件集成 | | API集成测试 | MockMvc | 验证Controller层API行为 | | 数据集成测试 | Testcontainers + PostgreSQL | 验证数据库操作正确性 | | 消息集成测试 | RabbitMQ Test | 验证消息队列交互 | | 契约测试 | Spring Cloud Contract | 验证服务间接口契约 | #### 2.2.2 前端集成测试 | 测试类型 | 工具 | 适用场景 | |----------|------|----------| | 组件测试 | Vitest + Vue Test Utils | 验证Vue组件行为 | | E2E测试 | Playwright | 验证用户完整操作流程 | | API Mock测试 | MSW | 验证前端API调用逻辑 | | 视觉回归测试 | Playwright Snapshot | 验证UI一致性 | ### 2.3 测试数据策略 #### 测试数据分类 | 数据类型 | 说明 | 管理方式 | |----------|------|----------| | 基础数据 | 用户、角色、权限、项目 | 测试前初始化 | | 业务数据 | 工单、设备、巡检记录 | 测试中动态创建 | | 边界数据 | 极限值、特殊字符、空值 | 测试用例内定义 | | 脏数据 | 不完整、不一致数据 | 异常场景测试 | #### 数据隔离策略 - 每个测试类使用独立的事务,测试后自动回滚 - 使用独立的测试数据库,与开发/生产环境隔离 - 测试数据使用固定ID,避免冲突 --- ## 三、测试环境配置 ### 3.1 环境架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ 测试环境 (Test) │ ├─────────────────────────────────────────────────────────────┤ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ PostgreSQL │ │ RabbitMQ │ │ Redis │ │ │ │ (Test DB) │ │ (Test MQ) │ │ (Test Cache)│ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Spring Boot Services │ │ │ │ ether-auth | ether-mdm | ether-ops | ether-finance │ │ │ └─────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Frontend (Vue 3 + Vite) │ │ │ │ localhost:5173 │ │ │ └─────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ### 3.2 后端测试配置 #### Maven依赖配置 ```xml org.springframework.boot spring-boot-starter-test test com.h2database h2 test org.testcontainers testcontainers 1.19.7 test org.testcontainers postgresql 1.19.7 test org.jacoco jacoco-maven-plugin 0.8.11 ``` #### 测试配置文件 (application-test.yml) ```yaml spring: datasource: url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=PostgreSQL driver-class-name: org.h2.Driver username: sa password: jpa: hibernate: ddl-auto: create-drop show-sql: false properties: hibernate: dialect: org.hibernate.dialect.H2Dialect format_sql: true flyway: enabled: false logging: level: com.ether: DEBUG org.springframework.test: INFO ``` ### 3.3 前端测试配置 #### Playwright配置 (playwright.config.ts) ```typescript import { defineConfig, devices } from '@playwright/test'; export default defineConfig({ testDir: './tests', fullyParallel: true, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 1 : undefined, reporter: [ ['html', { outputFolder: 'playwright-report' }], ['json', { outputFile: 'test-results/results.json' }] ], use: { baseURL: 'http://localhost:5173', trace: 'on-first-retry', screenshot: 'only-on-failure', video: 'retain-on-failure', }, projects: [ { name: 'chromium', use: { ...devices['Desktop Chrome'] }, }, { name: 'firefox', use: { ...devices['Desktop Firefox'] }, }, { name: 'webkit', use: { ...devices['Desktop Safari'] }, }, ], webServer: { command: 'npm run dev', url: 'http://localhost:5173', reuseExistingServer: !process.env.CI, timeout: 120000, }, }); ``` ### 3.4 测试账号配置 | 账号类型 | 用户名 | 密码 | 角色 | 用途 | |---------|--------|------|------|------| | 超级管理员 | admin | Admin@123 | SUPER_ADMIN | 全功能测试 | | 项目管理员 | project_admin | Project@123 | PROJECT_ADMIN | 项目级管理测试 | | 运维人员 | worker_user | Worker@123 | WORKER | 工单处理测试 | | 普通用户 | normal_user | Normal@123 | USER | 基础功能测试 | | 巡检人员 | inspector_user | Inspector@123 | INSPECTOR | 巡检任务测试 | --- ## 四、测试用例设计 ### 4.1 业务流程测试用例 #### 4.1.1 工单管理完整流程测试 | 用例ID | 测试场景 | 测试步骤 | 期望结果 | |--------|----------|----------|----------| | TC-INT-WORK-001 | 工单创建到关闭完整流程 | 1. 创建工单
2. 分配工单
3. 接受工单
4. 开始处理
5. 完成工单
6. 验收通过
7. 关闭工单 | 每个状态转换正确,流程记录完整 | | TC-INT-WORK-002 | 工单转派流程 | 1. 创建并分配工单
2. 转派给其他人员
3. 新人员接受处理 | 转派记录正确,通知发送正确 | | TC-INT-WORK-003 | 工单挂起恢复流程 | 1. 创建并开始处理工单
2. 挂起工单
3. 恢复工单
4. 继续处理 | 挂起时间记录正确,状态转换正确 | | TC-INT-WORK-004 | 工单退回重新分配流程 | 1. 创建并分配工单
2. 处理人退回
3. 重新分配
4. 新人处理 | 退回原因记录正确,重新分配成功 | | TC-INT-WORK-005 | 工单验收不通过流程 | 1. 完成工单
2. 验收不通过
3. 重新处理
4. 再次验收 | 状态回退正确,处理记录完整 | #### 4.1.2 设备管理关联流程测试 | 用例ID | 测试场景 | 测试步骤 | 期望结果 | |--------|----------|----------|----------| | TC-INT-ASSET-001 | 设备报修到维修完成流程 | 1. 扫描设备二维码
2. 创建报修工单
3. 处理工单
4. 更新设备状态 | 工单与设备关联正确,设备状态更新 | | TC-INT-ASSET-002 | 设备维修历史查询 | 1. 创建多个设备工单
2. 完成处理
3. 查询设备维修历史 | 维修历史完整,统计准确 | #### 4.1.3 巡检管理流程测试 | 用例ID | 测试场景 | 测试步骤 | 期望结果 | |--------|----------|----------|----------| | TC-INT-INSP-001 | 巡检计划执行流程 | 1. 创建巡检计划
2. 生成巡检任务
3. 执行巡检
4. 上报异常
5. 创建整改工单 | 任务生成正确,异常上报成功 | | TC-INT-INSP-002 | 巡检异常转工单流程 | 1. 巡检发现异常
2. 自动创建工单
3. 处理工单
4. 关联巡检记录 | 工单自动创建,关联关系正确 | #### 4.1.4 投诉建议处理流程测试 | 用例ID | 测试场景 | 测试步骤 | 期望结果 | |--------|----------|----------|----------| | TC-INT-COMP-001 | 投诉处理完整流程 | 1. 提交投诉
2. 指派处理人
3. 处理投诉
4. 回复处理结果
5. 用户评价 | 流程完整,评价记录正确 | | TC-INT-COMP-002 | 投诉升级处理流程 | 1. 提交投诉
2. 超时未处理
3. 自动升级
4. 上级处理 | 升级机制正确,通知发送 | #### 4.1.5 满意度调查流程测试 | 用例ID | 测试场景 | 测试步骤 | 期望结果 | |--------|----------|----------|----------| | TC-INT-SAT-001 | 满意度调查创建到统计流程 | 1. 创建满意度调查
2. 发送调查邀请
3. 用户填写
4. 统计分析 | 调查数据完整,统计准确 | | TC-INT-SAT-002 | 工单满意度评价流程 | 1. 完成工单
2. 发送评价邀请
3. 用户评价
4. 统计展示 | 评价关联正确,统计准确 | ### 4.2 边界条件测试用例 #### 4.2.1 数据边界测试 | 用例ID | 测试场景 | 边界条件 | 期望结果 | |--------|----------|----------|----------| | TC-BOUND-001 | 工单标题长度边界 | 最小(1字符)、最大(100字符)、超长(101字符) | 边界内成功,超长拒绝 | | TC-BOUND-002 | 分页查询边界 | 第0页、第1页、超出范围页、每页0条、每页100条 | 正确处理边界值 | | TC-BOUND-003 | 日期范围边界 | 开始日期等于结束日期、跨年查询、未来日期 | 正确处理各种日期场景 | | TC-BOUND-004 | 数值边界 | 最小值、最大值、负数、零、超大数 | 正确验证数值范围 | | TC-BOUND-005 | 并发数量边界 | 单用户最大会话数、单项目最大成员数 | 正确限制数量 | #### 4.2.2 状态边界测试 | 用例ID | 测试场景 | 边界条件 | 期望结果 | |--------|----------|----------|----------| | TC-STATE-001 | 工单状态非法转换 | 从"已关闭"状态尝试"开始处理" | 拒绝非法状态转换 | | TC-STATE-002 | 用户状态边界操作 | 锁定用户尝试登录、删除有工单的用户 | 正确处理状态限制 | | TC-STATE-003 | 项目状态边界操作 | 归档项目尝试创建工单 | 正确处理项目状态限制 | #### 4.2.3 输入边界测试 | 用例ID | 测试场景 | 边界条件 | 期望结果 | |--------|----------|----------|----------| | TC-INPUT-001 | 特殊字符输入 | SQL注入字符、XSS脚本、HTML标签 | 正确过滤或转义 | | TC-INPUT-002 | 空值输入 | 空字符串、null值、空白字符 | 正确处理空值 | | TC-INPUT-003 | 格式校验边界 | 错误邮箱格式、错误手机号格式、错误日期格式 | 正确校验格式 | | TC-INPUT-004 | 文件上传边界 | 超大文件、非法格式、空文件 | 正确处理上传边界 | ### 4.3 数据一致性测试用例 #### 4.3.1 事务一致性测试 | 用例ID | 测试场景 | 测试步骤 | 期望结果 | |--------|----------|----------|----------| | TC-TRANS-001 | 工单创建事务回滚 | 1. 创建工单
2. 触发异常
3. 验证数据回滚 | 工单和流程记录全部回滚 | | TC-TRANS-002 | 批量操作事务一致性 | 1. 批量创建工单
2. 部分失败
3. 验证全部回滚 | 要么全部成功,要么全部回滚 | | TC-TRANS-003 | 跨服务事务一致性 | 1. 创建工单并发送通知
2. 通知发送失败
3. 验证补偿机制 | 最终数据一致 | #### 4.3.2 关联数据一致性测试 | 用例ID | 测试场景 | 测试步骤 | 期望结果 | |--------|----------|----------|----------| | TC-REL-001 | 用户删除关联数据处理 | 1. 用户有工单记录
2. 尝试删除用户
3. 验证处理结果 | 正确处理关联数据 | | TC-REL-002 | 项目删除级联处理 | 1. 项目有工单、设备、巡检记录
2. 尝试删除项目
3. 验证级联处理 | 正确处理级联删除或拒绝 | | TC-REL-003 | 设备状态与工单状态同步 | 1. 创建设备维修工单
2. 处理工单
3. 验证设备状态 | 设备状态正确同步 | #### 4.3.3 并发一致性测试 | 用例ID | 测试场景 | 测试步骤 | 期望结果 | |--------|----------|----------|----------| | TC-CONC-001 | 工单并发分配 | 多个管理员同时分配同一工单 | 只有一个分配成功 | | TC-CONC-002 | 库存并发扣减 | 多个操作同时扣减设备备件库存 | 库存扣减正确,不超扣 | | TC-CONC-003 | 统计数据并发更新 | 多个工单同时完成,更新统计数据 | 统计数据准确 | #### 4.3.4 缓存一致性测试 | 用例ID | 测试场景 | 测试步骤 | 期望结果 | |--------|----------|----------|----------| | TC-CACHE-001 | 权限缓存更新 | 1. 修改用户权限
2. 验证缓存更新 | 权限缓存正确更新 | | TC-CACHE-002 | 项目信息缓存同步 | 1. 修改项目信息
2. 验证各服务缓存同步 | 缓存正确同步 | --- ## 五、测试执行计划 ### 5.1 测试执行阶段 | 阶段 | 内容 | 时间 | 负责人 | |------|------|------|--------| | 第一阶段 | 单元测试补充与修复 | 2天 | 开发团队 | | 第二阶段 | 后端集成测试编写与执行 | 3天 | 测试团队 | | 第三阶段 | 前端E2E测试编写与执行 | 3天 | 测试团队 | | 第四阶段 | 端到端业务流程测试 | 2天 | 测试团队 | | 第五阶段 | 性能测试与安全测试 | 2天 | 测试团队 | | 第六阶段 | 测试报告编写与评审 | 1天 | 测试团队 | ### 5.2 测试执行命令 #### 后端测试执行 ```bash # 执行所有测试 mvn clean test # 执行指定模块测试 cd ether-ops && mvn test # 执行集成测试 mvn verify -Pintegration-test # 生成覆盖率报告 mvn jacoco:report # 查看覆盖率 open target/site/jacoco/index.html ``` #### 前端测试执行 ```bash # 执行单元测试 npm run test # 执行E2E测试 npm run test:e2e # 执行E2E测试(UI模式) npm run test:e2e:ui # 查看测试报告 npm run test:e2e:report ``` ### 5.3 持续集成配置 ```yaml # .github/workflows/integration-test.yml name: Integration Tests on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: backend-tests: runs-on: ubuntu-latest services: postgres: image: postgres:15 env: POSTGRES_DB: ether_test POSTGRES_USER: test POSTGRES_PASSWORD: test ports: - 5432:5432 rabbitmq: image: rabbitmq:3-management ports: - 5672:5672 - 15672:15672 steps: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Run Backend Tests run: mvn clean verify -Pintegration-test - name: Upload Coverage Report uses: codecov/codecov-action@v3 frontend-tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '20' - name: Install Dependencies run: cd ether-ui-admin && npm ci - name: Run E2E Tests run: cd ether-ui-admin && npm run test:e2e - name: Upload Test Results uses: actions/upload-artifact@v3 with: name: playwright-report path: ether-ui-admin/playwright-report/ ``` --- ## 六、测试报告模板 ### 6.1 测试报告结构 ```markdown # Ether 智慧物业管理平台 - 集成测试报告 ## 1. 测试概览 - 执行时间 - 测试环境 - 测试范围 - 测试结果汇总 ## 2. 测试执行详情 ### 2.1 后端测试结果 - 单元测试统计 - 集成测试统计 - 覆盖率报告 ### 2.2 前端测试结果 - 组件测试统计 - E2E测试统计 ## 3. 业务流程测试结果 - 工单管理流程 - 设备管理流程 - 巡检管理流程 - ... ## 4. 边界条件测试结果 - 数据边界测试 - 状态边界测试 - 输入边界测试 ## 5. 数据一致性测试结果 - 事务一致性 - 关联数据一致性 - 并发一致性 ## 6. 缺陷统计 - 缺陷列表 - 缺陷分布 - 缺陷趋势 ## 7. 风险与建议 - 测试风险 - 改进建议 ``` ### 6.2 测试指标统计 | 指标 | 计算方式 | 目标值 | |------|----------|--------| | 测试通过率 | 通过用例数/总用例数 * 100% | >= 95% | | 代码覆盖率 | 已覆盖代码行/总代码行 * 100% | >= 99% | | 缺陷密度 | 缺陷数/代码行数 * 1000 | <= 0.5 | | 缺陷修复率 | 已修复缺陷数/总缺陷数 * 100% | 100% | | 回归通过率 | 回归通过数/回归总数 * 100% | 100% | --- ## 七、风险管理 ### 7.1 测试风险识别 | 风险 | 影响 | 概率 | 应对措施 | |------|------|------|----------| | 测试环境不稳定 | 高 | 中 | 准备备用环境,使用容器化 | | 测试数据准备困难 | 中 | 中 | 编写数据准备脚本,使用数据工厂 | | 第三方服务不可用 | 高 | 低 | 使用Mock服务替代 | | 测试时间不足 | 高 | 中 | 优先测试核心功能,自动化测试 | | 测试覆盖率不足 | 高 | 低 | 持续监控覆盖率,补充测试用例 | ### 7.2 质量门禁 #### 代码提交门禁 - 单元测试通过率 >= 95% - 新代码覆盖率 >= 80% - 无严重代码质量问题 #### 合并请求门禁 - 所有测试用例通过 - 代码覆盖率 >= 99% - 代码审查通过 - 无未解决的缺陷 #### 发布门禁 - 集成测试全部通过 - E2E测试全部通过 - 性能测试达标 - 安全测试通过 - 无严重及以上缺陷 --- ## 八、附录 ### 8.1 测试工具清单 | 工具 | 版本 | 用途 | |------|------|------| | JUnit 5 | 5.10.x | Java单元测试 | | Spring Boot Test | 3.2.x | Spring集成测试 | | Testcontainers | 1.19.x | 容器化测试 | | MockMvc | - | API测试 | | Jacoco | 0.8.x | 代码覆盖率 | | Vitest | 4.0.x | Vue单元测试 | | Playwright | 1.58.x | E2E测试 | | Puppeteer | 24.x | 浏览器自动化 | ### 8.2 参考文档 - [Spring Boot Testing](https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing) - [Testcontainers Documentation](https://www.testcontainers.org/) - [Playwright Documentation](https://playwright.dev/) - [Ether项目测试用例](./测试用例/README.md) - [Ether项目需求文档](./01-需求文档/产品需求说明书.md) --- **文档维护**: 本文档随项目进展持续更新,每次测试执行后更新测试结果。 **版本历史**: | 版本 | 日期 | 修改内容 | 修改人 | |------|------|----------|--------| | v1.0 | 2026-02-14 | 初始版本 | 测试专家 |