第5章学习笔记:测试策略与TDD
课程笔记从风险和反馈速度设计测试组合,用红—绿—重构驱动可验证设计。
关联:章节 第5章 测试策略与TDD
第5章笔记:测试策略与TDD
本章目标
从风险和反馈速度设计测试组合,用红—绿—重构驱动可验证设计。 本章不是术语表,而是一条从问题到证据的工作链。先确认用户或团队要保护的结果,再把决定写进可版本化制品,最后由测试、指标、反例或演练证明它在边界与故障下仍成立。
七节联系
- 测试金字塔与风险组合:测试层级按反馈速度、隔离度和真实度互补,不追求固定比例;关键规则是每个重大风险至少有最便宜且可信的自动检查,重复覆盖要说明价值。
- TDD红绿重构的微循环:先写会因缺失行为而失败的例子,再做最小实现,最后在绿灯保护下改结构;关键规则是红灯必须因预期原因失败;绿灯只证明当前例子,仍需补边界与性质。
- 测试替身与协作边界:stub提供输入,spy记录交互,fake实现简化行为;mock只适合验证重要协议;关键规则是替身围绕拥有方契约,过度模拟实现细节会让重构无谓破坏测试。
- 契约测试与消费者驱动:服务双方对可见请求响应达成自动契约,可比全链路测试更快发现不兼容;关键规则是契约不能替代业务端到端;它只证明接口形状和约定样例。
- 性质测试与变异测试:性质测试生成输入检验不变量,变异测试故意改实现检验测试是否敏感;关键规则是示例说明已知场景,性质扩大输入空间;无法杀死的变异要判断等价或补测试。
- 测试数据、时间与并发:随机、时间和并发会制造不可复现失败,需注入时钟、种子和调度证据;关键规则是失败报告必须带版本、输入、种子、时间、环境和关键事件序列。
- 测试覆盖率的正确用法:覆盖率发现未执行区域,却不证明断言质量和需求完整;关键规则是覆盖率是调查信号而非质量目标;禁止为数字写无意义断言。
学习时给七节画依赖箭头:前一节产出的对象、规则或制品如何成为后一节输入?若某节可以被随意挪走而完全不影响上下文,说明你仍在孤立背诵,需要用一个贯穿案例重新连接。
章内练习
- 用“价格纯函数用大量单元例,数据库映射用集成测试,购买主路径用少量端到端”重做正常、边界和故障三类验收,产出可由同伴复核的制品。
- 用“先断言过期优惠不可使用,看到红灯,再实现日期判断,最后提取Clock消除测试时钟依赖”重做正常、边界和故障三类验收,产出可由同伴复核的制品。
- 用“支付端口用fake模拟成功和拒绝,用spy确认幂等键只发送一次,不模拟内部每一行调用”重做正常、边界和故障三类验收,产出可由同伴复核的制品。
- 用“订单消费者发布它需要的字段与错误语义,支付提供者CI逐一验证”重做正常、边界和故障三类验收,产出可由同伴复核的制品。
每次练习都保留背景、输入、决定、输出、验证、失败处置和负责人。只写结论不算完成;只贴截图也不算证据。完成后交换给同伴,只允许对方根据制品复现你的判断,无法复现处就是下一轮修改入口。
错误复盘
把错题标成目标误判、边界遗漏、责任空缺、契约不清、验证不足或恢复缺失。不要写“粗心”。一周后更换领域重做一道情境题;能在新名词下保持同一证据链,才说明方法已经迁移。阶段卷使用独立题池,不能靠记住随课题答案过关。