ether-docs/_archive/06-TESTING/reports/INTEGRATION_TEST_PLAN.md

24 KiB
Raw Blame History

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依赖配置

<!-- 测试依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

<!-- H2内存数据库快速测试 -->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>test</scope>
</dependency>

<!-- Testcontainers真实数据库测试 -->
<dependency>
    <groupId>org.testcontainers</groupId>
    <artifactId>testcontainers</artifactId>
    <version>1.19.7</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.testcontainers</groupId>
    <artifactId>postgresql</artifactId>
    <version>1.19.7</version>
    <scope>test</scope>
</dependency>

<!-- 测试覆盖率 -->
<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.11</version>
</plugin>

测试配置文件 (application-test.yml)

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)

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 测试执行命令

后端测试执行

# 执行所有测试
mvn clean test

# 执行指定模块测试
cd ether-ops && mvn test

# 执行集成测试
mvn verify -Pintegration-test

# 生成覆盖率报告
mvn jacoco:report

# 查看覆盖率
open target/site/jacoco/index.html

前端测试执行

# 执行单元测试
npm run test

# 执行E2E测试
npm run test:e2e

# 执行E2E测试(UI模式)
npm run test:e2e:ui

# 查看测试报告
npm run test:e2e:report

5.3 持续集成配置

# .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 测试报告结构

# 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 参考文档


文档维护: 本文档随项目进展持续更新,每次测试执行后更新测试结果。

版本历史:

版本 日期 修改内容 修改人
v1.0 2026-02-14 初始版本 测试专家