3.2 集成测试策略:大爆炸还是增量三式


本节摘要:把零件拼起来是有顺序的——大爆炸一把梭,增量式则从某端逐级往上垒。本节展开大爆炸、自顶向下、自底向上、三明治四种策略的骨骼、危险区与适用场景,并给一张决策矩阵帮你选。

拼装本身也是一种决策

集成测试要回答"先拼哪两头、用什么挡缺口的模块"。没人规定必须一次把模块全接上才测,接的顺序决定了你能多早发现问题、以及缺了某个模块时用什么替身顶住。四种经典策略分别代表四种不同的拼装哲学,挑选的依据不是"哪个高大上",而是你系统的依赖长什么样。

大爆炸:一把梭(Big Bang)

把所有模块一次性接起来,只跑一轮大的。优点是省事、规划少;致命缺点是定位难——出了问题往往不知道是哪个接缝,就像一锅乱炖吃出问题不知道该怪哪个菜。适合模块少、接口简单的项目。一旦模块超过十几个,基本就告别大爆炸。

自顶向下:从指挥层往下冒充

从最上层的总控模块开始,边测边把它的子模块从"替身"换成真的,一层层向下推进;被替换的下层模块继续用替身占位。优点是最早验证主干控制流和上层契约,缺点是底层核心逻辑可能长期被替身盖着迟迟不露真容,要准备一大堆上层替身。

示意序列(看它如何逐层往下换):

随着推进,替身被真实现逐层替换,最终层层的接缝都被真实地走一遍。

自底向上:从地基往上垒

从最底层的叶子模块开始,测它们、给它们写好替身感受"驱动者",再由驱动者把它们一个个接到上一层。优点是底层核心被最先、最充分验证,方便定位缺陷;缺点是上层控制流和用户界面始终最后见光,且需要维护大量"驱动器"。

三明治:两头夹击

同时从顶层和底层向核心聚拢,兼具两者优点、也要求更复杂的规划。适合模块多、层次分明的大型系统——既让上层契约早验证,又让底层核心早验证,中间层再陆续接上。

决策矩阵:你的系统该用哪招

系统面貌 推荐策略 一句话理由
模块少、接口简单 大爆炸 规划省,定位凑合能扛
UI 驱动、上层契约重要 自顶向下 主干控制流最早见光
核心业务逻辑藏在底层 自底向上 地基最值钱先测牢
模块多、层次分明 三明治 两头优点都要
依赖复杂、缺模块多 增量 + 替身 用替身占位,边补边接

下面把四种策略对"发现问题早晚"和"定位难度"的权衡画成一张图。

03-02-fig01

一个选型实例

背景:一个支付服务分订单、风控、对账三块,对账依赖外部结算文件,风控要被风控团队反复改。

操作:若用大爆炸,一跑就全糊;改用三明治——从订单主流程自顶向下验证上方契约,同时从对账底层自底向上把文件解析测牢,最终两头在中间层汇合。

结果:上层契约耦合配置改动很快被发现,底层文件口径也早被锁死,而风控那块的频繁改动被隔离在中间层,不影响全盘。

解读:选择策略本质是把"最愿意早发现的错"摆到最先验的位置。变式:当采用容器化测试后,甚至可以按业务域拆多个独立小拼装,互不相扰。

策略从来不是"一次性选定"的

很多团队把集成策略当成开工时画一次就再也不动的图纸,这是误解。真实的依赖结构在持续演化——新模块加入、老接口重构、外部服务换厂商——这些都可能让"当年选定的自底向上"在今天变成负担。所以策略应当是一份"活的决策",建议跟着系统结构季度性地回看一次:现在的依赖长这样了吗?上一季度最常红的接缝,被当前策略放在最先验的位置了吗?

一个务实的判断信号:当团队花在"定位集成红灯"上的时间,开始明显超过"修复代码"的时间,多半说明当前策略把最难定位的接缝放到了最后才验。此时不是去忍受,而是把那个接缝的验证提前——这往往比在旧策略上硬扛更省力。

组合拳:策略不必"从一而终"

四选一不是唯一的形态,现实项目里更多是组合。比如一个系统用"自底向上"测地基、又用"自顶向下"验主流程,两头的接缝都尽早见光,这在模块多、层次分明时尤其常见——它本质上就是三明治策略的一个延伸。再比如外部依赖多的项目,会先给替代不了的第三方接口配契约测试或替身,用"增量 + 替身"把缺的模块顶住,边接边测。

组合时唯一要守的口径是:别让两条策略在同一层各测各的、造成重复或空白。每个接缝应当被恰好一条路径覆盖,谁验什么写清楚,否则又是"以为都测了其实都漏了"。策略的价值从来不是名字好听,而是让每个接缝都被一个有意的顺序安排过。

替身在策略里的真正角色

聊策略就绕不开替身,但要摆正它的位置:替身不是策略的敌人,而是策略的脚手架。在自顶向下里,下层模块用替身顶到被真实现换掉;在自底向上里,由"驱动器"替身上层指挥。任何增量式策略都依赖替身先占住还没接上的位置,让已被接上的部分能独立往下测。真正要警惕的,是替身引退的时机——一个该被真实现换下却迟迟不换的替身,会让策略停在半道,产生"测了但没测到真相"的假象。

记一条经验:每次往深层接上真实模块,就顺手检查一层——那些先前占位的替身,是否已经被该换下的真实现顶掉?多留一个"退役清单"记录哪些替身还占着哪些位置、什么时候该卸,能避免策略被一堆忘了下架的替身卡住。策略走得下去,靠的是替身按时上、按时下。

一个小团队的务实起点

对所有十人以下的小团队或刚起步的项目,策略也实在不必第一天就追求哪种高大上,务实的起点往往是先按自底向上把地基里最值钱的纯逻辑测牢,再把必须走通的大接缝用一轮冒烟兜住。先把最容易漏的底层核心稳住,等模块和层次多了再自然演进到三明治。策略会跟着系统一起长大,先动起来,比先在纸面上争论漂亮仗更要紧。

本节要点回顾

  • 大爆炸:一把梭,省事但定位难,适合小系统。
  • 自顶向下:领跑上层契约,底层见光晚。
  • 自底向上:地基先测牢,上层见光晚。
  • 三明治:两头夹击,规划复杂,适合大型分层系统。
  • 决策看依赖长相:接口简单用大爆炸,核心在底层用自底向上,分层明用三明治。

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