用途:该技能回答“测试该喂什么输入、该断言什么、该 mock 什么”,不覆盖红—绿—重构的 TDD 节奏。核心原则是测试守护用户/调用方可观察的行为契约,而非实现细节或覆盖率数字。
主要能力:先评估 ROI——自身逻辑复杂(算法、纯计算、领域模型/状态机、分支密集的策略校验)适合单元测试;依赖装配(CRUD 与 A.get→convert→B.save 的胶水)适合集成测试。再从契约而非源码分支写出“当…时应…”的行为清单,并用等价类划分、边界值(阈值±1)、判定表、状态迁移(合法/非法/幂等/重复)以及脏输入(空、null、超大、结构损坏、类型错误)选取代表点。断言只针对返回值/抛出错误、可观察状态、副作用边界三类,要求窄而硬、期望值手写。Mock 只替换网络/DB/文件/时钟/随机数等外部协作者,数量控制在 2–3 个,优先 Fake 而非 Mock 框架。最后做变异检查:破坏被守护的生产代码,测试必须变红,否则视为形式主义并重写。
使用方式:调用时先声明“Using designing-test-cases to …”,然后按步骤创建 todo 依次执行:判断是否值得测试、写行为清单、选代表点、写断言、决定 mock、做变异检查、扫描合理化借口与红旗。若只想运行测试或读失败信息应交给 test-runner;只遵循测试先行节奏应交给 TDD 技能。
适用场景:为代码新增或修改单元/集成测试、审查他人测试是否有效、决定是否值得测试、在覆盖率压力下避免写假测试。限制:不涵盖 TDD 流程;不适用于仅运行测试或调试;未提供具体语言、框架适配和自动执行方式。