# E2E测试执行规范

## 1. 概述

### 1.1 目标
执行Ether智慧物业管理平台全部E2E测试用例，记录问题、解决方案和复测结果。

### 1.2 范围
- 管理端Web测试
- API接口测试
- 边界条件测试
- 并发操作测试
- 业务规则测试
- 权限边界测试

### 1.3 环境
- 后端服务: Gateway(8080), Auth(8081), MDM(8082), OPS(8083), Finance(8085)
- 前端服务: http://localhost:5175
- 数据库: PostgreSQL (ether_mdm, ether_auth, ether_ops, ether_finance)
- 测试框架: Playwright

---

## 2. 测试执行流程

### 2.1 前置条件检查

| 检查项 | 命令 | 预期结果 |
|--------|------|----------|
| PostgreSQL运行 | `pg_isready -h localhost` | accepting connections |
| RabbitMQ运行 | `curl localhost:15672/api/overview` | 200 OK |
| Nacos运行 | `curl localhost:8848/nacos/v1/console/health/readiness` | UP |
| 后端服务运行 | `curl localhost:8080/actuator/health` | {"status":"UP"} |
| 前端服务运行 | `curl localhost:5175` | 200 OK |

### 2.2 测试数据准备

```sql
-- 执行测试数据准备脚本
\i docs/08-DATABASE/e2e-test-data.sql
```

### 2.3 测试执行顺序

1. **第一阶段**: 基础功能测试（登录、用户、角色、项目）
2. **第二阶段**: 业务模块测试（工单、空间节点、业主、设备）
3. **第三阶段**: 边界条件测试（输入验证、SQL注入）
4. **第四阶段**: 并发操作测试（多人同时操作）
5. **第五阶段**: 业务规则测试（状态流转、权限控制）
6. **第六阶段**: 权限边界测试（菜单、按钮、API权限）

---

## 3. 问题记录模板

### 3.1 问题记录格式

```markdown
## 问题 #N: [问题标题]

### 基本信息
- **发现时间**: YYYY-MM-DD HH:mm:ss
- **测试用例**: TC-XXX-XXX
- **测试文件**: tests/xxx.spec.ts
- **严重程度**: P0(阻塞)/P1(严重)/P2(一般)/P3(轻微)

### 问题描述
[详细描述问题现象]

### 问题原因
[分析问题根本原因]

### 影响范围
- [ ] 单一模块
- [ ] 多个模块
- [ ] 全系统

### 解决方案
[详细描述解决方案]

### 修复文件
- [文件路径1]: [修改内容]
- [文件路径2]: [修改内容]

### 复测结果
- **复测时间**: YYYY-MM-DD HH:mm:ss
- **复测状态**: ✅ 通过 / ❌ 失败
- **复测说明**: [说明]

### 同类问题检查
- [ ] 已检查其他模块是否存在类似问题
- [ ] 已更新相关测试用例
- [ ] 已添加预防措施
```

---

## 4. 测试用例清单

### 4.1 基础功能测试 (49个)

| 编号 | 测试用例 | 文件 | 优先级 |
|------|----------|------|--------|
| TC-001 | 登录页面正确显示 | e2e/login.spec.ts | P0 |
| TC-002 | 超级管理员登录成功 | e2e/login.spec.ts | P0 |
| TC-003 | 错误密码登录失败 | e2e/login.spec.ts | P0 |
| TC-004~010 | API健康检查 | e2e/login.spec.ts | P0 |
| TC-USER-001~023 | 用户管理测试 | tests/user.spec.ts | P1 |
| TC-ROLE-001~014 | 角色管理测试 | tests/role.spec.ts | P1 |
| TC-PROJ-001~023 | 项目管理测试 | tests/project.spec.ts | P1 |

### 4.2 业务模块测试 (40个)

| 编号 | 测试用例 | 文件 | 优先级 |
|------|----------|------|--------|
| TC-ADMIN-WORK-001~010 | 工单管理测试 | e2e/work-order.spec.ts | P1 |
| TC-MDM-SPACE-001~010 | 空间节点测试 | tests/mdm/space-node.spec.ts | P1 |
| TC-MDM-OWNER-001~005 | 业主管理测试 | tests/mdm/space-node.spec.ts | P1 |
| TC-MDM-CONTRACT-001~005 | 合同管理测试 | tests/mdm/space-node.spec.ts | P1 |
| TC-MDM-VISITOR-001~005 | 访客管理测试 | tests/mdm/space-node.spec.ts | P1 |
| TC-OPS-INSP-001~006 | 巡检管理测试 | tests/ops/inspection.spec.ts | P1 |
| TC-OPS-ANN-001~004 | 公告管理测试 | tests/ops/inspection.spec.ts | P1 |
| TC-OPS-COMP-001~005 | 投诉建议测试 | tests/ops/inspection.spec.ts | P1 |

### 4.3 边界条件测试 (15个)

| 编号 | 测试用例 | 文件 | 优先级 |
|------|----------|------|--------|
| TC-BOUND-U001~U010 | 用户管理边界测试 | tests/boundary/input-boundary.spec.ts | P1 |
| TC-BOUND-W001~W004 | 工单管理边界测试 | tests/boundary/input-boundary.spec.ts | P1 |
| TC-BOUND-F001~F003 | 财务计费边界测试 | tests/boundary/input-boundary.spec.ts | P1 |
| TC-BOUND-G001~G002 | 通用边界测试 | tests/boundary/input-boundary.spec.ts | P0 |

### 4.4 并发操作测试 (7个)

| 编号 | 测试用例 | 文件 | 优先级 |
|------|----------|------|--------|
| TC-CONC-001 | 多人同时接单测试 | tests/concurrency/concurrency.spec.ts | P1 |
| TC-CONC-002 | 并发创建工单测试 | tests/concurrency/concurrency.spec.ts | P1 |
| TC-CONC-003 | 并发修改同一工单测试 | tests/concurrency/concurrency.spec.ts | P1 |
| TC-CONC-004 | 并发登录同一账号测试 | tests/concurrency/concurrency.spec.ts | P1 |
| TC-CONC-005 | 并发创建用户测试 | tests/concurrency/concurrency.spec.ts | P1 |
| TC-CONC-006 | 并发创建空间节点测试 | tests/concurrency/concurrency.spec.ts | P1 |
| TC-CONC-007 | 并发创建收费项目测试 | tests/concurrency/concurrency.spec.ts | P1 |

### 4.5 业务规则测试 (10个)

| 编号 | 测试用例 | 文件 | 优先级 |
|------|----------|------|--------|
| TC-RULE-W001~W002 | 工单状态规则测试 | tests/business-rules/business-rules.spec.ts | P1 |
| TC-RULE-U001~U003 | 用户规则测试 | tests/business-rules/business-rules.spec.ts | P1 |
| TC-RULE-F001~F003 | 财务规则测试 | tests/business-rules/business-rules.spec.ts | P1 |
| TC-RULE-S001 | 空间节点规则测试 | tests/business-rules/business-rules.spec.ts | P1 |
| TC-RULE-E001 | 设备规则测试 | tests/business-rules/business-rules.spec.ts | P1 |

### 4.6 权限边界测试 (27个)

| 编号 | 测试用例 | 文件 | 优先级 |
|------|----------|------|--------|
| TC-PERM-001~002 | 菜单权限测试 | tests/permission/permission-boundary.spec.ts | P1 |
| TC-PERM-003~005 | 按钮权限测试 | tests/permission/permission-boundary.spec.ts | P1 |
| TC-PERM-006~008 | API权限测试 | tests/permission/permission-boundary.spec.ts | P1 |
| TC-PERM-009~011 | 数据权限测试 | tests/permission/permission-boundary.spec.ts | P1 |
| TC-PERM-012~013 | 角色权限测试 | tests/permission/permission-boundary.spec.ts | P1 |
| TC-PERM-014~015 | Token权限测试 | tests/permission/permission-boundary.spec.ts | P0 |

---

## 5. 验收标准

### 5.1 测试通过标准

| 指标 | 目标值 | 说明 |
|------|--------|------|
| 测试通过率 | ≥ 95% | 通过用例数/总用例数 |
| P0用例通过率 | 100% | 阻塞问题必须全部解决 |
| P1用例通过率 | ≥ 95% | 严重问题允许少量延期 |
| 无跳过用例 | 100% | 所有用例必须执行 |

### 5.2 问题分级标准

| 级别 | 定义 | 处理时限 |
|------|------|----------|
| P0 | 阻塞测试执行，系统无法运行 | 立即修复 |
| P1 | 核心功能异常，影响业务流程 | 24小时内 |
| P2 | 一般功能异常，有替代方案 | 3天内 |
| P3 | 轻微问题，不影响使用 | 下版本 |

---

## 6. 风险与应对

### 6.1 已知风险

| 风险 | 影响 | 应对措施 |
|------|------|----------|
| 服务启动超时 | 测试无法执行 | 增加等待时间，检查日志 |
| 测试数据冲突 | 测试结果不准确 | 使用唯一标识，清理数据 |
| 并发测试不稳定 | 结果不可预测 | 多次运行取稳定结果 |

### 6.2 回归测试触发条件

- 修复任何P0/P1问题后
- 修改API接口后
- 修改权限配置后
- 修改数据库结构后

---

## 7. 输出物

### 7.1 测试报告

- 测试执行报告 (test-report.md)
- 问题清单 (issues.md)
- 测试覆盖率报告 (coverage-report.md)

### 7.2 修复记录

- 代码修改记录
- 配置修改记录
- 数据修改记录
