用途
该技能用于在设计和编写测试、规划模块测试策略时提供指导,覆盖单元测试、集成测试和端到端测试的分层策略。它帮助从模块的公开 API 表面出发,系统性地推导测试用例,并给出执行、诊断和 CI 分层的规范。
主要能力
测试分层策略
单元测试
- 目的:在隔离环境中验证单个函数与不变量。
- 数据驱动:使用参数化表格覆盖正常路径、边界、错误和边缘情况。
- 基于属性:对必须对所有输入成立的不变量进行模糊测试(如幂等性、排序稳定性、序列化往返)。
- 从模块公开 API 表面推导用例:输入类型/约束、输出形状、错误模式、不变量。
集成 / 契约测试
- 目的:验证组件之间以及与外部服务之间的交互。
- API 信封:请求/响应形状、状态码、内容类型、分页。
- 错误契约:错误码、错误形状、限流、重试。
- 鉴权与作用域:令牌校验、基于角色的访问、租户隔离。
- 最终一致性:在有界时间内验证收敛;使用轮询而非 sleep。
- 尽可能在测试间复用鉴权状态,避免重复登录流程。
端到端测试
- 目的:通过完整技术栈验证真实用户工作流。
- 不使用 mock;使用真实服务、数据库和 API。
- 只覆盖正常路径工作流;边缘情况留给更低层。
- 状态容忍:绝不假设干净状态;容忍并配合已有状态。
- 幂等:可重复运行,无需在运行间清理。
- 面向流程:端到端验证真实数据路径,而非孤立断言。
硬性规则
- 绝不编造签名、源码位置或行号。只引用已从代码库中读到的内容。
- 不伪造测试夹具。测试数据从仓库中实际的 schema、类型或种子数据推导。
- 不在产品代码中加入测试专用 hack。不得有
if (process.env.TEST)分支、测试专用导出或测试后门。 - 端到端测试不得依赖干净状态。测试必须容忍已有数据、先前测试运行和共享环境。
执行指导
预检(端到端测试前)
- 验证目标环境可达(健康端点、ping)。
- 确认所需服务正在运行(数据库、API、鉴权提供方)。
- 验证测试用户/凭据存在且可用。
- 检查可能导致误失败的遗留状态;记录它,但不因此失败。
确定性夹具
- 对生成数据使用带种子的随机性(带种子的 faker、确定性 UUID)。
- 夹具应自包含;避免跨测试的夹具依赖。
- 优先使用工厂函数而非共享可变夹具对象。
异步处理
- 使用有界超时和退避进行轮询;绝不使用固定 sleep/waitForTimeout。
- 为每个操作设置显式超时;超时时快速失败并给出描述性消息。
- 限制重试次数(如最多 3 次重试,指数退避)。
- 使用框架原生等待(Playwright expect、异步断言)而非手动循环。
Flake 处理
- 每次测试运行允许一次基础设施重试;若两次失败,则不是 flake。
- 重试失败时收集诊断信息:截图、网络日志、服务健康、时间戳。
- 在尝试修复前对失败进行分类(flaky / 过时 / bug)。
- 绝不将任意延迟或重试循环作为 flake 的“修复”。
API 表面发现
在生成测试用例之前:
- 阅读模块源码以枚举导出/公开函数。
- 从用户请求和已检查的代码上下文确认范围;若有歧义,说明假设并保守推进。
- 对每个函数:输入类型/约束、输出形状、错误模式、不变量。
- 探查函数之间的状态依赖和顺序约束。
输出格式
使用 markdown。产出三个部分:
- 测试策略 —— 每层(单元/集成/端到端)一条要点,列出函数/流程及其覆盖类型。
- 测试矩阵 —— 每个函数一张表:列 ID | 类别 | 名称 | 输入 | 预期。用例 ID 方案:
{CATEGORY}-{NN}(HP、BV、ERR、EDGE)。只追加;绝不重新编号。 - 实施计划 —— 有序步骤:夹具、单元测试、集成测试、端到端流程、运行命令。
CI 指导
快速 PR 冒烟通道
- 每个 PR 运行单元测试 + lint + 类型检查。
- 覆盖关键契约的集成测试子集。
- 目标:5 分钟以内。
夜间全量通道
- 完整单元 + 集成 + 端到端套件,使用更高的基于属性迭代次数。标记那些重试后通过但初次失败的测试。
使用方式
工作流如下:
- 规格或代码定义模块行为(类型、约束、API 表面)。
- 智能体(使用此技能)产出测试策略、矩阵和实施计划。
- test-writer 智能体将计划翻译为目标语言惯用法的可运行代码。
- 开发者实现代码以通过测试。
- 若实现揭示缺失用例,先提出;仅在明确要求时追加到规格。
适用场景
- 为模块设计测试策略时。
- 编写测试用例时。
- 规划单元、集成和端到端测试分层时。
限制
- 该技能本身不生成可运行代码,需配合 test-writer 智能体。
- 不编造签名、源码位置或行号,只引用已读代码。
- 不伪造测试夹具,测试数据须来自实际 schema、类型或种子数据。
- 不在产品代码中加入测试专用分支或后门。
- 端到端测试不得依赖干净状态。
- 关于具体收费、价格、平台支持等信息,资料中暂未提供。