Kent Beck:可组合测试的精髓

Kent Beck: Composable Tests

Kent Beck:可组合测试的精髓

Kent Beck 在文中深入探讨了测试的隔离性(Isolation)与组合性(Composition)的区别。他指出,盲目复制粘贴测试代码会导致冗余和可读性下降,而通过组合测试,我们能在保持测试覆盖率和预测性的同时,大幅减少测试数量。例如,将计算逻辑与报告逻辑分离测试,再用少量组合测试验证其连接,比暴力穷举更高效。这种策略让测试更快、更易读、更具体,且对结构变化更不敏感。许多开发者因恐惧而拒绝减少断言,但 Kent 认为这是基于恐惧而非原则的反应。组合测试是从整体视角优化测试套件,而非削弱单个测试的价值。

这种反应源于恐惧,而非原则。
  1. pfdietz

    我有一套包含数千个测试的测试套件。其中一种运行方式是:先筛选出所有通过的测试,然后以随机顺序反复运行它们。

    这种方法发现了一些涉及非预期持久状态的新的 bug。

  2. cadamsdotcom

    为什么不使用参数化测试,或者用运行共享设置代码的 fixtures 来组合你的 setup 呢?

    运行一个测试,再运行第二次,然后断言别的东西……这听起来就很奇怪。

  3. solarengineer

    有人曾留言问 Kent Beck 是否听说过全局变量和静态变量。那条评论似乎已经被删除了。

    Kent Beck 是 JUnit 测试框架的联合创建者 [1],他肯定听说过静态变量和全局变量。

    [1] https://junit.org/junit4/project-info.html

  4. grim_io

    我受够了听聪明人给我的笨代码提修复建议。

    要么是我自己不够聪明或不够自律,要么是我的同事不够,大多数情况下是两者兼有。

  5. nhgiang

    啊,Kent Beck,看来你写 trivial 例子的风格一直没变。

同日更多故事

2026-08-18