# tester 维护并执行项目里的黑盒测试目录。用例按分类放在 `.pouch/tester/`,可以列出、增改,也可以按分类或编号去跑。术语、命名与设计理由见 `references/concepts.md`。 ## 什么时候使用 - 「列出测试」「一共有哪些用例」 - 「加一条相机开盖的测试」「完善 TC-CAM-003 的验证」 - 「跑 smoke」「测 CAM」「跑 TC-INF-001 和 TC-CAM-001」 - 「现场复测」 不管 ACK。这是项目自己的测试目录。 ## 使用前准备 - 目录在目标测试项目根的 `.pouch/tester/`。父仓库和 `app` 等 Git submodule 可以各自有 catalog;先运行 `catalog.py roots --root ` 发现它们,不要把两个项目的 cases 合并。 没有任何 catalog 才说「初始化 tester」。 - 跑真实环境前,复制 `.pouch/tester/local.yaml.example` 为 `local.yaml`;模板默认 `HOST: "127.0.0.1"`。如果目标不是本机,显式改成目标地址。也可以用环境变量 `HX_TEST_HOST` 覆盖。 - 测试默认在当前项目执行。也可以直接提供 Orca project id、项目名称或 terminal id; tester 会自动解析 Agent、环境、项目和目录,写入 `local.yaml.agent`,并输出更新后的配置列表。 每轮测试会创建新的 terminal,结束后自动关闭;不会复用或关闭已有 terminal。 - 测试环境部署由 deployer 在本机 Compose 中触发;正式环境部署由本机 `~/code/app00` 项目的 fresh Agent terminal 触发,tester 不直接 SSH 或执行正式 Compose。 - 会动硬件、会改数据的用例带风险级别(`readonly` / `mutating` / `destructive`)。默认只跑最低档 `readonly`。要跑更高风险,需要你明确说,例如「风险到 mutating」;碰哪个子系统另由 `gate`(如 hardware / weld)控制。 ## 使用示例 ```text 列出测试用例 ``` ```text 加一条测试:分类 CAM,风险 mutating,开盖再关盖,用脚本打 /api/camera_3d ``` ```text 跑 INF 分类的 smoke ``` ```text 用 terminal term_2cfb291c-8769-4613-af52-1fcc2f209eaa 的环境跑 iOS smoke,先把 Agent 配置列出来确认 ``` ```text 用 Orca project temp-macmini 跑移动测试,自动初始化 tester Agent 配置并先确认 ``` ```text 跑 TC-CAM-001,TC-CAM-005,风险保持默认 ``` ## Agent 会做什么 1. 用脚本读 `.pouch/tester/`,按分类统计或筛出你点名的用例,不会把整库塞进对话。 2. 改用例前先给你看将要写入的内容,你确认再保存。 3. 执行时:若用户要求准备环境,先按目标环境走 deployer 路由;再解析并更新 Agent 配置,输出生效列表,再准备 Orca 项目并创建临时 terminal;脚本类、 浏览器和移动模拟器都在该 Agent 环境中执行。 4. 超出你允许的风险级别会跳过,不会偷偷执行。 5. 无论测试成功、失败或异常,都会关闭本轮创建的 terminal;跑完给出按分类计数的 结果,以及 `pass / fail / environment-fail / skipped / not-run`。 ## 如何判断完成 - **列出**:能看到分类表和总条数;`.pouch/tester/cases.csv` 已由 skill 里的 `generate_cases_csv.py` 从 `cases/` 重新生成。每次运行的结果保存在独立的 `.pouch/tester/runs/.*` 文件中。 - **维护**:目标 id 能 `查看` 到,且检查通过。 - **运行**:有本次 `runs/*.yaml` 快照和同名 `.csv` 成绩单(`executed` 列区分已跑 / 未跑);没填 HOST 时会停,而不是编造失败。