Tdd

通过用户可观察的公开 seam 严格执行一个失败测试、最小实现、同一测试转绿的纵向开发循环。

fufankeji 0056d4e 4 files · 5.5 KB Updated

File contents

测试驱动开发

本 Skill 改造自 mattpocock/skillstdd,固定上游提交为 068b6e0c62393147daf03530149cdce209c93da8。测试和 Mock 指南见同目录 tests.mdmocking.md,许可证见 LICENSE.txt

开始前

  1. 读取 AGENTS.mdCONTEXT.md、相关 ADR 和 .scratch/<slug>/spec.md
  2. 规格必须为 ready-for-agent,并明确公开测试 seam。没有规格或 seam 未确认时停止开发。
  3. 查看现有测试,优先沿用最高层 seam:浏览器公开行为、CLI 输出或公开 API。
  4. 期望值必须来自规格中的独立字面量或已知正确示例,不得复制实现算法计算期望。

Red → Green 循环

每次只做一个纵切:

  1. 写一个最小测试,只验证一项用户可观察行为。
  2. 立即运行该测试并保留真实非零退出结果。失败必须因为产品能力缺失,不能通过写错选择器、破坏依赖或关闭服务制造。
  3. 只实现让当前测试通过所需的最少代码,不顺手加入下一项功能。
  4. 再次运行同一个测试,必须真实返回零。
  5. 运行相邻回归测试,确认没有破坏已确认视觉和交互。
  6. 完成本轮后才进入下一个纵切。禁止先批量写测试再批量实现。

每轮记录:测试 seam、Red 命令与关键失败、Green 命令与结果、修改文件。可以写入 output/dev-trace/,但记录不能代替真实命令。

Seam 判断表

  • 用户在网页上点击、拖拽或下载:使用 Playwright 浏览器 seam。
  • 用户运行命令得到文件或文本:使用 CLI seam。
  • 外部调用方使用函数或接口:使用公开 API seam。
  • 只能通过私有方法或内部调用次数验证:seam 选择错误,应回到更高层公开边界。

测试约束

  • 只 Mock 外部 API、数据库、时间、随机性等系统边界;不要 Mock 自己控制的内部模块。
  • 不查询旁路状态来替代公开行为验证。
  • 不做与实现同构的计算或快照堆积。
  • Red 状态不重构;全绿后再单独评审结构。
  • 最终使用 DeepSeek Harness 的 Shell 工具执行项目构建和浏览器验收;它们不能替代每一轮真实 Red/Green。

完成条件

  • 至少一组同测试的真实 Red 与 Green。
  • 规格中的用户故事由公开 seam 覆盖。
  • 完整回归、构建和浏览器验收通过,或如实列出未通过项。

fufankeji/deepseek-harness-studio/tree/main/apps/desktop/resources/preset-square/presets/fufan-ai-webapp/preset/skills/tdd commit 0056d4e859

Frequently asked questions

npx skillmds@latest add fufankeji/tdd