Files
.pouch/skills/tester
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
..

tester

维护并执行项目里的黑盒测试目录。用例按分类放在 .pouch/tester/,可以列出、增改,也可以按分类或编号去跑。术语、命名与设计理由见 references/concepts.md。

什么时候使用

  • 「列出测试」「一共有哪些用例」
  • 「加一条相机开盖的测试」「完善 TC-CAM-003 的验证」
  • 「跑 smoke」「测 CAM」「跑 TC-INF-001 和 TC-CAM-001」
  • 「现场复测」

不管 ACK。这是项目自己的测试目录。

使用前准备

  • 目录在项目根的 .pouch/tester/。没有就说「初始化 tester」。
  • 跑真实环境前,复制 .pouch/tester/local.yaml.example 为 local.yaml,填 HOST。也可以用环境变量 HX_TEST_HOST。
  • 会动硬件、会改数据的用例带风险级别(readonly / mutating / destructive)。默认只跑最低档 readonly。要跑更高风险,需要你明确说,例如「风险到 mutating」;碰哪个子系统另由 gate(如 hardware / weld)控制。

使用示例

列出测试用例
加一条测试:分类 CAM,风险 mutating,开盖再关盖,用脚本打 /api/camera_3d
跑 INF 分类的 smoke
跑 TC-CAM-001,TC-CAM-005,风险保持默认

Agent 会做什么

  1. 用脚本读 .pouch/tester/,按分类统计或筛出你点名的用例,不会把整库塞进对话。
  2. 改用例前先给你看将要写入的内容,你确认再保存。
  3. 执行时:脚本类直接跑命令;浏览器和移动模拟器先初始化一次,同一轮里复用。
  4. 超出你允许的风险级别会跳过,不会偷偷执行。
  5. 跑完给出按分类计数的结果,以及 pass / fail / environment-fail / skipped / not-run。

如何判断完成

  • 列出:能看到分类表和总条数;.pouch/tester/cases.csv 已由 skill 里的 generate_cases_csv.py 从 cases/ 重新生成。最近一次运行的结果在同一张表的 last_result / last_executed 列。
  • 维护:目标 id 能 查看 到,且检查通过。
  • 运行:有本次 runs/*.yaml 快照和同名 .csv 成绩单(executed 列区分已跑 / 未跑);没填 HOST 时会停,而不是编造失败。