# E2E测试精简设计文档

**版本：** 1.0  
**日期：** 2026-04-07  
**作者：** 张翔  
**状态：** 待审查

---

## 1. 背景与目标

### 1.1 当前问题

当前E2E测试套件存在以下问题：

- **测试文件过多**：38个测试文件，维护成本高
- **运行时间长**：预计完整运行需要20分钟
- **测试稳定性差**：存在flaky测试，影响CI/CD效率
- **测试重复**：多个测试文件覆盖相同功能

### 1.2 优化目标

- 减少测试文件数量至5个（减少87%）
- 缩短测试运行时间至5分钟以内（减少75%）
- 提升测试稳定性和可维护性
- 保留关键业务流程验证

---

## 2. 测试架构设计

### 2.1 分层测试策略

采用分层测试策略，将E2E测试分为两层：

| 层级 | 测试类型 | 文件数 | 运行时间 | 覆盖范围 |
|------|---------|--------|---------|---------|
| L1 | 冒烟测试 | 1 | ~30秒 | 登录/登出基础流程 |
| L2 | 核心旅程 | 4 | ~4分钟 | 关键业务端到端流程 |

### 2.2 目录结构

```
e2e/
├── journeys/                              # 核心用户旅程（保留）
│   ├── admin-complete-workflow.spec.ts   # 管理员完整工作流
│   ├── user-permission-boundary.spec.ts  # 用户权限边界验证
│   ├── file-management-workflow.spec.ts  # 文件上传下载流程
│   └── audit-workflow.spec.ts            # 审计日志查看流程
├── smoke/                                 # 冒烟测试（新增）
│   └── login-logout.spec.ts              # 登录登出基础流程
├── fixtures/                              # 测试数据（保留）
├── helpers/                               # 测试辅助工具（保留）
├── pages/                                 # Page Object（保留）
└── utils/                                 # 工具函数（保留）
```

---

## 3. 核心测试用例设计

### 3.1 冒烟测试（smoke/login-logout.spec.ts）

**测试目标：** 验证基础登录登出流程

**测试用例：**
- 管理员登录和登出

**预期运行时间：** ~30秒

### 3.2 核心旅程测试

#### 3.2.1 管理员完整工作流（admin-complete-workflow.spec.ts）

**测试目标：** 验证管理员的核心操作流程

**测试用例：**
- 创建角色并分配权限
- 创建用户并分配角色
- 编辑用户信息
- 删除用户
- 删除角色

**预期运行时间：** ~2分钟

#### 3.2.2 用户权限边界验证（user-permission-boundary.spec.ts）

**测试目标：** 验证权限控制是否正确

**测试用例：**
- 普通用户不能访问用户管理页面
- 普通用户不能访问角色管理页面
- 管理员可以访问所有页面

**预期运行时间：** ~1分钟

#### 3.2.3 文件管理流程（file-management-workflow.spec.ts）

**测试目标：** 验证文件上传下载流程

**测试用例：**
- 上传文件
- 下载文件
- 删除文件

**预期运行时间：** ~1分钟

#### 3.2.4 审计日志流程（audit-workflow.spec.ts）

**测试目标：** 验证审计日志查看功能

**测试用例：**
- 查看操作日志
- 查看登录日志
- 查看异常日志

**预期运行时间：** ~30秒

---

## 4. 实施计划

### 4.1 实施步骤

1. **创建新目录结构**
   - 创建 `e2e/smoke/` 目录

2. **创建冒烟测试**
   - 新建 `e2e/smoke/login-logout.spec.ts`

3. **删除非核心测试文件**
   - 删除34个非核心测试文件
   - 只保留 `journeys/` 目录下的4个核心测试文件

### 4.2 测试配置更新

**package.json 脚本更新：**

```json
{
  "scripts": {
    "test:e2e:smoke": "playwright test smoke/",
    "test:e2e:journeys": "playwright test journeys/",
    "test:e2e": "playwright test"
  }
}
```

### 4.3 CI/CD集成

- **PR验证**：运行 `npm run test:e2e`（~5分钟）
- **发布前验证**：运行所有测试

---

## 5. 预期收益

| 指标 | 优化前 | 优化后 | 改善幅度 |
|------|--------|--------|---------|
| 测试文件数量 | 38个 | 5个 | ↓ 87% |
| 预计运行时间 | ~20分钟 | ~5分钟 | ↓ 75% |
| 维护成本 | 高 | 低 | ↓ 80% |
| 测试稳定性 | 中 | 高 | ↑ 显著提升 |

---

## 6. 风险控制

### 6.1 功能覆盖风险

**风险：** 删除测试后功能覆盖下降

**缓解措施：**
- 通过单元测试和集成测试补充覆盖率
- 单元测试覆盖率目标：80%

### 6.2 回归测试风险

**风险：** 可能遗漏部分边界情况

**缓解措施：**
- 核心旅程测试覆盖关键路径
- 定期人工回归测试

### 6.3 团队适应风险

**风险：** 团队需要适应新的测试策略

**缓解措施：**
- 更新测试文档
- 培训团队成员

---

## 7. 后续优化建议

1. **补充单元测试**
   - 为核心业务逻辑补充单元测试
   - 覆盖率目标：80%

2. **补充集成测试**
   - 为API接口补充集成测试
   - 覆盖所有REST API端点

3. **持续优化**
   - 定期评估测试效果
   - 持续优化测试用例

---

## 8. 待删除测试文件清单

以下34个测试文件将被删除：

1. auth.spec.ts
2. basic.spec.ts
3. complete-workflow.spec.ts
4. comprehensive-e2e.spec.ts
5. critical-e2e.spec.ts
6. dashboard-operation-log.spec.ts
7. dictionary-management.spec.ts
8. edge-cases.spec.ts
9. exception-log.spec.ts
10. file-management.spec.ts
11. form-test.spec.ts
12. login-log.spec.ts
13. menu-management.spec.ts
14. notification.spec.ts
15. operation-log.spec.ts
16. permission-validation.spec.ts
17. role-management.spec.ts
18. security-e2e.spec.ts
19. system-config.spec.ts
20. system-integration-test.spec.ts
21. test-config-api.spec.ts
22. test-stability.spec.ts
23. uat-file-workflow.spec.ts
24. uat-permission-workflow.spec.ts
25. uat-user-lifecycle.spec.ts
26. user-lifecycle.spec.ts
27. user-management.spec.ts
28. role-based-tests/scenarios/authentication/login-flow.spec.ts
29. role-based-tests/scenarios/authentication/logout-flow.spec.ts
30. role-based-tests/scenarios/user-management/admin-creates-user.spec.ts
31. role-based-tests/scenarios/user-management/permission-boundary.spec.ts
32. journeys/system-config-workflow.spec.ts
33. journeys/permission-boundary.spec.ts（与user-permission-boundary.spec.ts重复）

---

## 9. 审查记录

| 日期 | 审查人 | 状态 | 备注 |
|------|--------|------|------|
| 2026-04-07 | 张翔 | 待审查 | 初始版本 |
