SuperAPI AI 工具集

testing-best-practices

测试与质量

查看项目

更新于 10-15 14:28

技能介绍

用途

该技能用于在设计和编写测试、规划模块测试策略时提供指导,覆盖单元测试、集成测试和端到端测试的分层策略。它帮助从模块的公开 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。产出三个部分:

  1. 测试策略 —— 每层(单元/集成/端到端)一条要点,列出函数/流程及其覆盖类型。
  2. 测试矩阵 —— 每个函数一张表:列 ID | 类别 | 名称 | 输入 | 预期。用例 ID 方案:{CATEGORY}-{NN}(HP、BV、ERR、EDGE)。只追加;绝不重新编号。
  3. 实施计划 —— 有序步骤:夹具、单元测试、集成测试、端到端流程、运行命令。

CI 指导

快速 PR 冒烟通道

  • 每个 PR 运行单元测试 + lint + 类型检查。
  • 覆盖关键契约的集成测试子集。
  • 目标:5 分钟以内。

夜间全量通道

  • 完整单元 + 集成 + 端到端套件,使用更高的基于属性迭代次数。标记那些重试后通过但初次失败的测试。

使用方式

工作流如下:

  1. 规格或代码定义模块行为(类型、约束、API 表面)。
  2. 智能体(使用此技能)产出测试策略、矩阵和实施计划。
  3. test-writer 智能体将计划翻译为目标语言惯用法的可运行代码。
  4. 开发者实现代码以通过测试。
  5. 若实现揭示缺失用例,先提出;仅在明确要求时追加到规格。

适用场景

  • 为模块设计测试策略时。
  • 编写测试用例时。
  • 规划单元、集成和端到端测试分层时。

限制

  • 该技能本身不生成可运行代码,需配合 test-writer 智能体。
  • 不编造签名、源码位置或行号,只引用已读代码。
  • 不伪造测试夹具,测试数据须来自实际 schema、类型或种子数据。
  • 不在产品代码中加入测试专用分支或后门。
  • 端到端测试不得依赖干净状态。
  • 关于具体收费、价格、平台支持等信息,资料中暂未提供。