|
|
@@ -0,0 +1,362 @@
|
|
|
+# Story 10.12: 运行测试并收集问题和改进建议
|
|
|
+
|
|
|
+Status: ready-for-dev
|
|
|
+
|
|
|
+<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
|
|
|
+
|
|
|
+## Story
|
|
|
+
|
|
|
+作为测试开发者,
|
|
|
+我想要运行订单管理测试并收集反馈,
|
|
|
+以便发现潜在问题并改进测试或工具。
|
|
|
+
|
|
|
+## Acceptance Criteria
|
|
|
+
|
|
|
+**Given** 所有订单管理测试用例已编写
|
|
|
+**When** 运行完整的订单管理 E2E 测试套件
|
|
|
+**Then** 记录所有问题(失败的测试、错误消息、使用体验)
|
|
|
+**Then** 分类问题:业务逻辑 bug vs 测试代码问题 vs 工具不足
|
|
|
+**And** 整理成问题清单
|
|
|
+**And** 识别是否需要扩展 e2e-test-utils 工具包
|
|
|
+
|
|
|
+**关注点:**
|
|
|
+- 现有 Select 工具是否满足多选择器表单需求?
|
|
|
+- 是否需要复杂表单提交专用工具?
|
|
|
+- 是否需要状态流转测试工具?
|
|
|
+- 是否需要资产附件操作工具?
|
|
|
+- 错误消息是否清晰?
|
|
|
+
|
|
|
+## Tasks / Subtasks
|
|
|
+
|
|
|
+- [ ] 运行完整订单管理测试套件 (AC: Given, When)
|
|
|
+ - [ ] 确认所有测试文件存在(order-*.spec.ts)
|
|
|
+ - [ ] 使用 `pnpm test:e2e:chromium order-` 运行所有订单测试
|
|
|
+ - [ ] 记录测试执行时间和通过率
|
|
|
+- [ ] 收集测试执行结果 (AC: Then #1)
|
|
|
+ - [ ] 记录所有失败的测试
|
|
|
+ - [ ] 记录错误消息和堆栈信息
|
|
|
+ - [ ] 记录测试执行过程中的性能问题
|
|
|
+ - [ ] 记录使用体验问题(如:等待时间、定位困难等)
|
|
|
+- [ ] 分类和分析问题 (AC: Then #2, #3)
|
|
|
+ - [ ] 区分业务逻辑 bug vs 测试代码问题 vs 工具不足
|
|
|
+ - [ ] 识别常见问题模式
|
|
|
+ - [ ] 评估每个问题的严重程度(CRITICAL/HIGH/MEDIUM/LOW)
|
|
|
+- [ ] 生成问题清单报告 (AC: And #1)
|
|
|
+ - [ ] 整理成结构化的问题清单
|
|
|
+ - [ ] 为每个问题提供复现步骤
|
|
|
+ - [ ] 为每个问题提供修复建议
|
|
|
+- [ ] 评估工具扩展需求 (AC: And #2)
|
|
|
+ - [ ] 分析 Select 工具是否满足多选择器表单需求
|
|
|
+ - [ ] 评估是否需要复杂表单提交专用工具
|
|
|
+ - [ ] 评估是否需要状态流转测试工具
|
|
|
+ - [ ] 评估是否需要资产附件操作工具
|
|
|
+ - [ ] 检查错误消息是否清晰
|
|
|
+ - [ ] 生成工具扩展建议清单
|
|
|
+- [ ] 更新 Story 文档记录发现
|
|
|
+ - [ ] 将问题清单添加到 Dev Notes
|
|
|
+ - [ ] 将工具扩展建议添加到 Dev Notes
|
|
|
+ - [ ] 为 Story 10.13 提供决策依据(是否需要扩展工具包)
|
|
|
+
|
|
|
+## Dev Notes
|
|
|
+
|
|
|
+### Epic Context
|
|
|
+
|
|
|
+**Epic 10: 订单管理 E2E 测试 (Epic C - 业务测试 Epic)**
|
|
|
+
|
|
|
+- **目标**: 测试开发者可以为订单管理功能编写完整的 E2E 测试,验证订单的 CRUD、状态流转、人员关联和附件管理功能
|
|
|
+- **业务分组**: Epic C(业务测试 Epic)
|
|
|
+- **背景**: 订单管理是招聘系统的核心业务功能,涉及复杂表单(多选择器联动)、状态流转、人员关联等场景
|
|
|
+- **模式**: 业务测试为主,工具包支持为辅(遵循 Epic A 成功模式)
|
|
|
+
|
|
|
+**当前 Epic 10 状态:**
|
|
|
+- Story 10.1: ✅ 创建订单管理 Page Object
|
|
|
+- Story 10.2: ✅ 编写订单列表查看测试
|
|
|
+- Story 10.3: ✅ 编写订单搜索和筛选测试
|
|
|
+- Story 10.4: ✅ 编写创建订单测试
|
|
|
+- Story 10.5: ✅ 编写编辑订单测试
|
|
|
+- Story 10.6: ✅ 编写删除订单测试
|
|
|
+- Story 10.7: ✅ 编写订单状态流转测试
|
|
|
+- Story 10.8: ✅ 编写订单详情查看测试
|
|
|
+- Story 10.9: ✅ 编写人员关联功能测试
|
|
|
+- Story 10.10: ✅ 编写附件管理测试
|
|
|
+- Story 10.11: ✅ 编写订单完整流程测试
|
|
|
+- Story 10.12: 🔄 当前 Story - 运行测试并收集问题
|
|
|
+- Story 10.13: ⏳ 扩展工具包(如需要)
|
|
|
+- Story 10.14: ⏳ 订单管理稳定性验证
|
|
|
+
|
|
|
+### 前序 Story 关键发现总结
|
|
|
+
|
|
|
+**从 Story 10.1-10.11 学到的经验:**
|
|
|
+
|
|
|
+1. **Page Object 设计模式 (10.1)**:
|
|
|
+ - `orderManagementPage` 提供完整的订单管理操作方法
|
|
|
+ - 使用 `createOrder()` 创建订单
|
|
|
+ - 使用 `openDetailDialog()` 查看订单详情
|
|
|
+ - 使用 `closeDetailDialog()` 关闭订单详情对话框
|
|
|
+
|
|
|
+2. **创建订单测试 (10.4)**:
|
|
|
+ - 必填字段:订单名称、预计开始日期
|
|
|
+ - 可选字段:平台、公司、渠道
|
|
|
+ - 使用时间戳确保订单名称唯一性
|
|
|
+
|
|
|
+3. **编辑订单测试 (10.5)**:
|
|
|
+ - 使用 `editOrder()` 方法编辑订单
|
|
|
+ - 可以修改订单基本信息和关联信息
|
|
|
+ - 编辑后验证列表更新
|
|
|
+
|
|
|
+4. **状态流转测试 (10.7)**:
|
|
|
+ - 使用 `activateOrder()` 激活订单(草稿 → 已确认)
|
|
|
+ - 使用 `closeOrder()` 关闭订单(已确认 → 已完成)
|
|
|
+ - 注意:激活后状态是"已确认"而非"进行中"
|
|
|
+
|
|
|
+5. **人员关联测试 (10.9)**:
|
|
|
+ - 使用 API 创建残疾人数据:`createDisabledPersonViaAPI()`
|
|
|
+ - 使用 `addPersonToOrder()` 添加人员到订单
|
|
|
+ - 设置入职日期和薪资
|
|
|
+
|
|
|
+6. **附件管理测试 (10.10)**:
|
|
|
+ - 使用 `openAddAttachmentDialog()` 打开附件上传对话框
|
|
|
+ - 使用 `uploadAttachment()` 上传附件
|
|
|
+ - 使用 fixtures 文件进行测试
|
|
|
+
|
|
|
+7. **完整流程测试 (10.11)**:
|
|
|
+ - FileSelector 对话框已调试完成
|
|
|
+ - 附件上传功能已验证
|
|
|
+ - 2 个测试全部通过
|
|
|
+
|
|
|
+**已知问题和修复:**
|
|
|
+
|
|
|
+1. **Page Object Bug 修复**:
|
|
|
+ - 修复 `getPersonListFromDetail()` 方法
|
|
|
+ - 修复 `closeUploadDialog()` 方法
|
|
|
+ - 修复 `getOrderStatus()` 方法中的 `statusValue is not defined` 错误
|
|
|
+ - 修复 `confirmActivate()` 方法中的 `networkidle` 超时问题
|
|
|
+
|
|
|
+2. **代码审查问题修复**:
|
|
|
+ - HIGH: 附件上传被跳过 - ✅ 已修复
|
|
|
+ - HIGH: 人员姓名参数未使用 - ✅ 已修复
|
|
|
+ - HIGH: 编辑流程未修改订单信息 - ✅ 已修复
|
|
|
+ - MEDIUM: 日期硬编码 2025 年 - ✅ 已修复
|
|
|
+ - MEDIUM: 平台和公司选择器使用 .first() - ✅ 已修复
|
|
|
+
|
|
|
+### 测试文件清单
|
|
|
+
|
|
|
+**现有订单管理测试文件:**
|
|
|
+```
|
|
|
+web/tests/e2e/specs/admin/
|
|
|
+├── order-list.spec.ts # 订单列表查看测试
|
|
|
+├── order-filter.spec.ts # 订单搜索和筛选测试
|
|
|
+├── order-create.spec.ts # 创建订单测试
|
|
|
+├── order-edit.spec.ts # 编辑订单测试
|
|
|
+├── order-delete.spec.ts # 删除订单测试
|
|
|
+├── order-status.spec.ts # 订单状态流转测试
|
|
|
+├── order-detail.spec.ts # 订单详情查看测试
|
|
|
+├── order-person.spec.ts # 人员关联功能测试
|
|
|
+├── order-attachment.spec.ts # 附件管理测试
|
|
|
+├── order-complete.spec.ts # 订单完整流程测试
|
|
|
+└── order-config-validation.spec.ts # 配置数据验证测试(Story 11.9)
|
|
|
+```
|
|
|
+
|
|
|
+**Page Object 文件:**
|
|
|
+```
|
|
|
+web/tests/e2e/pages/admin/
|
|
|
+└── order-management.page.ts # 订单管理 Page Object
|
|
|
+```
|
|
|
+
|
|
|
+### 运行测试命令
|
|
|
+
|
|
|
+**运行所有订单管理测试:**
|
|
|
+```bash
|
|
|
+cd web && pnpm test:e2e:chromium order-
|
|
|
+```
|
|
|
+
|
|
|
+**运行单个测试文件:**
|
|
|
+```bash
|
|
|
+cd web && pnpm test:e2e:chromium order-complete
|
|
|
+```
|
|
|
+
|
|
|
+**快速失败模式(调试用):**
|
|
|
+```bash
|
|
|
+# 60秒后中断
|
|
|
+timeout 60 pnpm test:e2e:chromium order-
|
|
|
+```
|
|
|
+
|
|
|
+### 问题分类框架
|
|
|
+
|
|
|
+**分类维度:**
|
|
|
+
|
|
|
+1. **业务逻辑 Bug (Product Bug)**
|
|
|
+ - 订单创建失败
|
|
|
+ - 状态流转不正确
|
|
|
+ - 人员关联失败
|
|
|
+ - 附件上传失败
|
|
|
+ - 数据验证错误
|
|
|
+
|
|
|
+2. **测试代码问题 (Test Code Issue)**
|
|
|
+ - 选择器定位失败
|
|
|
+ - 等待时间不足
|
|
|
+ - 测试数据准备问题
|
|
|
+ - 断言错误
|
|
|
+ - 测试隔离问题
|
|
|
+
|
|
|
+3. **工具不足 (Tool Limitation)**
|
|
|
+ - Select 工具不支持多选择器联动
|
|
|
+ - 缺少复杂表单提交工具
|
|
|
+ - 缺少状态流转测试工具
|
|
|
+ - 缺少附件操作工具
|
|
|
+ - 错误消息不清晰
|
|
|
+
|
|
|
+4. **性能问题 (Performance Issue)**
|
|
|
+ - 测试执行时间过长
|
|
|
+ - 网络请求超时
|
|
|
+ - 页面加载缓慢
|
|
|
+ - 动画等待时间过长
|
|
|
+
|
|
|
+5. **稳定性问题 (Stability Issue)**
|
|
|
+ - Flaky 测试(偶发性失败)
|
|
|
+ - 并行执行冲突
|
|
|
+ - 数据清理不彻底
|
|
|
+ - 时间相关问题
|
|
|
+
|
|
|
+### 工具扩展评估清单
|
|
|
+
|
|
|
+**Select 工具评估:**
|
|
|
+- [ ] 是否能正确处理平台、公司、渠道三个级联选择器?
|
|
|
+- [ ] 异步加载选项时等待时间是否足够?
|
|
|
+- [ ] 错误提示是否清晰?
|
|
|
+
|
|
|
+**表单工具评估:**
|
|
|
+- [ ] 创建/编辑订单表单填写是否流畅?
|
|
|
+- [ ] 是否需要 `fillComplexForm()` 工具?
|
|
|
+- [ ] 多步骤表单操作是否需要封装?
|
|
|
+
|
|
|
+**状态流转工具评估:**
|
|
|
+- [ ] 激活/关闭订单操作是否需要专用工具?
|
|
|
+- [ ] 是否需要 `transitionOrderStatus()` 工具?
|
|
|
+- [ ] 状态验证是否方便?
|
|
|
+
|
|
|
+**附件工具评估:**
|
|
|
+- [ ] FileSelector 对话框操作是否稳定?
|
|
|
+- [ ] 是否需要 `attachAssetToOrder()` 工具?
|
|
|
+- [ ] fixtures 文件管理是否方便?
|
|
|
+
|
|
|
+**错误消息评估:**
|
|
|
+- [ ] 测试失败时错误消息是否清晰?
|
|
|
+- [ ] 是否能快速定位问题原因?
|
|
|
+- [ ] 是否需要改进错误提示?
|
|
|
+
|
|
|
+### 问题报告模板
|
|
|
+
|
|
|
+**为每个发现的问题使用以下模板:**
|
|
|
+
|
|
|
+```markdown
|
|
|
+### 问题编号: ST10-12-001
|
|
|
+
|
|
|
+**严重程度**: CRITICAL | HIGH | MEDIUM | LOW
|
|
|
+
|
|
|
+**分类**: 业务逻辑 Bug | 测试代码问题 | 工具不足 | 性能问题 | 稳定性问题
|
|
|
+
|
|
|
+**标题**: 简短的问题描述
|
|
|
+
|
|
|
+**复现步骤**:
|
|
|
+1. 步骤 1
|
|
|
+2. 步骤 2
|
|
|
+3. 步骤 3
|
|
|
+
|
|
|
+**预期结果**: 描述期望的结果
|
|
|
+
|
|
|
+**实际结果**: 描述实际发生的结果
|
|
|
+
|
|
|
+**错误信息**: ```
|
|
|
+错误消息或堆栈信息
|
|
|
+```
|
|
|
+
|
|
|
+**影响范围**: 哪些测试受影响
|
|
|
+
|
|
|
+**修复建议**: 提供修复方案建议
|
|
|
+
|
|
|
+**相关文件**: 涉及的文件路径
|
|
|
+```
|
|
|
+
|
|
|
+### Story 10.13 决策依据
|
|
|
+
|
|
|
+**本 Story 完成后需要回答的关键问题:**
|
|
|
+
|
|
|
+1. **是否需要扩展 Select 工具?**
|
|
|
+ - 如果发现级联选择器问题 → 需要扩展
|
|
|
+ - 如果异步加载等待不足 → 需要优化
|
|
|
+ - 如果错误消息不清晰 → 需要改进
|
|
|
+
|
|
|
+2. **是否需要实现复杂表单工具?**
|
|
|
+ - 如果表单填写代码重复度高 → 需要 `fillComplexForm()`
|
|
|
+ - 如果多步骤表单操作复杂 → 需要封装
|
|
|
+
|
|
|
+3. **是否需要实现状态流转工具?**
|
|
|
+ - 如果状态操作代码重复 → 需要 `transitionOrderStatus()`
|
|
|
+ - 如果状态验证不方便 → 需要改进
|
|
|
+
|
|
|
+4. **是否需要实现附件工具?**
|
|
|
+ - 如果附件操作不稳定 → 需要改进 `attachAssetToOrder()`
|
|
|
+ - 如果 fixtures 管理不方便 → 需要封装
|
|
|
+
|
|
|
+**决策:**
|
|
|
+- 如果发现 3 个以上工具扩展需求 → 执行 Story 10.13
|
|
|
+- 如果发现 1-2 个小问题 → 在本 Story 中直接修复
|
|
|
+- 如果无工具扩展需求 → 标记 Story 10.13 为 N/A,直接进入 Story 10.14
|
|
|
+
|
|
|
+### Project Structure Notes
|
|
|
+
|
|
|
+**测试文件位置:**
|
|
|
+```
|
|
|
+web/tests/e2e/
|
|
|
+├── pages/admin/
|
|
|
+│ └── order-management.page.ts # Page Object
|
|
|
+├── specs/admin/
|
|
|
+│ └── order-*.spec.ts # 所有订单测试文件
|
|
|
+└── fixtures/
|
|
|
+ ├── images/ # 测试图片
|
|
|
+ └── documents/ # 测试文档
|
|
|
+```
|
|
|
+
|
|
|
+**本 Story 完成后的影响:**
|
|
|
+- 生成订单管理测试问题清单
|
|
|
+- 评估 e2e-test-utils 工具包扩展需求
|
|
|
+- 为 Story 10.13(扩展工具包)提供决策依据
|
|
|
+- 为 Story 10.14(稳定性验证)做准备
|
|
|
+
|
|
|
+### References
|
|
|
+
|
|
|
+**Epic 需求来源:**
|
|
|
+- [Source: _bmad-output/planning-artifacts/epics.md](../planning-artifacts/epics.md) - Story 10.12 详细需求(行 2239-2260)
|
|
|
+
|
|
|
+**Page Object 实现:**
|
|
|
+- [Source: web/tests/e2e/pages/admin/order-management.page.ts](../../web/tests/e2e/pages/admin/order-management.page.ts) - 订单管理完整方法
|
|
|
+
|
|
|
+**前序 Story 学习:**
|
|
|
+- [Source: _bmad-output/implementation-artifacts/10-1-order-page-object.md](10-1-order-page-object.md) - Page Object 设计
|
|
|
+- [Source: _bmad-output/implementation-artifacts/10-11-order-complete-tests.md](10-11-order-complete-tests.md) - 完整流程测试和已知问题
|
|
|
+
|
|
|
+**项目上下文:**
|
|
|
+- [Source: _bmad-output/project-context.md](../project-context.md) - 技术栈、测试规范、类型系统
|
|
|
+
|
|
|
+**类似 Story 参考模式:**
|
|
|
+- [Source: _bmad-output/implementation-artifacts/8-7-run-tests-collect-issues.md](8-7-run-tests-collect-issues.md) - Epic 8 问题收集模式
|
|
|
+- [Source: _bmad-output/implementation-artifacts/2-4-run-tests-collect-feedback.md](2-4-run-tests-collect-feedback.md) - Epic 2 反馈收集模式
|
|
|
+
|
|
|
+## Dev Agent Record
|
|
|
+
|
|
|
+### Agent Model Used
|
|
|
+
|
|
|
+_待开发时记录_
|
|
|
+
|
|
|
+### Debug Log References
|
|
|
+
|
|
|
+_待开发时记录_
|
|
|
+
|
|
|
+### Completion Notes List
|
|
|
+
|
|
|
+_待开发时记录_
|
|
|
+
|
|
|
+### File List
|
|
|
+
|
|
|
+_待开发时记录_
|