Files
lijiaoqiao/docs/supply_test_plan_enhanced_v1_2026-03-25.md
2026-03-26 20:06:14 +08:00

182 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 供应侧测试方案增强版XR-002
- 版本v1.0
- 日期2026-03-25
- 状态:生效(测试执行基线)
- 目标:形成“需求-接口-测试-指标-门禁”全链路闭环,补齐并发与重放风险覆盖
- 关联文档:
- `supply_button_level_prd_v1_2026-03-25.md`
- `supply_api_contract_openapi_draft_v1_2026-03-25.yaml`
- `supply_ui_test_cases_executable_v1_2026-03-25.md`
- `supply_technical_design_enhanced_v1_2026-03-25.md`
- `acceptance_gate_single_source_v1_2026-03-18.md`
---
## 1. 测试目标与分层策略
## 1.1 目标
1. 保障供应侧三页链路(账号、套餐、结算)功能正确且不越权。
2. 保障凭证边界红线M-013~M-016持续达标。
3. 保障关键写路径在并发和重复提交下无双扣、无跳态、无脏数据。
4. 保障业主口径 SLA、申诉与赔付流程可验证、可追溯、可复盘。
## 1.2 分层覆盖
1. L1 单元测试:状态机迁移、不变量校验、幂等判定、金额计算。
2. L2 契约测试OpenAPI 请求/响应字段、错误码、枚举与脱敏约束。
3. L3 集成测试数据库事务一致性、唯一索引冲突、Outbox 事件。
4. L4 UI+API 端到端:按钮级流程、权限态、异常态、审计事件联查。
5. L5 安全专项凭证泄露扫描、query key 拦截、绕平台直连探测。
6. L6 可靠性/性能专项:高并发冲突率、重试重放、降级与回滚演练。
---
## 2. 测试追踪矩阵Requirement -> API -> Test -> Metric -> Gate
| 需求ID | 需求描述 | API | 测试用例 | 验收指标 | 门禁映射 |
|---|---|---|---|---|---|
| R-ACC-001 | 账号凭证验证成功可视化 | `POST /accounts/verify` | UI-SUP-ACC-001 | 验证成功率 >=99.5% | SUP-004 |
| R-ACC-002 | 挂载需风险确认与审计 | `POST /accounts` | UI-SUP-ACC-002 | 审计覆盖率=100% | SUP-004 |
| R-ACC-003 | 账号状态不跳态 | `POST /accounts/{id}/activate/suspend` | UI-SUP-ACC-003/004 + INT-ACC-STATE-001 | 冲突可解释率=100% | SUP-004 |
| R-ACC-004 | 活跃账号不可删除 | `DELETE /accounts/{id}` | UI-SUP-ACC-005 | 违规删除成功率=0 | SUP-004 |
| R-PKG-001 | 草稿保存可追踪 | `POST /packages/draft` | UI-SUP-PKG-001 | 保存成功率>=99.5% | SUP-005 |
| R-PKG-002 | 套餐发布满足保护价与状态约束 | `POST /packages/{id}/publish` | UI-SUP-PKG-002 + INT-PKG-INV-001 | 保护价违规放行率=0 | SUP-005 |
| R-PKG-003 | 批量调价部分失败可回执 | `POST /packages/batch-price` | UI-SUP-PKG-005 | 明细完备率=100% | SUP-005 |
| R-SET-001 | 提现发起防重复防双扣 | `POST /settlements/withdraw` | UI-SUP-SET-002 + CON-SET-001 | M-004/M-005 达标 | SUP-006 |
| R-SET-002 | 处理中/已完成不可撤销 | `POST /settlements/{id}/cancel` | UI-SUP-SET-003 + INT-SET-STATE-001 | 跳态成功率=0 | SUP-006 |
| R-SET-003 | 对账单导出不泄露敏感信息 | `GET /settlements/{id}/statement` | UI-SUP-SET-004 + SEC-SUP-001 | M-013=0 | SUP-006/SUP-007 |
| R-SEC-001 | 仅平台凭证入站 | 全部北向 API | SEC-SUP-002 | M-014=100% | SUP-007 |
| R-SEC-002 | 外部 query key 全拒绝 | 全部北向 API | SEC-SUP-002 | M-016=100% | SUP-007 |
| R-SEC-003 | 需求方不可绕平台直连 | 出网策略与告警 | SEC-SUP-002 + SEC-DIRECT-001 | M-015=0 | SUP-007 |
| R-UX-001 | 按钮可见性和禁用规则正确 | 三页面全部按钮 | UI-DESIGN-QA-001~020 | 按钮规则通过率=100% | SUP-003/SUP-008 |
---
## 3. 并发与幂等专项P0
## 3.1 CON-SET-001 提现并发双提防护
1. 前置:同一 `supplier_id` 可提现余额 1000且无 processing 单。
2. 步骤10 并发请求同一金额提现,使用不同 `request_id`,相同业务时窗。
3. 断言:
1. 最多 1 笔进入 `processing`
2. 其余请求返回 `409/202`,无余额负值。
3. 账务流水借贷平衡,`billing_conflict_rate_pct<=0.01%`
## 3.2 CON-SET-002 提现幂等重放
1. 前置:准备固定 `Idempotency-Key`
2. 步骤:同请求体重复发送 20 次;再发送一次异构请求体。
3. 断言:
1. 同参重复返回同一 `settlement_id``idempotent_replay=true`
2. 异参返回 `409 IDEMPOTENCY_PAYLOAD_MISMATCH`
## 3.3 CON-PKG-001 套餐发布冲突
1. 步骤:两个会话同时发布同一 `draft` 套餐。
2. 断言:
1. 仅一个成功转为 `active`
2. 另一个返回 `409 SUP_PKG_4091`
3. 审计日志有冲突记录,且状态无跳变。
---
## 4. 安全与合规专项P0
## 4.1 凭证泄露扫描
1. 扫描对象API 响应体、错误体、导出文件、审计日志、告警消息。
2. 扫描规则:上游 key/token 模式库 + 熵检测 + 前缀检测。
3. 通过标准:`supplier_credential_exposure_events=0`
## 4.2 鉴权边界专项
1. 平台凭证成功链路header bearer 访问主路径成功。
2. query key 拒绝链路:`/v1/*``/v1beta/*` 全拒绝。
3. 直连阻断链路:模拟需求方绕平台访问供应方,必须失败并告警。
## 4.3 申诉与赔付流程可测性
1. 场景:提现延迟、误扣款、导出异常、账户误冻结。
2. 断言具备工单编号、SLA 计时、处理人、结果说明、赔付记录。
3. 指标:业主承诺时限命中率 >=99%,逾期需自动升级。
---
## 5. 性能与可靠性专项P1
| 用例ID | 场景 | 负载 | 目标 |
|---|---|---|---|
| PERF-ACC-001 | 账号验证峰值 | 100 RPS, 10min | P95 <= 800ms错误率 <0.5% |
| PERF-PKG-001 | 套餐批量调价 | 2000 套餐/批 | 全量回执,超时率 <1% |
| PERF-SET-001 | 提现高峰并发 | 50 并发/供应方 | 无双扣,余额不为负 |
| REL-SET-001 | 结算服务实例重启 | 执行中重启一次 | 无状态跳变,幂等可恢复 |
| REL-SEC-001 | 网关规则热更新 | 更新 query key 拦截规则 | M-016 不下降 |
---
## 6. 测试数据治理
## 6.1 数据分层
1. 固定样本:用于回归(可重复、可比较)。
2. 脱敏样本:用于安全扫描与导出验证。
3. 回放样本:来自线上脱敏事件,验证真实边界场景。
## 6.2 数据规则
1. 测试数据必须通过脱敏策略,不得包含真实凭证。
2. 每次执行必须记录 `dataset_version`
3. 幂等与并发用例必须复位余额和状态,防止脏数据串案。
---
## 7. CI 与门禁编排
## 7.1 执行顺序
1. `Contract Gate`OpenAPI 漂移检测(阻断)。
2. `Core Integration Gate`:事务与不变量校验(阻断)。
3. `UI-SUP Gate`:按钮级 E2E阻断
4. `SEC-SUP Gate`:凭证边界与泄露扫描(阻断)。
5. `PERF/REL Gate`:每晚定时跑,异常进入发布前强制复核。
## 7.2 失败策略
1. P0 用例失败:立即阻断发布 + 当日复盘。
2. P1 用例失败冻结升波48h 内修复并补测。
3. Flaky 管理:单用例 7 日 flaky 率 >2% 必须治理,禁止“无限重试掩盖失败”。
---
## 8. 准入与退出标准
## 8.1 准入Entry
1. PRD 按钮级规格冻结。
2. OpenAPI 字段冻结。
3. 技术增强稿XR-001已落地。
## 8.2 退出Exit
1. 追踪矩阵全部有执行结果与证据链接。
2. P0 用例通过率 100%P1 用例通过率 >=98%。
3. M-013~M-016 全部达标,且无未关闭 P0 缺陷。
4. 业主验收条款SLA/申诉/赔付)签字通过。
---
## 9. 交付物清单
1. `tests/supply/ui_sup_acc_report_2026-03-28.md`
2. `tests/supply/ui_sup_pkg_report_2026-03-29.md`
3. `tests/supply/ui_sup_set_report_2026-03-29.md`
4. `tests/supply/sec_sup_boundary_report_2026-03-30.md`
5. `reports/supply_gate_review_2026-03-31.md`
6. `reports/supply_traceability_matrix_2026-03-25.csv`(新增)
7. `reports/supply_flaky_budget_2026-03-25.md`(新增)
完成以上 7 项即视为 XR-002 关闭。