Community写作与编辑github.com

OxideTerm 测试审计

编写、修订或审计 OxideTerm 测试,关注可观察行为、可信回归和独立契约。适用于诊断测试失败、审查测试质量或合并冗余覆盖。常规测试变更应使用聚焦检查,而非仓库范围的审计。

OxideTerm 测试审计 是什么?

该技能为 OxideTerm 项目提供了一套结构化的测试审计方法论,帮助开发者在编写、修改或审查测试时,始终聚焦于行为契约和回归保护,而非测试数量或删除行数。它强调在拥有该行为的层级上保留有用的回归保护,并通过最小范围的审查来满足变更需求。技能适用于所有 OxideTerm 平台(例如桌面端、独立远程代理),并定义了清晰的测试边界矩阵,指导开发者将特定行为(如解析、运行时、UI 结果、插件适配器等)映射到适当的验证层级。工作流涵盖编写新测试前的“编写问题”、诊断失败测试时的“分类模型”、以及通过紧凑的证据记录(表格式)和“保留/修复/合并/删除”决策标准来审计现有测试。技能还包含验证与完成步骤,确保测试运行后意图的测试确实被执行,并通过最终差异审查防止回归。它源自 OpenClaw 的测试审计原则,并根据 OxideTerm 的仓库规则进行了定制。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AnalyseDeCircuit/oxideterm/tree/HEAD/.agents/skills/oxideterm-test-audit

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

OxideTerm 测试审计 是做什么的?

在拥有该行为的层级上保持有用的回归保护。使用能解决所请求变更的最小审查范围;根据所保留的契约和检测到的错误来评判结果,而不是测试数量或删除的行数。

阅读适用的 AGENTS.md。从仓库根目录运行命令。验证矩阵和测试指南定义了项目特定的检查;本技能提供测试质量决策。

选择范围

  • 编写或修改测试: 将编写问题应用于该行为,并检查其最接近的现有覆盖范围。
  • 诊断失败: 确定测试失败的原因,以及在编辑之前是实现、期望、fixture 还是环境出了问题。
  • 审计现有测试: 审查所请求的模块或行为,并为每项提议的变更记录证据。仅当被明确要求时,才将范围扩展到整个子系统。每个批次使用相同的证据标准。

创建或调用本技能不会授权进行宽泛的清理、子代理、提交、推送或 PR。尊重用户现有的授权以及任何仅审查的边界。当编辑已被授权且证据充分时,无需另一轮批准即可继续。

编写问题

在添加或修改测试之前,请确定:

  1. 被保护的可观察行为或独立契约。
  2. 一个合理的回归以及该回归会失败的特定断言。
  3. 最接近的现有覆盖范围遗漏了什么。在适当时扩展该覆盖范围;另一层需要不同的集成、协议或生命周期风险。
  4. 该测试是否需要生产环境的导出、开关、包装器或注入钩子,而这些钩子在业务调用方中并不存在。优先在现有的所属边界处进行测试。

使用独立于实现的期望值。Fixtures 必须能够区分正确行为和可能的错误:在测试过滤器时包含被排除的候选对象,在测试排序时包含不同的排序键,在检查脱敏时包含实际的敏感输入。构造函数字段的往返、非空结果或执行了被断言行为的 mock 都不足以证明预期的工作流。

测试助手和 fixtures 可以合法地仅用于测试。关注点是扭曲生产 API 或仅为了测试而保留过时的生产行为。

诊断失败的测试

阅读完整的测试、其输入、生产路径、附近的覆盖范围以及相关的变更历史。对于 CI,确定失败的提交、作业、测试名称和断言;通用的非零退出码不是根本原因。当断言依赖于依赖项的行为时,检查其源代码或类型。

根据证据对失败进行分类:

  • 产品回归: 预期的契约仍然有效。复现失败并在授权范围内修复相关的实现。
  • 过时的期望: 历史记录和当前契约显示有意的行为变更。更新预期的行为,同时保留对受支持发布格式和 API 的保护。
  • 有缺陷的测试或 fixture: 测试用例并未执行其所声称的条件,依赖于偶然状态,或由于不相关的原因而失败。在实际边界处修复设置和断言。
  • 环境失败: 编译、依赖项、资源、平台或外部 fixtures 阻止了行为的测试。报告该限制;不要将其重新解释为通过或过时的测试。

基线失败不是删除测试的理由。对于错误修复,在修复前演示预期的失败,在修复后演示成功。当能证明相同的失败时,可重用有效的 CI 证据或捕获的本地基线;不要仅仅为了形式而重复昂贵的检查。

例如,.oxide 插件测试需要区分免密验证和解密导入预览。加密格式的验证响应不应泄露元数据;包含密码的预览应仍然包含明确预期的描述和连接名称。更新这些断言可以保留契约,而无需在插件层进行另一个低级别的解密测试。

审计前先阅读

完整阅读每个候选测试,包括参数行。追踪其生产入口点、调用者、相关依赖项、兄弟实现以及重叠的测试。检查历史记录以了解其存在的原因,以及 CI 路由以了解哪些检查实际运行。

对提议的变更使用紧凑的证据记录,除非要求保存报告,否则在工作响应中包含:

测试和位置行为和可信失败决策剩余或已修复的证明验证
确切的测试名称和路径断言能检测到什么保留 / 修复 / 合并 / 删除命名的测试或边界,附带相关历史聚焦的命令或手动场景
  • 保留: 它独立保护一个有意义的契约。
  • 修复: 行为很重要,但输入、断言、名称或预期结果是错误的或太弱。
  • 合并: 在删除重复的设置或用例之前,将不同的断言移动到命名的主测试中。
  • 删除: 命名更强有力的剩余证明,或表明该行为不再有受支持的契约。不确定性意味着调查或保留。

对于随测试一起删除的生产代码,还要识别其非测试调用者以及代码过时的原因。在删除助手、导出、功能或 fixture 之前搜索引用。不要将无关的简化作为审计的一部分。

值得调查的模式

  • 测试重复了实现的源代码、私有调用方式或精确的内部表示,并在行为保持不变的 refactor 后失败。
  • 多层使用等效输入调用同一个助手,并重复其断言,而没有锻炼自身的集成。
  • Fixture 预安排了回调顺序、完成通知或持久化结果,而这些理应由实际拥有者产生。
  • 一个拒绝测试在到达其所声称测试的权限检查之前,被参数验证拒绝。
  • 一个并发、取消或唤醒测试仅检查最终标志,而没有创建竞争的工作或等待者。
  • 当内容、身份、顺序或持久副作用才是契约时,成功断言仅检查 Ok、Some、长度或非空。

这些是调查信号,而不是自动删除规则。保留独立的安全默认值、协议字节、持久化和迁移格式、插件 API、平台行为、打包、国际化以及架构约束。静态检查在它保护真实契约并能承受无关重命名时是有用的。执行缓慢本身并不使测试冗余。

OxideTerm 边界

行为首选验证边界
解析、设置规范化、序列化或数据合并拥有该领域的 crate,带有显式的期望值和受支持格式样本
SSH 节点共享、SFTP、转发、重连或跳板机运行时拥有者,带有实际的消费者注册、取消和清理;参见运行时所有权
混合页面、焦点、弹窗或延迟 UI 结果现有的 GPUI 测试上下文和功能实体;原生 IME、窗口和 GPU 行为仍需主机验证
插件、MCP 或 CLI 适配器实际的调度和返回的数据、权限、目标身份或副作用;避免单独重放领域助手
脱敏和凭据生命周期通过相关输出或所有权边界的合成秘密输入;参见敏感数据
打包和仓库脚本现有的脚本测试或由验证矩阵选择的实际 dry-run 契约

对于共享节点测试,关闭一个终端应使另一个实际消费者仍然可用。对于过期结果处理,在拥有者变更后交付旧的完成。使用现有的 fixtures 和事件驱动的同步;任意睡眠和额外的重试并不能建立这些条件。

验证并完成

在开始其测试运行之前,完成相关的源代码/测试编辑。在此运行期间保持签出稳定。

  1. 运行聚焦的测试或模块,例如 cargo test -p <crate> <test_filter>。使用实际拥有它的目标和平台;桌面测试位于 oxideterm-gpui-app 的 oxideterm-native 二进制目标中。独立的远程代理使用 --manifest-path agent/Cargo.toml。
  2. 读取结果并验证预期的测试确实运行了。零匹配测试的成功命令不是证据。在删除或移动后,运行命名的剩余覆盖范围和任何不同的受影响集成检查。
  3. 对 Rust 编辑运行 cargo fmt --check 和 git diff --check。根据验证矩阵添加 crate 检查、脚本测试、区域设置审计或手动工作流。在相关变更或新证据使其失效之前,可重用结果。
  4. 审查最终的 diff 和状态。确保没有独特行为消失,没有断言被削弱以隐藏产品失败,并且没有无关的工件被更改。

仅当需要解决关于断言的特定疑问时,才使用有意的突变。使其与用户工作隔离,之后恢复确切的源代码,并且不要对每个测试都要求这样做。子系统范围的审计应在运行最终的受影响套件之前,将删除的用例与命名的剩余测试进行核对。

报告决策、仍受保护的行为、实际运行的检查以及任何实质性的未验证边界。当发生删除时,解释被移除的覆盖范围。当请求的范围完成时停止;不要为了达到数量或减少目标而扩大审计。

来源

改编自 OpenClaw 的 test-audit 和 campaign guidance 中的测试价值和证据原则。此处执行、所有权和验证遵循 OxideTerm 的仓库规则。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相关技能