应用测试

时间:2020-03-05 18:49:44  来源:igfitidea点击:

" TDD"的真正好处是对应用程序的实际测试,还是编写可测试应用程序带来的好处?我之所以这样问,是因为我觉得谈话经常围绕测试而不是总收益一揽子计划展开。

解决方案

回答

自动化测试可避免人工完成机器的工作。

测试驱动的开发最大程度地提高了自动化测试的数量。

当然,除了某一点之外,还需要一个人。当我们尝试在该点之外应用TDD时,收益会递减。

回答

TDD可设计软件。测试成为设计。通过首先编写测试,我们将从用户角度考虑代码,从而使用户设计更友好,更紧凑。

同样,通过应用TDD,我们通常最终会以可以提供测试模拟和存根的方式编写代码。这样可以减少软件的耦合,使其更易于随时间进行更改和维护。

因此,我猜想有关TDD的话题是关于测试的,但是这样做可以带来其他好处,例如质量(覆盖率),灵活性(去耦),更好的设计(以API的使用者为中心)。

回答

TDD的真正好处是它使我们可以修改/重构/增强应用程序,而不必担心是否破坏了现有功能。编写单元测试往往会导致松散耦合的代码和更好的体系结构,但这不一定是TDD的重点,但我认为很难做到一个没有另一个。

除非我们具有覆盖面广的单元测试,否则我们将无法真正体验到TDD的好处。为此,我们将必须编写可测试的代码。这就是为什么两者经常结合使用或者彼此代替的原因。

回答

真正的改进是,这是迫使我们对设计和实现进行真正思考的一种好方法。然后,一旦准备好测试并编写了代码,针对意外问题的解决方案就更容易出现。

我通常会遇到一个比喻好的事情:当我将问题发布到论坛或者IRC频道时,我喜欢将问题写得很好并且得到充分描述,很多时候是在准备写得很好且对问题的完整描述使解决方案神奇地出现了。

回答

在开发将要发布多个版本的产品时,自动测试可以节省时间和增强信心。通过自动化测试,我们知道在两个版本之间没有任何损坏。当产品是人们可以为我们编写添加组件而不希望在版本之间中断其添加组件时,这特别有用。

使用TDD,我们可以在开发过程中获得一系列好的测试。没有TDD编写这些测试就困难得多。

回答

迈克尔·费瑟斯(Michael Feathers)对此发表了一篇有见地的博客文章,标题为"单元测试背后的缺陷理论"。认真地,去读它。打孔线是

All of these techniques have been shown to increase quality.  And, if we look closely we can see why: all of them force us to reflect on our code.

但我们应该阅读有关该内容的完整文章。