第二章 · 红绿重构:把循环跑顺


第二章 · 红绿重构:把循环跑顺

章节摘要:本章跟着灯塔小组把循环从"最短一轮"练成稳定节律。主线是一句话从需求到红灯、从红灯到绿灯、从绿灯到一次像样的重构;沿途用购物车拆解红灯的切法,用密码校验器做三轮完整演练,最后用三角法和参数化回答"测试从什么时候开始变多"。读完你应能独立控制循环的节拍,不再出现红灯挂半天或绿灯一次跨一小时。

一条主线

上一章末尾,灯塔小组的循环只转了最简一轮。本章从周二的晨会开始:产品经理丢来一句"会员密码得有点强度要求"。把这句人话变成代码,中间隔着三次循环——第一轮测"长度太短要拒绝",第二轮测"缺大写字母要拒绝",第三轮测"三类齐全给高分"。每轮都是完整的红、绿、重构,三轮下来,一个密码强度校验器凭空长出来,而且每行实现背后都站着一条曾经红过的测试。这条主线就是本章要带你走的路。

沿途站点

  • 红:把需求翻译成会失败的测试——红灯是循环的起点也是难点。这一站讲清楚"一条测试只测一件事"怎么切、断言写多细、测试名怎么当文档用。
  • 绿与重构:最小实现和整理时刻——绿灯阶段最难的是忍住不写多。这一站给"最小"立标准,并给出重构手法清单,让绿了之后的那几分钟有章可循。
  • 完整演练:密码校验器的三轮循环——把前两站合成完整节律,逐轮给出红绿重构的完整代码与提交节奏。
  • 三角法、参数化与三定律:让用例长大——测试的数量什么时候涨、怎么涨。三角法逼出泛化实现,参数化收编重复用例,三定律守着整条节律的底线。

读完本章,你手里会多两样东西:一台校验器(连同它的测试集与提交历史),一套可迁移的节律口诀。前者是练习的产出,后者才是目的——把它带去任何项目都成立。

拐点与结论

本章的认知转折藏在"绿"这个字里。多数人以为绿灯是写实现的阶段,其实它是克制训练:只写让当前测试通过的代码,多写的那半行都是未经测试批准的。第二个转折在重构段——重构不是"有空再做",而是节律的固定拍,绿了就做、做完再进下一轮。中间还有一个容易被忽略的转折:测试名与断言是写给三个月后的自己的信,红灯阶段的每个措辞决定,都在决定未来排障时的翻译成本。结论:循环快不快,取决于每轮切得多薄;节律稳不稳,取决于重构敢不敢每轮都做;而这套节律能不能持续,取决于测试写得像不像人话。

读完你应该

  • 能把一句口语需求切成若干条单行为测试,每条独立可红;
  • 能为每条红灯写出最小实现,并说清为什么不再多写;
  • 能在绿灯后按手法清单完成至少三种重构且测试保持全绿;
  • 能用三角法从硬编码走向泛化,用参数化收编重复测试;
  • 能复述三定律并指出自己最近的违规瞬间;
  • 能给同事的新测试提切薄建议,说清超厚切片的代价。

先决条件与本章配套

本章默认你已跑通第 1 章的最短循环:pytest 装好、测试与实现分目录、能读懂红灯输出。演练代码全部围绕密码校验器与购物车展开,不依赖任何外部服务,普通笔记本即可全程毫秒级运行。节拍建议:每节的演练别只读,亲手敲一遍——特别是 2.3 的三轮演练,它是全章的合成品,跳过它等于只看了分解动作。

下一章的接力

循环跑顺了,新问题马上出现:测试越写越多,怎么让它们不互相污染、不重复劳动?第 3 章补齐测试的骨架功夫——断言的姿势、fixture 的装配与拆卸、测试替身的边界,让循环提速时地基不晃。

作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U