docs: 添加E2E测试精简设计文档
This commit is contained in:
@@ -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 | 张翔 | 待审查 | 初始版本 |
|
||||
Reference in New Issue
Block a user