mcpField
W
writing-tests

writing-tests

github.com/iliaal测试与质量45166 次安装6 天前更新
代码仓库

关于 writing-tests

用于设计和运行测试的技能,旨在证明所需行为并捕捉回归。它指导开发者了解项目工具、设计有区分力的测试用例,并核验测试结果。

主要功能

  1. 01了解项目测试工具
  2. 02将需求映射为测试用例
  3. 03按纵向切片构建测试
  4. 04优先使用真实对象与文件
  5. 05覆盖边界与失败路径
  6. 06核验测试结果与结论

适用场景

  1. 01为指定行为规划测试
  2. 02添加缺陷复现与回归测试
  3. 03审查断言较弱的测试

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/iliaal/ai-skills --skill writing-tests

安装后在 Claude Code 中输入/writing-tests确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

SPEC.md
references/
anti-patterns-extended.md
false-pass-oracle-traps.md
generated-corpus-techniques.md
isolation-and-sandbox-traps.md
oracle-smells.md
rationalization-table.md
regression-proof.md
test-completion.md
test-design.md
test-smells.md

详细介绍

编写测试

编写测试,证明所请求的行为,并在该行为失效时失败。遵循用户设定的范围和仓库的实际约定;本技能不授权实现功能、执行外部操作或更改验收标准。

流程

  1. 编写测试前,先了解仓库的测试运行器、固定版本的包装器、配置、相邻测试和 CI 命令。了解针对性测试和完整测试套件的运行命令。使用项目工具,而非全局默认工具;保持已跟踪脚本可移植,并且仅在外层调用时使用个人包装器。
  2. 根据用户需求、已实现的行为以及交接时准备声明的内容设计测试用例。将每项验收标准对应到一个有区分力的用例,确保合理但错误的实现会导致测试失败。按可观察行为命名测试;每个测试只验证一种行为,并让测试夹具在待测维度上具有对抗性。
  3. 对于有可触达测试切入点的错误修复,先编写复现用例,观察到预期的失败,再应用最小修复并观察测试通过。如果无法触发实际问题,请遵循 test-completion.md 中关于缺失切入点的规则。对于新功能,按选定的测试策略分阶段实施:默认采用先实现后测试(先完成一个小的实现切片,再编写对应测试);如果明确选择测试优先,则先编写一个测试,再编写能使其通过的最小实现。逐个切片重复;先写完所有测试、再写完所有实现的横向切分是反模式,会导致测试验证凭空设想的行为。测试通过后再重构。绝不要为了让实现通过而修改规范、断言、测试夹具、快照或预期输出。
  4. 优先使用真实的内部对象、真实的临时文件和真实的测试数据库。只在最外层自有适配器处模拟外部边界;框架建议使用由框架维护的伪对象时,可以采用。模拟之前,先检查真实约定和副作用。
  5. 断言对使用者可见的结果,而非私有结构、模拟调用或框架行为。纳入相关的边界、无效输入、并发和失败场景。如果错误处理会捕获、记录、替换错误或回滚,请同时断言其可观察结果和错误是否可见。
  6. 通过唯一的运行标识构造禁止发生的违规情形,并观察对应的断言确实失败,以证明缺失或隔离类断言有效。评估前,确认控制变更确已生效且构建已完成。移除控制变更、还原产物,并确认测试通过。
  7. 编辑期间运行范围最小的检查,并在交接前运行适用的完整检查。检查通过和已执行的测试数量;空测试套件或被跳过的测试不能作为正面证据。

选择所需的细节

  • 选择用例、夹具结构、模拟边界,或平衡单元/集成/E2E 测试时,请阅读 test-design.md。
  • 编写 Bug 复现用例、变异控制,或断言某些事情绝不能发生时,请阅读 regression-proof.md。
  • 审查生成的测试、更改快照、测试异步时序,或发现模拟对象取代实际行为时,请阅读 test-smells.md 以及 anti-patterns-extended.md 中适用的修复阶梯。要审计现有测试能否检测回归,请使用 ia-test-audit。
  • 遇到薄弱的聚合断言、空洞断言、竞态复现,或可能无法触达测试对象的控制时,请阅读 oracle-smells.md。适用这些失败模式时,它会指向更详细的目录。
  • 涉及容器状态、沙箱、超时、环境迁移,或进程/流隔离时,请阅读 isolation-and-sandbox-traps.md。
  • 涉及封装器、过滤器、一致性预言机、跳过条件,或容易误导的绿色摘要时,请阅读 false-pass-oracle-traps.md。
  • 当字节等价或生成的语料库是契约要求时,请阅读 generated-corpus-techniques.md;针对不同的值形状和嵌套结构,与独立实现进行比较。
  • 陷入困境、考虑跳过测试,或准备移交测试工作时,请阅读 test-completion.md。在提出反对必要测试的理由前,请阅读 rationalization-table.md。

验证并报告

验证公开行为和边缘路径、测试之间的独立性、已审查的预期变更,以及每项声称的能力。设想移除一个守卫条件、翻转一个分支,或删除一个副作用,并确认测试能够检测到。优先选择足够快、可频繁运行的单元测试套件(用时不到 30 秒)。

报告测试覆盖的内容、实际结果、失败项和遗漏项。区分测试夹具与实际验证。遵循框架约定时,请使用适用的 PHP/Laravel 或 React/TypeScript 技能;此通用技能不能取代它们。

评论

支持 Markdown