测试规范层
本 skill 只回答:这次改动必须测什么、测到什么深度、什么情况不能交付。不要在本层写具体命令、账号、端口、脚本写法或项目工具细节;执行方式交给 test-execution-router 与项目执行 skill。
0. 第一原则
在纯 AI 开发 loop 中,测试是最后一道质量闸,不是可选收尾。没有测试矩阵、没有自动化执行证据、没有无法自动化的明确理由,不允许交付。
默认规则:
- 能由 AI 自动化的测试必须自动化。
- AI 可控制浏览器/开发者工具、读取 DOM/data、截图并用 VLM 判读时,仍属于自动化;“有 GUI”“需要看图”“工具是交互式”都不是手工理由。
- 只有 AI 无法操作的真实设备、原生客户端对象、支付/OAuth/原生授权等物理边界,才允许转人工手工验证。
- 手工验证必须有物理边界证明、runbook、客观观测点、回传材料和写明责任角色的计划内人工里程碑。
- 跳过任一测试类型时,必须说明本次改动为什么不命中,而不是写“暂不需要”。
- 每次测试矩阵对下列八面恰好各有一行;不命中写可核 N/A 理由,禁止省略行。
1. 必选测试面
每次改动都先判断是否命中下列测试面,并形成测试矩阵:
| 测试面 | 何时必须纳入 | 最低要求 |
|---|---|---|
| 单元测试 | 业务规则、状态分支、算法、解析、组装、校验逻辑变化 | 覆盖正常、边界、异常或回归路径;不能只测 happy path |
| 接口测试 | 对外接口、鉴权、错误码、状态流、请求/响应字段变化 | 断言字段语义、错误语义、状态变化;不能只看成功码 |
| 数据库数据预置 | 需要稳定前置状态、跨步骤业务链路或复杂终态校验 | 幂等、可清理、命名空间隔离;优先通过业务接口造数 |
| 数据库数据校验 | 写链路、状态流转、表结构、索引/唯一约束、异步重算变化 | 校验终态、不变量、幂等和约束;不能只看有记录 |
| 网页 UI 自动化 | Web/admin 页面、表单、列表、弹窗、配置页、可视状态变化 | AI 自动操作关键路径,硬断言 DOM/数据,必要时自动截图+VLM 判读 |
| 小程序 UI 自动化 | 小程序页面、组件、状态管理、C 端路径变化 | AI/自动化工具操作关键路径,硬断言元素/data,canvas/复杂视觉自动截图判读 |
| 小程序视觉验收 | 页面布局、图表、canvas 合成图、视觉规格变化 | 自动产出截图并由 VLM/视觉模型判读规格差异;不能只证明截图存在 |
| 手工验证 | AI 无法操作的真实设备、原生客户端对象、支付/OAuth/原生授权 | 仅作物理边界例外;物理边界证明 + runbook + 观测点 + 回传材料 + 人工里程碑及责任角色缺一不可 |
2. 改动范围到测试矩阵
按改动范围选择测试组合:
| 改动范围 | 必跑 | 常见附加 |
|---|---|---|
| 纯后端内部规则 | 单元测试 | 若影响外部行为,加接口测试;若落库,加 DB 校验 |
| 对外接口 | 接口测试、相关单元测试 | 若写数据,加 DB 预置/校验;若被 UI 消费,加对应 UI 自动化 |
| 数据库结构或写链路 | DB 预置、DB 校验、相关单元/接口测试 | 若影响展示,加 UI 自动化或视觉验收 |
| 后台网页 | Web UI 自动化、接口测试 | 配置写入必须加 DB 校验;视觉变化加截图判读 |
| 小程序业务页 | 小程序 UI 自动化、接口测试 | 视觉/图表/canvas 变化加视觉验收 |
| 小程序视觉/合成图 | 小程序 UI 自动化、小程序视觉验收 | 若素材/配置来自后端,加接口测试与 DB 校验 |
| 鉴权、支付、用户数据删除、业务 ID、核心算法 | 相关测试全纳入,金标准/回归必跑 | 自动升级为高风险质量闸;测试通过不等于免除人工审查,但人工审查发生在设计/章程拍板与终点验收,不构成执行中的停机闸门 |
| 纯文案或非行为样式微调 | 视影响面最小化 | 仍需视觉或 UI 验证;不得默认“无需测试” |
3. 数据策略
根据业务真实性和风险选择数据策略:
| 策略 | 适用 | 要求 |
|---|---|---|
| DB 预置 -> 测试 -> DB 校验 | 需要稳定构造复杂状态、异常状态或历史数据 | 前置必须幂等、可清理;不得 broad cleanup;业务 ID 需合法来源 |
| 接口造数 -> 测试 -> DB 校验 | 需要验证真实业务写链路或 ID/状态由系统生成 | 优先使用;造数接口本身也要记录为前置链路 |
| 复用测试数据 -> 测试 -> DB 校验 | 数据昂贵或依赖外部平台 | 必须证明数据稳定、不会污染他人测试 |
| 人工前置 -> AI 自动校验 | 真机/外部平台授权等 AI 无法完成的前置 | 人工只做绕不过去的动作;后续校验仍由 AI 执行 |
4. 最低断言深度
断言必须验证业务语义,不只验证“跑通”:
运行证据同样受本节约束:套件退出码、文件存在、日志/报告哈希、测试名或 AC 编号只能证明“执行载体发生过”,不能单独证明业务断言。每条通过结论必须能回到框架原生断言事件、真实扫描结果或采集时物理边界原始观测。
| 测试面 | 不合格断言 | 合格断言 |
|---|---|---|
| 单元测试 | 方法返回非空 | 分支结果、边界值、异常路径、关键不变量 |
| 接口测试 | code == 0 / data 非空 |
核心字段值、字段关系、错误码、状态变化、分页/空态 |
| DB 校验 | 查询有行 | 行数、关键字段、唯一约束、状态终态、幂等重跑结果;共享余额/限额/计数类写路径加真并发下不变量保持 |
| Web UI | 页面能打开 | 关键路径可操作、表格/表单值正确、错误/空态正确 |
| 小程序 UI | 页面不白屏 | 用户路径、元素文本/data、加载/空态/权限态正确 |
| 视觉验收 | 截图存在 | 布局、文案、图表/canvas、遮挡、规格差异被判读 |
5. 交付阻断条件
以下任一情况必须阻断交付:
- 未产出测试矩阵。
- 直接命中的测试面没有执行证据。
- 跳过测试没有具体原因。
- 自动化失败被标成“手工通过”替代。
- AI 可控 GUI、开发者工具或 VLM 判读被降级成手工。
- 手工项缺物理边界证明、runbook 或计划内人工里程碑及责任角色。
- 用例失败后未分类就改断言或删除用例。
- 只跑冒烟测试,却宣称完成正式接口/业务验证。
- 视觉变化只有截图文件,没有判读结论。
- 数据写链路只有接口响应,没有 DB 终态校验。
- 用模拟/构造替身的结果冒充真实链路验证(未标注保真度
simulated,或未写明真实链路收口去向)。 - 改动命中死亡线/高风险区域,对应金标准用例未生效(无
execution_ref),却未显式登记豁免并上报。 VERIFIED只绑定套件成功、聚合哈希或换名后的通用观测,不能还原该 AC 的实际业务结果。- 金标准只有正向返回值,没有不变量终态与负向副作用的原生观测事件。
6. 输出格式
使用本 skill 后,输出至少包含:
## 测试矩阵(固定八面,各一行)
| 测试面 | 本次是否命中 | 原因/N/A证据 | 自动化/手工 | 保真度(真连/模拟/手工) | 证据要求 |
## 数据策略
- 选择:DB 预置 / 接口造数 / 复用数据 / 人工前置
- 理由:
- 清理与隔离:
## 最低断言
- 接口:
- DB:
- UI/视觉:
## 阻断项
- 未覆盖测试:
- 不能自动化原因:
7. 与其他 skill 的边界
- 写具体用例:使用
test-case-design。 - 路由执行:使用
test-execution-router。 - 项目命令、凭据、浏览器、小程序、视觉工具:使用项目执行 skill。