Files
.pouch/skills/ack/references/regression.md
T
laily 12e00bd594 Merge branch 'main' into rename
Keep pouch naming and .pouch/ack project state, and bring in ACK
regression mode, deployer test-environment binding, and manage-release
updates from main.
2026-08-25 15:23:48 +08:00

3.2 KiB

ACK 回归目录与运行

本文件是回归用例目录、收获时机和运行模式的 SSOT。三角色闭环仍见 closed-loop.md;测试环境部署见 delivery.md 与 deployer skill。

回归不是新 skill,也不写入 knowledge.yaml。知识是护栏;回归是可观测的黑盒 用例清单。

1. 目录

项目状态是 .pouch/ack/regression.yaml。任务板用 project.regressionFile: .pouch/ack/regression.yaml 声明,运行证据写在 tasks.yaml.regressionRuns。新项目初始化会生成空目录;旧项目没有该文件时, 「运行回归」先停下来,用户授权后再从模板补齐。

只有 Coordinator 写 regression.yaml。Test 在复测报告里提名 regressionCandidates;用户确认后 Coordinator 落盘,并把 case id 写入任务的 regressionRefs。不要把用例散落到第二份文档,也不要让 Test 直接改 .pouch/ack/

tests/browser/** 仍可由 Test 维护可执行脚本。用例可用可选 automationRef 指向那些脚本;没有脚本时 Test worker 按目录里的步骤和验收信号执行。

2. 用例

每条用例是给独立 Test worker 的说明书,复用 optimization-method.md §1 的可观测信号。ACK 不提供 YAML-DSL 解释器,也不强制 Playwright。

读取时用 scripts/select_regression.py,不要把完整目录注入上下文:

python3 <ack-skill-dir>/scripts/select_regression.py .pouch/ack/regression.yaml
python3 <ack-skill-dir>/scripts/select_regression.py .pouch/ack/regression.yaml \
  --suite full
python3 <ack-skill-dir>/scripts/select_regression.py .pouch/ack/regression.yaml \
  --case-id REG-login-001

默认 --suite smoke 只返回 status: activesuite: smoke 的用例。 --suite full 返回全部 active 用例。写回前仍运行 scripts/validate_regression.py

surface: browser 的用例必须走真实页面交互,不能改成只打 API。 surface: api 以 HTTP 状态和字段为证据。

3. 收获

任务进入 verified 且改了用户可见行为或 API 后,闭环结束前 Coordinator 必须给出 四选一,不能跳过:

  • 新增
  • 更新已有用例
  • 退役(功能已删除)
  • 无回归(纯内部重构、leftover、无用户可见变化)

草案来自任务验收信号和 Test 的独立证据,按 path + expected 去重。用户确认后 才写入目录。P0 / 主路径默认 suite: smoke,其余 full

4. 运行

用户说「回归」「跑回归测试」时执行本模式,不要求当前有 verified 任务。

  1. 目录存在且有选中的 active 用例;否则停止。
  2. 先按「运行测试环境」调用 deployer,拿到 Base URL。
  3. Coordinator 派独立 Test worker,只带选中用例、Base URL 和 surface。
  4. Test 逐条对照 expected 回报证据。Coordinator 终检后写入 regressionRuns
  5. 失败只报告,不自动派 Developer,不占任务三轮预算。用户明确要求修复时,按 「修 bug」为每条失败开一个任务。

环境失败(没有浏览器、打不开部署地址、deployer 失败)记环境事件,不记产品失败。

默认跑 smoke。用户点名 full 或具体 case id 时按点名范围执行。