Files
.pouch/skills/tester/SKILL.md
T
2026-09-15 12:29:40 +08:00

3.7 KiB

name, description
name description
tester 维护并执行项目黑盒测试目录(.pouch/tester):列出/增改用例,按分类或 id 跑脚本、浏览器或移动模拟器。触发词:/tester、列出测试、完善测试用例、 按分类测、跑 smoke、现场复测。默认风险最低档,不猜 HOST。

Tester:项目测试目录

开始时解析本 SKILL.md 所在目录为 <skill-dir>。项目根用 git rev-parse --show-toplevel。目录固定为 <root>/.pouch/tester/。

用脚本读写目录,不要把 cases/ 整库灌进上下文:

python3 <skill-dir>/scripts/catalog.py <list|select|show|validate|next-id|run-script> \
  --root <project-root> [参数]

选择模式

  • 还没有 .pouch/tester/catalog.yaml,或用户说初始化 tester:执行「初始化」。
  • 列出、有哪些测试、一共多少条:执行「列出」。
  • 看某一条怎么测:执行「查看」。
  • 加一条 / 完善 / 改验证 / 退役:执行「维护」。
  • 检查目录是否完整:执行「检查」。
  • 跑测试、按分类测、按 id 测、跑 smoke:执行「运行」。

边界(所有模式)

  • 不猜 HOST / Base URL / 是否已授权。缺 HOST 则停,记 environment-fail,不用 localhost。
  • 默认风险上限是 catalog 里的 default_max_risk。超出上限的条目标 skipped,禁止执行。
  • risk 只能是 safe / act / harm。suite=smoke 只能配 risk=safe。规则见 levels.md。
  • surface=browser 必须开真实页面;surface=mobile 必须挂模拟器 session。二者都不得改成只打 API。
  • 浏览器、移动模拟器按 catalog sessions 初始化一次,同一次运行内复用。
  • 环境失败(连不上、缺浏览器、下游超时、session 挂了)不是产品失败。
  • 不改产品代码,不提交,不把成绩单当操作手册。
  • 禁止把完整 cases/ 贴进 prompt。筛选用 select,单条用 show。

初始化

用户点名才跑。已有 catalog.yaml 则不覆盖,转入「检查」。

  1. 建 .pouch/tester/{cases,runs}/。
  2. 若不存在,从 <skill-dir>/templates/ 拷 catalog.yaml 和 local.yaml.example。
  3. 不写 local.yaml 的 HOST。不猜地址。
  4. 跑 catalog.py validate --root <root>。无用例是「部分完成」,不是失败。
## tester 初始化:完成 | 部分完成 | 阻塞

已具备: …
待配置: 路径 + 字段 + 缺了会挡住哪步
下一步: 一句话

列出

python3 <skill-dir>/scripts/catalog.py list --root <project-root>

把脚本打印的分类表原样给用户。不要手算条数。清单 CSV 由独立脚本从 cases/*.yaml 生成:

python3 <skill-dir>/scripts/generate_cases_csv.py --root <project-root>

list 结束时也会跑它。告诉用户路径 .pouch/tester/cases.csv。不要手改 CSV,改用例走「维护」后再生成。

查看

python3 <skill-dir>/scripts/catalog.py show --root <project-root> --id <CASE_ID>

只展示这一条的 how / expected / risk / surface。字段对不上时再读 schema.md。

检查

只读。跑 validate。HOST 是否已配置只报「已设 / 未设」,不要把 local.yaml 全文贴出来。用初始化同一套报告,标题改为 ## tester 检查:…。

维护

读 maintain.md。写 suite/risk 时读 levels.md。先 show 或 next-id,拟好条目给用户确认再写文件,然后 validate。

运行

读 run.md。先 select 得到命中列表,再按 surface 分流。未指定范围时等同「suite=smoke 且风险上限=默认」。select 的 run_together 组按 run.md 整组执行。