程序员测试原则 - Kent Beck


1. 程序员测试应该很快
测试反馈不应该扰乱编程流程。

2.程序员测试应该是确定性的。

3. 程序员测试应该是预测性的。
程序员测试应该对行为变化敏感,但对结构变化不敏感。如果程序的行为从观察者的角度来看是稳定的,那么任何测试都不应该改变。

结构不变测试需要特定的编程和设计风格以及特定的设计风格。我经常看到断言的测试,“断言此对象使用这些参数将此消息发送到该对象,然后将此其他消息发送到另一个对象。”这样的断言基本上是世界上最笨拙的编程语言语法。如果我关心操作的顺序,那我设计的系统是错误的。

4. 程序员测试应该很便宜。
不仅编写测试方便,也要与代码一样,让别人理解阅读方便,同时应对变化的成本很低,常见的反例是单个行为变化,导致一堆红色测试。如果现在必须单独检查和修改每个测试,那么测试将变为停车制动器。

总结 - 程序员测试应该:

  • 最大限度地减少程序员的等待。
  • 运行可靠。
  • 预测可部署性。
  • 回应行为变化。
  • 不响应结构变化。
  • 写得便宜。
  • 阅读便宜。
  • 变化便宜。