muse-agent-example/.agent/rules/测试隔离.md
zizi f76c3cd04a docs(架构): 归档R2历史留痕并清理过程计划与实施分期标签
- 归档并收敛 R2 历史留痕至 docs/实现回顾/R2改造历史留痕.md,删除已退出生命周期的改造计划、旧文件处置及验证过程文档
- 现行测试用例身份收敛至 tests/用例清单.json(1358条扁平登记),适配 conftest、索引维护与测试执行验证
- 清理源码、配置、SQL迁移头、测试夹具及规则文档中的 Wxx 实施分期标签与过时过程描述
- 同步重新打包构建资源清单,通过全量离线测试、模块边界、类型检查与索引双向强核验
2026-09-16 19:09:14 +08:00

23 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 测试隔离规则
> 权威合同:`tests/用例清单.json`、`docs/系统架构/新版设计/迁移与验收.md`;机械门禁:`tests/conftest.py`(OS 进程隔离 + 用例选择 + 全跳过守卫)、`工具/维护索引.py`。
1. **默认离线**:默认测试进程由 macOS sandbox 或 Linux seccomp 禁止外部连接,覆盖收集阶段、数据库驱动及其子进程;防护不可用时失败,不退回无防护执行。显式外部用例使用 `--外部环境` 与环境标记选择。
2. **显式外部环境**:需要隔离 PostgreSQL 的用例标记 `数据库` 并使用 `隔离数据库URL` 夹具;缺 `MUSE_TEST_DATABASE_URL` 时直接失败,不跳过或回退旧库。
实际Pi循环另标记`宿主`,通过`make 宿主测试`显式提供固定Node与Pi包路径;普通数据库测试剔除此标记。宿主验证使用合成提供方,不等于真实模型验证。真实外部模型另标记`真实模型`,通过`make 真实模型测试`显式提供地址与凭据文件;普通数据库测试剔除该标记。
3. **用例身份**:完整 `case_id` 与清单中的实际文件、符号及参数行绑定,不靠名称后缀匹配;`pytest --case TC-…` 选择用例,`--case 'TC-…[参数ID]'` 选择参数行。同符号承接多个 ID 时必须分别绑定无交叠参数。未知 ID、目标缺失与冒用均失败;Junit 留存完整 ID 和参数 ID。
4. **可判定性**:用例体内必须有 assert/raise/fail/skip/xfail;纯 print 用例被索引检查在执行前拦截。
5. **空收集不通过**:零收集(退出码 5)、全跳过(守卫改写退出码 5)、超时与失败都如实呈现;不得以返回码 0 掩盖。
6. **替身显式标记**:协议替身、模型替身、宿主替身必须在用例名或文档串标明;替身通过不宣称真实链路通过。
7. **收集范围**:用例只放 `tests/单元|契约|集成|架构|迁移|端到端|真实调用/`;旧实现与旧测试树已退出本仓,不参与同一收集。
## 行为与证据原则
- 用例保护独立可观察行为:给定条件、触发动作、预期结果、环境与合同明确;夹具不依赖前一个测试写出的正文或全局前序状态。文件只组织代码,参数行固定稳定身份。
- 测试登记采用扁平 `cases`:`case_id/file/symbol/environment` 及适用的 `parameter_ids/given/when/then/contract`;文件与合同路径相对仓库根。登记不是执行证据,不记录过程分期、退役历史或“通过”状态。
- 合并仅适用于输入边界、动作、断言和环境相同的行为,不能丢失参数分支;已替代实现的目录形状不当作长期验收标准,原子性、范围拒绝、恢复与保真反例必须保护。
- 纯解析、校验、patch 与预算计算使用离线输入和假时钟;CAS、并发、幂等、事务回滚、约束与身份分流使用隔离 PostgreSQL 和受控同步点,替身不能证明数据库语义。
- 文件竞争、权限、软链接和恢复使用独立临时目录,必要时用独立进程,不操作私人原稿。作者点击、中文输入与页面重连使用真后端浏览器旅程;组件测试只证明组件范围。
- 角色实际行为须固定模型、宿主、资源版本及预算;脚本观察、协议替身与模型文学效果分别取证,不能互相冒充。
- 执行证据包含代码版本、环境用途、夹具与参数版本、实际收集身份、结果和失败断言;不允许只跑第一参数、打印 PASS 或缺环境跳过冒充通过。设计核对只证明登记和合同一致,不证明全部行为已通过。