首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

使用 AI 代理测试分布式系统

摘要

Distributed Systems Testing Skills Two skills for AI coding agents that design and run claim-driven tests for distributed and stateful systems。

and the The plan that
2026-05-20 1 阅读 约6分钟阅读 shenli3514
分享:
字号:
分布式系统测试技能 AI 编码代理的两项技能,用于为分布式和有状态系统设计和运行声明驱动的测试。他们共同制定了结构化的 Markdown 测试计划和调查结果报告,其中包含 9 种状态的判断以及明确的 SUT/线束/检查器/环境责任分类。审阅者阅读这两个工件并决定是否发布;无需重新运行其他任何操作。可与 Claude Code、Codex、Copilot CLI、Cursor、Gemini 或任何读取 Markdown 并运行 shell 的代理配合使用。技能是普通的 SKILL.md 文件。代理执行它们;计划和调查结果报告是输出。一项技能是设计计划。另一个运行它。计划从产品的声明开始,生成与这些声明相关的假设,并编写以每个试图伪造的声明命名的场景。对于一致性关键场景,每个场景还将抽象模型(寄存器 | 队列 | 日志 | 锁定 | 租赁 | 分类帐 | …)绑定到操作历史模式、命名检查器和具有可观察着陆证据的复仇者。该计划以覆盖充分性论证和保守的信心声明结束。为什么测试分布式和有状态系统的默认设置 - 编写一些集成测试并称之为完成 - 找到实际破坏生产中这些系统的一小部分错误:部分网络分区、非确定性并发、崩溃恢复、升级/回滚、重放下的幂等性、时间敏感的排序。这些技能强制执行固执己见的工作流程,该工作流程取自该领域来之不易的知识:声明驱动,而不是测试驱动。从产品的承诺开始。每种情况都会在一种过错下伪造一项索赔。以其声明命名的测试比以其设置命名的测试更难削弱。覆盖范围的充分性是可交付成果。该计划以一个论点结束,即所选择的场景足以交付,并列出了尚未验证的内容的诚实列表。重用 SUT 自己的工具箱。执行技能在发明任何新东西之前会发现现有的测试、运行手册和故障注入脚手架。模型+历史+检查器,不仅仅是混乱。为了安全性、持久性、幂等性、隔离、排序或成员身份声明,每个场景都声明一个抽象模型、一个操作历史模式、一个命名检查器(线性化、可序列化、会话一致性、无丢失确认、恰好一次……),以及如何处理不明确的结果(超时、未知提交、重试)。混沌加上模型和检查器,而不是单独的混沌。没有沉默的经过。每个 PASS 都会引用预言机执行证据以及证明故障实际触发的信号。判决来自 9 个州的集合,因此“混乱脚本运行干净”不能被解读为“索赔在故障中幸存下来”。每个 FAIL 都带有 SUT/线束/检查器/环境责任标签,以便复制者到达正确的队列。端到端,这两种技能会产生什么:testing-plans/.md ← §0–§9 的计划(见下文) test-sessions// ├── session-log.md ← 时间轴 + 工具箱 + env 探针 ├── 日志/ ← 每个场景 stdout/stderr ├── 指标/ ← 指标快照 ├── 工件/ ←短暂的利用、转储 └── discoverys/ ├── .md ← 每个场景的判决(写为运行过程) └── report.md ← 摘要 + 充分性 + 置信度增量 计划结构(审阅者可以阅读此内容并决定是否在不重新运行测试的情况下交付): 0. 架构摘要 - 实际存在的系统 1. 范围 1b。受测试的权利要求 — 书脊 1c。发现缺失的声明 — 文档 ↔ 代码漂移 2. SUT 模型 3. 现有测试清单 — 已涵盖的内容 4. 故障模式假设 — 与声明 ID 相关 5. 覆盖矩阵 — 声明 × 假设 6. 技术选择 — 来自目录 6b.环境要求 7. 场景 — 每个场景都以声明命名,带有目标测试文件 + 骨架 7.M 模型/历史/ — 当场景伪造检查器纪律{安全性、持久性、幂等性、隔离、排序、成员资格}中的声明时,这是强制性的:测试中的模型、操作历史模式、命名检查器、复仇者 + 着陆证据、不明确结果处理、减少计划(SUT/harness/checker/env 责任)7b。覆盖充分性论证——为什么这些测试就足够了 7c。剩余不确定性——什么尚未得到验证,以及为什么可以 7d。置信度声明 — 审阅者的结论 8. 该计划不涵盖什么 9. 开放性问题/后续措施 示例 §7.M 块(计划摘录) ### 场景 S3:线性化_附加_下_分区 - 如果失败则伪造:C1(每个已确认的附加都是持久且可线性化的),C5(领导者选举在 5 秒内完成) - 工作负载:8 个客户端,70% 附加/ 30% 读取,5 分钟,密钥倾斜 zipf - 故障:非对称分区在 T+60 秒内将当前领导者隔离 30 秒 - Oracle:通过 Porcupine 对每个密钥历史记录实现线性化 §7.M(模型/历史/检查器规则) - 测试中的模型:日志 - 操作历史记录:默认 11 字段模式(操作 ID、进程 ID、调用/完成 ts、操作类型、键、输入、输出、错误、超时马
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱