622 lines
24 KiB
Markdown
622 lines
24 KiB
Markdown
# 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
|
||
<!-- 测试依赖 -->
|
||
<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)
|
||
|
||
```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. 创建工单<br>2. 分配工单<br>3. 接受工单<br>4. 开始处理<br>5. 完成工单<br>6. 验收通过<br>7. 关闭工单 | 每个状态转换正确,流程记录完整 |
|
||
| TC-INT-WORK-002 | 工单转派流程 | 1. 创建并分配工单<br>2. 转派给其他人员<br>3. 新人员接受处理 | 转派记录正确,通知发送正确 |
|
||
| TC-INT-WORK-003 | 工单挂起恢复流程 | 1. 创建并开始处理工单<br>2. 挂起工单<br>3. 恢复工单<br>4. 继续处理 | 挂起时间记录正确,状态转换正确 |
|
||
| TC-INT-WORK-004 | 工单退回重新分配流程 | 1. 创建并分配工单<br>2. 处理人退回<br>3. 重新分配<br>4. 新人处理 | 退回原因记录正确,重新分配成功 |
|
||
| TC-INT-WORK-005 | 工单验收不通过流程 | 1. 完成工单<br>2. 验收不通过<br>3. 重新处理<br>4. 再次验收 | 状态回退正确,处理记录完整 |
|
||
|
||
#### 4.1.2 设备管理关联流程测试
|
||
|
||
| 用例ID | 测试场景 | 测试步骤 | 期望结果 |
|
||
|--------|----------|----------|----------|
|
||
| TC-INT-ASSET-001 | 设备报修到维修完成流程 | 1. 扫描设备二维码<br>2. 创建报修工单<br>3. 处理工单<br>4. 更新设备状态 | 工单与设备关联正确,设备状态更新 |
|
||
| TC-INT-ASSET-002 | 设备维修历史查询 | 1. 创建多个设备工单<br>2. 完成处理<br>3. 查询设备维修历史 | 维修历史完整,统计准确 |
|
||
|
||
#### 4.1.3 巡检管理流程测试
|
||
|
||
| 用例ID | 测试场景 | 测试步骤 | 期望结果 |
|
||
|--------|----------|----------|----------|
|
||
| TC-INT-INSP-001 | 巡检计划执行流程 | 1. 创建巡检计划<br>2. 生成巡检任务<br>3. 执行巡检<br>4. 上报异常<br>5. 创建整改工单 | 任务生成正确,异常上报成功 |
|
||
| TC-INT-INSP-002 | 巡检异常转工单流程 | 1. 巡检发现异常<br>2. 自动创建工单<br>3. 处理工单<br>4. 关联巡检记录 | 工单自动创建,关联关系正确 |
|
||
|
||
#### 4.1.4 投诉建议处理流程测试
|
||
|
||
| 用例ID | 测试场景 | 测试步骤 | 期望结果 |
|
||
|--------|----------|----------|----------|
|
||
| TC-INT-COMP-001 | 投诉处理完整流程 | 1. 提交投诉<br>2. 指派处理人<br>3. 处理投诉<br>4. 回复处理结果<br>5. 用户评价 | 流程完整,评价记录正确 |
|
||
| TC-INT-COMP-002 | 投诉升级处理流程 | 1. 提交投诉<br>2. 超时未处理<br>3. 自动升级<br>4. 上级处理 | 升级机制正确,通知发送 |
|
||
|
||
#### 4.1.5 满意度调查流程测试
|
||
|
||
| 用例ID | 测试场景 | 测试步骤 | 期望结果 |
|
||
|--------|----------|----------|----------|
|
||
| TC-INT-SAT-001 | 满意度调查创建到统计流程 | 1. 创建满意度调查<br>2. 发送调查邀请<br>3. 用户填写<br>4. 统计分析 | 调查数据完整,统计准确 |
|
||
| TC-INT-SAT-002 | 工单满意度评价流程 | 1. 完成工单<br>2. 发送评价邀请<br>3. 用户评价<br>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. 创建工单<br>2. 触发异常<br>3. 验证数据回滚 | 工单和流程记录全部回滚 |
|
||
| TC-TRANS-002 | 批量操作事务一致性 | 1. 批量创建工单<br>2. 部分失败<br>3. 验证全部回滚 | 要么全部成功,要么全部回滚 |
|
||
| TC-TRANS-003 | 跨服务事务一致性 | 1. 创建工单并发送通知<br>2. 通知发送失败<br>3. 验证补偿机制 | 最终数据一致 |
|
||
|
||
#### 4.3.2 关联数据一致性测试
|
||
|
||
| 用例ID | 测试场景 | 测试步骤 | 期望结果 |
|
||
|--------|----------|----------|----------|
|
||
| TC-REL-001 | 用户删除关联数据处理 | 1. 用户有工单记录<br>2. 尝试删除用户<br>3. 验证处理结果 | 正确处理关联数据 |
|
||
| TC-REL-002 | 项目删除级联处理 | 1. 项目有工单、设备、巡检记录<br>2. 尝试删除项目<br>3. 验证级联处理 | 正确处理级联删除或拒绝 |
|
||
| TC-REL-003 | 设备状态与工单状态同步 | 1. 创建设备维修工单<br>2. 处理工单<br>3. 验证设备状态 | 设备状态正确同步 |
|
||
|
||
#### 4.3.3 并发一致性测试
|
||
|
||
| 用例ID | 测试场景 | 测试步骤 | 期望结果 |
|
||
|--------|----------|----------|----------|
|
||
| TC-CONC-001 | 工单并发分配 | 多个管理员同时分配同一工单 | 只有一个分配成功 |
|
||
| TC-CONC-002 | 库存并发扣减 | 多个操作同时扣减设备备件库存 | 库存扣减正确,不超扣 |
|
||
| TC-CONC-003 | 统计数据并发更新 | 多个工单同时完成,更新统计数据 | 统计数据准确 |
|
||
|
||
#### 4.3.4 缓存一致性测试
|
||
|
||
| 用例ID | 测试场景 | 测试步骤 | 期望结果 |
|
||
|--------|----------|----------|----------|
|
||
| TC-CACHE-001 | 权限缓存更新 | 1. 修改用户权限<br>2. 验证缓存更新 | 权限缓存正确更新 |
|
||
| TC-CACHE-002 | 项目信息缓存同步 | 1. 修改项目信息<br>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 | 初始版本 | 测试专家 |
|