83 lines
3.2 KiB
Markdown
83 lines
3.2 KiB
Markdown
# tester 运行
|
||
|
||
只在用户要跑测试时读本文件。
|
||
|
||
## 1. 选范围
|
||
|
||
未指定范围 → `--suite smoke`,风险上限 = `default_max_risk`。
|
||
|
||
用户说分类、id、suite、风险上限时,原样传给 select:
|
||
|
||
```bash
|
||
python3 <skill-dir>/scripts/catalog.py select --root <root> \
|
||
[--category CAT] [--id ID]... [--suite smoke|full|slow] \
|
||
[--max-risk <risk>] [--surface script|browser|mobile]
|
||
```
|
||
|
||
`select` 已排除 `retired` 和风险高于上限的条目(后者若用户点了具体 id,会在 JSON 的 `skipped` 里说明,不执行)。
|
||
|
||
无命中:停下说明筛选条件,不要扩大范围。
|
||
|
||
## 2. 运行前闸
|
||
|
||
- `HOST` 未设(环境变量 / `HX_TEST_HOST` / `local.yaml` 都没有):全部停,environment-fail。
|
||
- 命中条的 `risk` 在 catalog `auth_env` 里有对应变量:变量不是 `true` 则该条 `skipped`。有 `gate` 时还要 `catalog.gates` 对应变量为 `true`。即使用户点了 id 也不执行。
|
||
- 若 catalog 声明了 `status_probe`:先请求它。命中 `stop_if` → 整轮停,environment-fail。
|
||
|
||
## 3. Session
|
||
|
||
看命中条用到的 `session` 键:
|
||
|
||
- 尚未初始化:按 catalog `sessions.<name>.init` 做。`reuse: persist` 的先 `probe`,活着就附着。
|
||
- 本轮已初始化:直接用,不要重开浏览器或模拟器。
|
||
- `reuse: run`:整轮结束再关。`persist`:不关。
|
||
- 中途 session 挂了:后续同 surface 标 environment-fail,不要标产品失败。
|
||
|
||
## 4. 执行
|
||
|
||
按 select 返回的顺序,一条一条来。select 按 `catalog.yaml` 的 `categories` 顺序,同一分类内按该 yaml 列表顺序(不是文件名字母序)。默认失败即停(产品 `fail` 或探测到的不安全状态)。用户说继续 / keep-going 才往后跑。
|
||
|
||
**script**
|
||
|
||
有 `how.run`:
|
||
|
||
```bash
|
||
python3 <skill-dir>/scripts/catalog.py run-script --root <root> --id <id>
|
||
```
|
||
|
||
`run-script` 只跑命令,返回 `executed` + stdout/exit(或 skipped / environment-fail)。**pass/fail 仍由 Agent 对照 `expected` 判定**,不要把 curl 退出码 0 当成产品通过。
|
||
|
||
没有 `run`:按 `how.steps` 做,证据对照 `expected`。不要发明 steps 里没有的调用。
|
||
|
||
**browser / mobile**
|
||
|
||
挂到已有 session,执行 `how.steps`,对照 `expected`。必须留下可见文本、URL 或交互证据。
|
||
|
||
## 5. 记录与报告
|
||
|
||
每条:`id, result, evidence, notes`。`result` 只能是 `pass` / `fail` / `environment-fail` / `skipped`。
|
||
|
||
写入 `.pouch/tester/runs/<UTC时间>-<范围>.yaml`,包含筛选条件、HOST 是否已设(可以写 HOST 值)、session 是否复用、逐条结果。立刻用同一快照生成 CSV,不要手改:
|
||
|
||
```bash
|
||
python3 <skill-dir>/scripts/generate_run_csv.py --root <root> --run <yaml>
|
||
```
|
||
|
||
这会写出 `.pouch/tester/runs/<UTC时间>-<范围>.csv`(`executed=yes|no`),并刷新 `cases.csv` 的 `last_result` / `last_executed` 列。对话里两个路径都报。
|
||
|
||
对话报告:
|
||
|
||
```text
|
||
## tester 运行:完成 | 部分完成 | 阻塞
|
||
|
||
范围: …
|
||
风险上限: …
|
||
session: browser=复用|新开|未用;mobile=…
|
||
计数: pass=N fail=N environment-fail=N skipped=N
|
||
失败: id + 一句证据
|
||
跳过: id + 原因
|
||
快照: .pouch/tester/runs/<file>.yaml
|
||
成绩单: .pouch/tester/runs/<file>.csv
|
||
下一步: 一句话
|
||
```
|