256 lines
6.3 KiB
Markdown
256 lines
6.3 KiB
Markdown
# 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 | 张翔 | 待审查 | 初始版本 |
|