1. 接缝的"类型"(type)中 preprocessing seam、link seam、object seam
遗留代码接缝(seam)的"类型"有哪几种?preprocessing seam、link seam、object seam 分别是什么?
- 接缝的定义:能改变行为而不修改该处代码的位置
- 三种接缝类型的含义与适用语言环境
- 各类接缝在测试注入中的作用
接缝(seam)是"在不修改某处代码的前提下改变其行为的位置",是进攻遗留代码的插入点。三种类型:preprocessing seam(预处理接缝)在编译前通过预处理指令(如 C 的 #ifdef)替换代码,使测试能编译进不同的实现;link seam(链接接缝)在链接期通过替换被链接的实现(如动态链接库、stub 库)来替换依赖;object seam(对象接缝)在运行时通过替换对象实例(如依赖注入、子类覆写、mock)来改变协作对象的行为。现代语言(Java、JS)中 object seam 最常用,古老/系统代码中前两者更常见。
接缝类型决定了"在哪个阶段、用什么机制注入测试替身"。理解接缝类型是遗留代码测试的第一步:识别出代码中存在哪种接缝,就能选择对应的测试替身注入方式。通常 object seam 最灵活、最主流,preprocessing 和 link seam 出现在系统级或非 OO 语言中。