From 4a3dd727945d2a72902ebc48d32be5fca1b14a56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Tue, 7 Apr 2026 21:34:51 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0E2E=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=B2=BE=E7=AE=80=E8=AE=BE=E8=AE=A1=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...26-04-07-e2e-test-simplification-design.md | 255 ++++++++++++++++++ 1 file changed, 255 insertions(+) create mode 100644 docs/superpowers/specs/2026-04-07-e2e-test-simplification-design.md diff --git a/docs/superpowers/specs/2026-04-07-e2e-test-simplification-design.md b/docs/superpowers/specs/2026-04-07-e2e-test-simplification-design.md new file mode 100644 index 0000000..2df54e9 --- /dev/null +++ b/docs/superpowers/specs/2026-04-07-e2e-test-simplification-design.md @@ -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 | 张翔 | 待审查 | 初始版本 |