docs: 添加E2E测试精简设计文档

This commit is contained in:
张翔
2026-04-07 21:34:51 +08:00
parent b01cbe3a3b
commit 4a3dd72794
@@ -0,0 +1,255 @@
# 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 | 张翔 | 待审查 | 初始版本 |