用途:这是一个测试决策类技能,帮助开发者判断自动化测试证据是否需要新增、修改、保留、复用或删除,并为指定缺陷选择能检测它的最低测试层级,最后证明测试对缺陷的敏感性。
主要能力与流程:
- 第一步命名证据:说明必需行为、可接受来源(需求、验收标准、契约、已知缺陷或记录观察)、一个合理缺陷及其造成的实际危害。若无可接受来源、具名缺陷或实际危害,则不添加自动化测试。投机性测试不保护任何当前需求,不应添加;同义反复测试因期望值源自被测实现本身也应避免。
- 第二步决定证据:先检查现有可靠测试、类型检查、静态检查或契约检查是否已在正常验证命令或 CI 中检测到该缺陷,若有则复用。缺陷修复时先找可靠证据未失败的原因;若守卫存在但被跳过或未纳入 CI,应修复其执行而非复制。只在提供独特保护且值得执行、维护与上下文成本时新增或保留测试。测试层级从低到高选择:单元测试(单一规则或模块可证明行为)、集成测试(需应用各部分协作)、端到端测试(需完整应用且低层级无法证明关键行为)。删除或合并测试前须命名其断言实际检查内容及可接受来源,说明仍能检测其缺陷的证据,或解释为何不再需要自动化保护。测试在当前代码失败时应先排查产品缺陷;仅在确认无生产调用者或契约需要后,才移除仅供测试使用的生产导出、开关或包装。实时验证只证明当前结果,不提供未来自动化保护。
- 第三步塑造测试:使用真实调用者在所选层级使用的现有稳定生产接口,不为测试暴露私有代码或新增生产接口;优先断言可观察输出与结果状态,仅在交互本身是必需行为时断言调用、顺序或交互;协作者尽量用真实且快速可预测的实现,仅在外部、不可控、破坏性或昂贵边界使用测试替身;按保护同一行为且因同一原因失败来分组断言;竞争条件须用事件、屏障或队列强制交错并证明就绪,不能依赖睡眠或调度时序;不添加变更检测器式测试。
- 第四步证明敏感性:每个新增、保留或复用的测试都必须对具名缺陷失败、对正确行为通过。使用最便宜的合法证明:自然红(对缺陷运行并要求预期断言失败,再对正确实现运行并要求通过)、定向变异(行为已正常或守卫不明确时,引入一个具名缺陷小实例并要求聚焦测试失败)、移除或合并(需保留保护时,引入被移除或弱化断言所守卫的每个不同实质缺陷并要求保留证据失败)。仅当预期测试运行且具名缺陷导致其断言失败才算失败。临时变异流程:先在原实现上运行最窄相关测试确认通过、仅改被守卫行为、确认变异存在且可编译、重跑同一测试要求预期失败、仅恢复临时变异并重跑要求通过。
- 第五步报告决策:返回测试证据,包括决策(add/change/retain/reuse existing/remove/no automated test)、行为、来源、缺陷、危害、现有证据、层级、证明方式、验证命令与结果、实时跟进及需持久记录时的路径与原因。
适用场景:适用于代码变更、缺陷修复及测试评审时决定测试证据的取舍与层级。限制:所有规则均来自给定资料,具体安装与调用方式暂未提供。