闭卷说清“测试金字塔与风险组合”的对象、规则、制品和一个失败反例。
软件工程 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷说清“TDD红绿重构的微循环”的对象、规则、制品和一个失败反例。
闭卷说清“测试替身与协作边界”的对象、规则、制品和一个失败反例。
闭卷说清“契约测试与消费者驱动”的对象、规则、制品和一个失败反例。
闭卷说清“性质测试与变异测试”的对象、规则、制品和一个失败反例。
闭卷说清“测试数据、时间与并发”的对象、规则、制品和一个失败反例。
闭卷说清“测试覆盖率的正确用法”的对象、规则、制品和一个失败反例。
核心:先写会因缺失行为而失败的例子,再做最小实现,最后在绿灯保护下改结构;规则:红灯必须因预期原因失败;绿灯只证明当前例子,仍需补边界与性质;应能围绕“先断言过期优惠不可使用,看到红灯,再实现日期判断,最后提取Clock消除测试时钟依赖”交付可复核制品。
核心:测试层级按反馈速度、隔离度和真实度互补,不追求固定比例;规则:每个重大风险至少有最便宜且可信的自动检查,重复覆盖要说明价值;应能围绕“价格纯函数用大量单元例,数据库映射用集成测试,购买主路径用少量端到端”交付可复核制品。
核心:服务双方对可见请求响应达成自动契约,可比全链路测试更快发现不兼容;规则:契约不能替代业务端到端;它只证明接口形状和约定样例;应能围绕“订单消费者发布它需要的字段与错误语义,支付提供者CI逐一验证”交付可复核制品。
核心:stub提供输入,spy记录交互,fake实现简化行为;mock只适合验证重要协议;规则:替身围绕拥有方契约,过度模拟实现细节会让重构无谓破坏测试;应能围绕“支付端口用fake模拟成功和拒绝,用spy确认幂等键只发送一次,不模拟内部每一行调用”交付可复核制品。
核心:随机、时间和并发会制造不可复现失败,需注入时钟、种子和调度证据;规则:失败报告必须带版本、输入、种子、时间、环境和关键事件序列;应能围绕“冻结时钟测试月末账期,保存随机种子重放失败,使用屏障让两个请求同时扣库存”交付可复核制品。
核心:性质测试生成输入检验不变量,变异测试故意改实现检验测试是否敏感;规则:示例说明已知场景,性质扩大输入空间;无法杀死的变异要判断等价或补测试;应能围绕“金额拆分性质要求各项非负且总和守恒;把加号变减号后测试必须杀死变异”交付可复核制品。
核心:覆盖率发现未执行区域,却不证明断言质量和需求完整;规则:覆盖率是调查信号而非质量目标;禁止为数字写无意义断言;应能围绕“分支覆盖显示退款异常分支未走到,补例后再用变异测试检验断言”交付可复核制品。