Files
.pouch/skills/tester/references/levels.md
T
laily cc9af04a40 tester v2: 术语对齐 pytest/JUnit/Robot,补齐 automation 与 not-run
字段改名(每项取舍的理由见新增的 references/concepts.md):
- 用例 status -> lifecycle, suite -> tag, surface -> driver,
  cleanup -> teardown, skip_unless -> assume;删除 requires
- risk 取值 safe/act/harm -> readonly/mutating/destructive(单调三级,
  与 gate 正交)
- catalog auth_env -> authorize;授权变量统一为
  AUTHORIZE_MUTATING / AUTHORIZE_DESTRUCTIVE

新增用例字段 automation(automated/assisted/manual),默认 automated,
并在 validate 里机器校验:manual 禁用 driver 与 how.run 且必须有
how.steps;assisted 至少一步以 [人工] 开头。select 新增 --automation。

结果词新增 not-run,区分「主动不跑」(skipped:retired/pending/超风险
上限/未授权/assume 不成立)与「没轮到」(失败即停后、被分类前置挡住整组、
需人工而无人值守)。

status_probe 定为分类级前置条件:catalog 顶层为默认,categories[] 同名键
覆盖(缺省继承 / false 关闭 / mapping 整体替换)。select 按分类返回生效值,
并把 probe.url 用 vars 展开(solve Agent 无法自行解析 ${VAR} 的问题),
同批返回 vars 供 how 里的 ${...} 替换。

新增 references/concepts.md:术语表(每词一句唯一定义 + 业界锚点 +
反例)、v1->v2 映射、以及 risk/automation/not-run/status_probe 的设计理由。
其余文档(SKILL/README/schema/levels/run/maintain)与三个脚本(catalog、
generate_cases_csv、generate_run_csv)同步更新。
2026-09-16 23:07:08 +08:00

2.1 KiB

tag 与 risk

维护或用户问套件/安全级别时读本文件。两套词对所有项目相同,不要自造名字。命名理由见 concepts.md。

tag:跑哪一批

只表示耗时和依赖,不表示危不危险。危不危险看 risk。

业界常见还有 sanity(窄回归,和 smoke 重叠)、regression(≈本 skill 的 full)、acceptance、nightly。本 skill 不采用 sanity/acceptance:和 smoke/full 分不清,且已有 category、id、risk 三层筛选。

固定三个词:

值 何时用
smoke 最短路径证明系统还活着。必须快、少依赖、risk 只能是 readonly。
full 日常回归里其余自动化用例。说「跑 full」仍受风险上限约束。
slow 太慢或环境太重,不进日常 full:真实焊接、付费 API、要工件/账号、跑很久。

口诀:

  1. 只回答「活着吗、主入口能不能用」→ smoke。
  2. 要特殊现场/很久才能跑完 → slow。
  3. 其余自动化 → full。
  4. 拿不准 → full。不要把会动真机或会删数据的放进 smoke。

未指定 tag 时只跑 smoke。跑 full 不含 slow。

risk:副作用有多大

三个词,网站 / App / 机器人共用,单调升级。catalog.yaml 的 risks 必须按此顺序,且以 readonly 开头:

值 含义 网站 App 机器人
readonly 只看,不留下变化 打开页、只读 API 打开界面 读位姿、查状态
mutating 会改状态,一般可补救 提交表单、改配置 发消息、保存 点动、使能、开盖扫描
destructive 难恢复或伤人/伤钱/伤环境 删库、真实扣费 清数据、内购 急停、断电、真焊

默认只跑 readonly。项目细分闸(点动 vs 焊接)用可选 gate,不要再发明 risk 名。

tag=smoke 且 risk!=readonly 为非法。

不想跑某一档时,authorize.<risk> 指向的环境变量保持 false 即可——该档用例记 skipped,不是 not-run。