agentsclimarketplace

Module test design

Skill pi-ixel/Awesome-Agent-Workflow/skills/module-test-design

基于模块目录下的正式《模块详细设计说明书.md》、`.context/详细设计上下文.md` 中的 ASIS 测试覆盖现状和 TOBE 可测试性输入,生成同目录下的独立《模块测试用例设计.md》。本 skill 只输出最小充分测试用例集、覆盖矩阵、断言、建议位置和缺口;不得替 TOBE 补设计,不得拆分 AICoding 任务。From its SKILL.md

Install
npx -y skills add pi-ixel/Awesome-Agent-Workflow --skill module-test-design

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

14.2 KB, as published. Nobody here has run it

前置操作:工作流编排检查

若本 skill 是由 aaw-workflow 的工作单调用的,跳过本节,直接执行正文。

否则,在执行正文之前,先向用户发起一次二选一确认:

是否回到 aaw-workflow 工作流中执行?

  • 是,回到工作流(推荐)——进度会被跟踪和上报
  • 否,单独执行本 skill——本次执行将不纳入流程跟踪
  • 用户选“是” → 加载 aaw-workflow skill,按其流程执行(其入口意图判定会引导继续已有工作流或新建),不再单独执行本 skill 正文。
  • 用户选“否” → 继续执行本 skill 正文,之后不再提及工作流。

本节最多询问一次,不得重复打扰。

若工作单输出已存在,仍按当前要求完整执行:先读取并评估已有成果,复用仍有效的信息和已确认答案,可局部修改或整体重写,并写回原路径。

SDD 模块测试用例设计

阶段规则

本 skill 自身定义测试用例设计阶段必须遵守的规则。它位于 $module-tobe-design 之后、$module-design-gate 之前,用于把 TOBE 中已经定稿的设计目标、契约、流程、异常边界、风险和可测试性输入转化为可执行的最小充分验证集。

本 skill 不编辑正式模块详细设计说明书正文,不覆盖 ASIS 事实,不拆分 AICoding 任务。若发现 TOBE 设计不足以支撑测试设计,必须输出阻塞或待补设计问题,要求回到 TOBE;不得自行补充错误码、字段语义、状态流转、兼容策略或验收阈值。

运行方式

本 skill 应由当前主 Agent 直接执行,不要通过 SubAgent 启动;遇到需要用户或上游确认的问题,应在当前会话及时问询,避免 SubAgent 的运转模式导致问询滞后。

如果当前环境提供 ask_user 工具,影响测试范围、验收阈值、人工验证边界或回流阶段的待确认项必须优先用 ask_user 发起问询,并在 .context/详细设计上下文.md 中记录问题、回答、影响范围和处理结论;测试设计只承接已确认的测试结论、缺口或回流建议。工具不可用时,才退回当前会话问询或标记为 需前置确认。

成果物协作规则

  • 输入正式说明书:.sdd/{SR}/{AR}/{模块组名}/模块详细设计说明书.md。
  • 输入过程上下文:.sdd/{SR}/{AR}/{模块组名}/.context/详细设计上下文.md。
  • 输出测试设计:.sdd/{SR}/{AR}/{模块组名}/模块测试用例设计.md。
  • 测试设计是独立成果物,供 Gate 统一审查;不得把测试用例写回 TOBE 正式说明书。
  • 详细设计上下文只用于读取 ASIS 测试覆盖、证据索引和 TOBE 推导;测试设计正文必须自洽可读,不能要求后续执行者阅读详细设计上下文才理解用例。
  • 正式测试设计只输出验证结论,不输出目标抽取、风险分级、用例合并、候选用例淘汰等推导过程。需要过程审计时,由 Gate 结合详细设计上下文和独立门禁结果反查。

测试设计哲学

测试设计的目标不是生成测试用例大全,而是形成“最小充分验证集”:用尽量少但足够有代表性的测试,证明 TOBE 的关键设计可实现、可观察、可回归保护。

  • 从设计风险出发,不从测试类型出发。先判断哪些 TOBE 设计点如果错了会导致需求不成立、契约漂移、数据不一致、回退失效或关键风险失控。
  • 优先验证行为闭环,而不是覆盖表面字段。测试应证明输入进入模块后,关键决策、状态变化、副作用、异常收敛和可观察信号符合设计。
  • 合并验证目标,不机械展开用例。共享前置、执行路径和观察面的等价输入优先合并为一条参数化/表驱动用例;允许一条高质量用例覆盖多个 TOBE 决策、契约、状态变化或观察点。
  • 默认最小集,风险触发才扩展。每个需求点优先覆盖主路径、关键失败路径、关键边界/兼容路径;契约、数据、配置、观测、安全、性能、并发、迁移等只在 TOBE 触发时补充。
  • 不能验证的设计就是设计缺口。若无法写出输入、前置条件、预期结果、断言或观察点,应输出测试缺口并回流 TOBE / ASIS / 上游确认,不得硬凑用例。

输入

可以接受:

  • 正式 TOBE 说明书路径或内容。
  • .context/详细设计上下文.md 中的 ASIS 变更类型、ASIS 测试覆盖现状、证据索引和 TOBE 追踪矩阵,以及 .context/模块设计门禁结果.md 中的历史门禁问题。
  • 上游验收标准、用户补充的测试要求。
  • 代码仓中现有测试目录、测试框架、Fixture、Mock、构建命令和测试命令。

内部工作法

以下步骤是 LLM 的内部工作法,用于生成高质量测试设计;不得把这些步骤、候选目标、评分过程或合并推导原样写入正式《模块测试用例设计.md》。

1. 定位输入与输出

  • 定位同一模块目录下的正式说明书、.context/详细设计上下文.md 和目标测试设计文件。
  • 读取 TOBE 中的需求/AR、设计决策、契约清单、接口/数据/流程/异常/配置/日志/风险和 可测试性与验收口径。
  • 读取 ASIS 测试覆盖现状,识别可复用测试文件、测试框架、Fixture、Mock、历史回归测试和测试缺口。
  • 读取 ASIS 变更类型;纯新增场景下,“新增对象当前不存在”不视为测试覆盖缺失,但必须参考相邻测试组织、Fixture/Mock 风格和模块惯例确定新增测试位置与断言方式。
  • 如果正式说明书缺少支撑测试设计的关键行为、错误语义、状态变化、兼容策略、可观察信号或验收阈值,标记 回 TOBE 补设计,不得继续编造用例。

2. 黑盒形成最小充分验证集

内部完成以下判断,但正式成果物只输出结论:

  • 抽取验证目标:行为、契约、状态/副作用、异常/回退、兼容/回归和触发风险。
  • 判断目标优先级:P0 为不验证不能进入 AICoding;P1 为应自动化验证;P2 为可后续补充或人工验证;N/A 为被其他目标覆盖或不适用。
  • 合成最小用例集:优先选择能覆盖多个 P0/P1 目标的单元测试、模块内功能集成测试、契约测试、兼容/回归测试、数据/配置/观测或风险专项验证。
  • 记录覆盖解释:正式成果物中只写每条用例覆盖哪些目标、覆盖状态和缺口,不写内部排序和候选淘汰过程。

3. 设计测试用例

每条用例必须能独立指导后续测试实现,至少包含:

  • 用例编号、关联需求/AR、关联 TOBE 决策或契约。
  • 覆盖目标和优先级。
  • 建议测试位置或套件;无法定位时写明原因和需要补充的代码信息。
  • 前置数据、Fixture、Mock、依赖状态或环境条件。
  • 输入或触发步骤。
  • 预期结果、断言对象和精确判定条件。写清比较对象、期望值或不变量,但使用语言无关的行为表达,不输出完整断言语句、循环、fixture 构造代码或 mock 实现。
  • 断言只验证权威契约定义的排序键、优先级和状态规则;不得为了让结果“更稳定”而把未定义的次级字段写成期望行为。
  • 是否自动化;若只能人工验证,说明原因、观察步骤和通过标准。

不得只写“补充单测”“覆盖异常场景”“验证兼容性”等不可执行概要。

测试用例按测试层级分层组织(对应模板的 ### 3.x 顶层分组),本次设计能支撑的层级才建,不强求枚举:

  • 单元测试:覆盖单个函数、类、方法、规则、转换、校验和边界分支。
  • 模块内功能集成测试:覆盖同一代码模块或包内的业务流程,串联紧密相关类/服务/处理器/领域对象;模块外依赖使用 fake / mock / stub / in-memory 实现。
  • 契约测试:覆盖 REST/RPC/MQ/内部接口、DTO、JSON 字段、错误码、Topic、Path 或方法签名。
  • 兼容/回归测试:覆盖 ASIS 行为保持、旧接口、旧数据、旧配置和开关关闭行为。
  • 生产者/消费者兼容:fixture 应直接来自现有生产者的未改写输出,或由生产者在测试中生成;不得通过手工改写输入绕过真实格式、默认值或元数据差异。
  • 数据/迁移测试:覆盖表结构、字段、索引、迁移、回填、默认值和回滚。
  • 配置/开关测试:覆盖配置项、灰度、环境差异和回退行为。
  • 观测性验证:覆盖日志、指标、告警和 trace 字段。
  • 风险专项验证:覆盖安全、性能、并发、幂等、事务、重试、补偿等被 TOBE 触发的风险。
  • 端到端 / 人工验证:当单元或模块内集成无法闭合业务闭环时,按需建立。

由于测试层级已体现在顶层分组标题,单条用例条目内不再重复”测试层级”字段;每条用例用列表逐项列出优先级、覆盖目标、场景、建议位置、自动化,以及四个行为字段「前置 / 输入 / 预期 / 断言」。只有行为或隔离边界不同才拆成独立 TC;章节分组或测试层级不同本身不构成拆分理由,同一验证链在最合适的层级保留一次;同一规则的多组输入写入一个参数集合,不逐输入编号。

4. 输出结论型成果物

正式测试设计必须提供:

  • 测试范围与策略摘要:说明采用最小充分验证集,优先覆盖 P0/P1 设计风险,允许一条用例覆盖多个设计目标。
  • 最小充分测试用例集:用例正文采用列表式分层呈现——顶层按测试层级分组(### 3.x,只建本次能支撑的层级)、层级下按功能点/场景分组(#### 3.x.y)、每个用例一个条目(##### TCn)用列表逐项列出字段。单条用例写清优先级、覆盖目标、场景、建议位置、自动化,以及前置 / 输入 / 预期 / 断言四个行为字段。用例正文不得使用任何表格;测试层级不作为单条用例的字段,只作为顶层分组标题。
  • 用例总览:在用例正文之前提供按验证场景分组的树状概览(场景大类用粗体标题,下面列出该场景包含的用例编号和一句话描述),让评审者扫一眼就能判断覆盖全不全——每个场景大类下有哪些用例、有没有明显漏测的场景。
  • 覆盖矩阵:TOBE 决策/契约/风险 -> 优先级 -> 覆盖用例 -> 覆盖状态 -> 未覆盖原因。
  • 缺口与回流建议:只记录影响 Gate 判断的缺口和补齐条件。

如果某个关键 TOBE 决策、契约、失败路径或触发风险没有用例覆盖,必须写入测试缺口,并说明是回 TOBE 补设计、回 ASIS 补测试证据、还是测试设计继续补齐。

5. 更新测试设计成果物

加载 <skill-dir>/references/test-design-template.md 创建或更新测试设计文件。返工时只更新受影响章节。

阻塞规则

出现以下情况时标记测试设计阻塞或部分完成:

  • 正式 TOBE 说明书不存在,或缺少关键需求点、契约、流程、异常边界、验收口径。
  • TOBE 中存在影响测试设计的待确认项或阻塞项。
  • ASIS 测试覆盖现状缺失,且无法判断现有测试框架、测试目录或复用方式;纯新增场景下,仅“新增对象没有既有测试”不构成阻塞。
  • 关键风险没有 TOBE 缓解设计或可观察信号,导致无法设计有效验证。
  • 用户或上游验收标准互相矛盾。

阻塞输出必须包含:阻塞原因、受影响的覆盖目标、需要回补的 TOBE/ASIS/上游输入、当前可继续设计的独立范围、不得定稿的测试用例、对 Gate 的影响。

质量标准

结束前确认:

  • 未替 TOBE 补设计,所有覆盖目标都能反查正式说明书中的需求、契约、流程、异常、风险或可测试性输入。
  • 输出的是最小充分验证集,不是测试类型枚举或测试用例大全;可合并目标已合并,P0/P1 优先于 P2。
  • 测试设计没有发明 TOBE 未定义的私有 helper、临时类型或文件拆分作为测试契约;内部实现可通过模块行为验证时,不为其单独建立契约用例。
  • 断言条件精确但保持语言无关,没有输出可直接粘贴的断言代码、循环、fixture 或 mock 实现。
  • 主路径、关键失败路径、关键边界/兼容路径和触发风险均已覆盖,或明确说明不适用/阻塞原因。
  • 生产者/消费者兼容用例使用真实生产输出,没有用近似 fixture 替代契约验证。
  • 每条用例都有输入、前置条件、预期结果、断言方式和建议位置。
  • 纯新增场景下,已说明新增测试沿用的相邻测试组织、Fixture/Mock 风格或模块惯例。
  • 测试设计不包含 AICoding 任务拆分。
  • 测试缺口已显性化,并能指导回 TOBE、回 ASIS 或继续测试设计。

流程结束 / 工作流衔接

本 skill 产出同一模块目录下的独立《模块测试用例设计.md》(含最小充分用例集、覆盖矩阵、缺口回流),交付给 $module-design-gate。Gate 读取测试设计的覆盖目标、用例、断言、覆盖矩阵和缺口做验证闭环性判断。

引用文件

  • 测试设计模板:<skill-dir>/references/test-design-template.md

完成后回调

若不处于 aaw-workflow 编排中,请忽略此节。

本 skill 由 aaw-workflow 编排调用。交付件生成后:

  1. 返回 aaw-workflow 流程
  2. 执行 aaw next --sr <SR号> --json 查看进度
  3. 若返回 deliverables_exist: true → 直接 aaw done --sr <SR> <id>
  4. 否则 → 停止;是否放行下一步由 aaw-workflow 的 user_confirm 策略控制

不记得 SR 号 → 先 aaw status --json

Keep looking

Skills are one crate of 628,853. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.