Files
lijiaoqiao/docs/supply_test_plan_enhanced_v1_2026-03-25.md

182 lines
7.6 KiB
Markdown
Raw Normal View History

# 供应侧测试方案增强版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 关闭。