概念验证应用程序是否应具有自动化测试?

时间:2012-02-19 22:36:49

标签: ruby-on-rails unit-testing testing rspec automated-tests

如果我正在开发一个概念验证应用程序,那么花时间编写自动化测试是否合理?这是个人项目,我是唯一的开发人员。

我认为此时自动化测试的唯一好处是:

  • 如果概念出现,则测试已经存在。

与为此类项目编写自动化测试相关的一些缺点可能是:

  • 为一个可能对人们不值得的想法编写测试需要花费宝贵的时间。
  • 在这个级别上,最好花时间来构建你的想法。

任何人都可以在早期阶段为应用程序编写自动化测试时投入时间的利弊吗?

4 个答案:

答案 0 :(得分:4)

Google测试自动化大会的全部演讲是关于您的问题: http://www.youtube.com/watch?v=X1jWe5rOu3g

基本上,结论是,更重要的是要知道你正在构建正确的东西而不是构建正确的东西(构建正确的“它”,而不是构建“它”正确)。最重要的是要通过概念验证,并确保它的工作和喜欢。如果人们喜欢你的东西,那么他们就会容忍错误;但如果他们不喜欢你的东西,它就没有错误,他们仍然不喜欢它。

答案 1 :(得分:2)

TDD并不是关于测试,而是关于设计。为你的应用程序做TDD会使它有一个更好的设计(可能),而不仅仅是你的感觉。

你的问题是:你需要一个好的设计吗?设计有助于维护,大多数开发人员在添加第一个功能后立即认为自己处于维护模式。

从一个更务实的角度来看:如果你是唯一的开发者,有非常准确的规范并且在这个代码上工作并且永远不会返回它(也不会让其他人返回它),我会说它制作它工作就够了。

但是如果您的POC正常工作,那么不要试图从中获取任何东西,只是重做它。

  • 你可以通过做一个丑陋的POC来节省时间,并得出你的想法不可行的结论。
  • 你可以通过做一个丑陋的POC来节省时间,并且更好地理解你想要建模的领域
  • 您无法通过尝试从可怕的代码库中获取一些代码来节省时间。

我估计你应该在设计中付出多少努力(因为过度设计也可能是一个大问题)的最佳建议是:尝试估计代码存活多长时间

参考:我建议你对座右铭"Make it work, make it right, make it fast"进行一些研究。你问的问题是关于2个第一点,但你迟早会问自己同样的优化问题(第三点)

答案 2 :(得分:1)

没有“正确”的答案。 TDD可以使您的概念更强大,更有弹性,更容易开启,并有助于推动API开发。这也需要时间,而根本性的变化意味着测试的变化。

但是,现实生活中很少能完全抛弃“原型”代码。

答案 3 :(得分:1)

答案完全取决于你证明自己的概念会发生什么。 真实无论结果如何,概念验证应用程序都会被丢弃,如果PoC被证明,真正的应用程序将在之后编写。那些PoC显然不需要测试。但方式太多“产品化的PoC”在那里。这些应用程序可能应该预先编写测试。您收到的其他答案会为您提供坚实的支持,您只需要决定您正在构建哪种类型的PoC。