我们能为TDD找到更好的名字吗?

时间:2009-08-14 03:42:28

标签: tdd

我一直听说测试驱动开发是一个不幸的技术名称,因为TDD不是关于测试,而是关于设计。

就个人而言,我从来没有对这个名称产生过任何问题,因为我一直认为它更像是一种编程规范的方式。我从来没有遇到这样一个问题:验证我符合规范的代码在类名,方法名,注释或属性中都有'test'这个词。这是我遵循的惯例,以便让测试框架为我做繁重的工作。

我对我的方法并不是最教条的,虽然我确实尝试先编写我的测试,但我经常发现自己写了一些额外的代码,然后尝试将其包含在测试中。我确实倾向于发现每次我这样做时,TDD都会从API设计的角度出发(我不可避免地会在我开始围绕它编写测试时最终重构我的非测试代码),但关键是我没关系,只要我在完成所有感兴趣的事情后最终得到测试工具,就不要预先编写所有测试。

所以,回到这个问题。什么是TDD更好的名字?一个不涉及“测试”这个词的名字会有所不同吗?

5 个答案:

答案 0 :(得分:8)

测试驱动开发不是一种测试方式,它是开发(包括设计,编码和测试)的一种方式。否则它将被称为开发驱动测试。

“测试驱动开发”这个短语的动词是开发,“测试驱动”只是副词。你应该向那个让你悲伤的人解释一下。

我对名称完全没有问题,因为它准确地反映了意图。并且您不必在开始开发之前完成所有测试,但至少应该指定它们。

答案 1 :(得分:3)

我认为这是Behavior-Driven Development试图实现的目标(等等)。

我已经不再关心明确的名字了 - 它完全可以解释。

答案 2 :(得分:1)

在我的(主观)观点中,我认为有些人在测试驱动开发中开始反对“测试”这个词的原因是因为在某些类型中解释概念的经验不佳开发商。

有些开发人员一听到“测试”这个词就会停止聆听 - 他们认为这不是他们的工作,所以他们为什么要关心?如果你需要人们采用TDD的做法,这种态度显然是有害的。如果该问题的一个解决方案是将TDD重命名为不包含“测试”一词的内容,那么对我来说很好,但对于我们其他人来说,让我们继续将其称为TDD。

我至少看到过以下建议:

  • 测试驱动开发(原始术语)
  • 测试驱动设计(因为它更多关于设计)
  • 示例驱动设计(因为测试可以被视为代码应该如何工作的示例)
  • 按示例设计(只是EDD的另一个短语)
  • 行为驱动设计(声明的意图不同,但到目前为止,大多数尝试看起来很像TDD,并添加了一些额外的详细程度)

即使'设计'对我来说非常重要,我仍然认为测试提供了价值。当然,它们不是QA测试,但作为TDD副产品的全部测试仍然提供了允许您自信地重构的安全网。事实上,Refactoring有一个关于单元测试的整个部分,因为Fowler认为在没有回归测试套件的情况下尝试重构是非常危险的。

任何真正,真正相信测试在TDD中不重要的人都应该把钱放在他们嘴巴的地方delete the unit tests when their code is done

对我来说,TDD是有道理的。是的,它首先是关于开发和设计,但测试也是重要的工件。

答案 3 :(得分:1)

我认为测试驱动开发很好。就是这样。是的,它会影响设计。是的,它提高了质量。是的,它提高了整体可维护性和重构能力。是的,它更快。等

我认为BDD是一种不同的,更具体的做法。但也许它更符合TDD的原始意图,而不是JUnit推广的工具。

这是一个糟糕的名字,因为它对这个过程的说法多于好处吗?也许。

其他想法:

  • 负责任的发展
  • 测试第一次开发
  • 整体发展
  • 不是黑客

答案 4 :(得分:0)

我认为“代码示例”是我们所做工作的最佳名称。我认为这就是Dan North所说的。然后,代码示例是BDD的一部分(因此BDD比TDD更大/更具体。)

“上下文规范”的概念也非常相似,由Scott Bellware等人推广。

我同意使用“test”这个词很难将这项技术传达给新开发者。