自测试代码(Self-Testing Code)

代码自带自动化测试保护,可以快速发现回归和偏离行为的状态,而不是某一种具体的写法。

#type / concept #status / growing #tech / dev / test

[!info] related notes

自测试代码(Self-Testing Code)

一句话定义

自测试代码指的是:系统本身配有自动化测试,能快速告诉你当前实现是否仍然满足预期行为。

它为什么重要

当代码库变大、改动变频繁时,最大的风险不是“写不出来”,而是“改完之后不知道有没有把别的地方改坏”。

自测试代码的价值,就是把这种不确定性压缩成一个可重复、可执行的反馈回路。

它和 TDD 的关系

  • 自测试代码是目标状态
  • TDD 是一种强约束的到达路径

也就是说:

  • 先写代码再补自动化测试,也可能得到自测试代码
  • 但只有“先写失败测试,再写最小实现,再重构”的做法,才叫 TDD

它最实际的价值

快速反馈

你可以很快知道改动有没有破坏既有行为,而不是靠手点系统和运气排查。

支持重构

当测试能覆盖核心行为时,你就敢更积极地改命名、抽依赖、拆模块。

防止 bug 回来

遇到线上 bug 时,最稳的做法通常是:

  1. 先写一个能稳定复现 bug 的测试
  2. 确认它先失败
  3. 再修实现
  4. 让它永久留在回归测试里

它不要求什么

自测试代码不要求你必须用某个框架,也不要求所有测试都来自 TDD。

它真正要求的是:

  • 自动化
  • 能稳定执行
  • 能代表关键行为
  • 反馈足够快

一个判断标准

如果你修改一个核心模块后,能在很短时间内回答“行为有没有坏”,那你就更接近自测试代码。

如果每次改动后都只能靠手工点、靠联调、靠上线观察,那就还不是。

最短记忆方式

TDD 是方法;自测试代码是结果。结果比口号更重要。

参考资料

创建于 2026/4/23 更新于 2026/5/27