使用Rails进行应用程序测试

这更像是一般性问题和某种最佳实践讨论。

如何测试Rails应用程序?

有像BDD和TDD这样的咒语和像RSpec和Cucumber这样的框架但是多少就足够了,最好的方法是什么?

使用Cucumber作为集成测试是否足够? 你们也在编写额外的unit testing吗?

那么你的Rails测试策略是什么以及如何?

期待好的意见……

如何测试Rails应用程序? 彻底地,瞄准百分之八十的覆盖率并且不低于 !

关于“如何”的实际决定很容易,但“多少”可能很难回答。

我有几个小的(几乎但不太遗留)项目,几乎没有测试,测试往往是代码中关键组件的低级unit testing。 有时我希望他们有更多的测试,但总的来说,它们被放在一起,表面积非常小,使得调试和手动测试非常直接。

在我的日常工作中,我们在一个相当大的Rails项目中使用rSpec,Cucumber和Selenium(10多个开发人员,几年正在制作中)。

rSpec为我们所有的模型,控制器,帮助器和其他类提供单元覆盖。

Cucumber提供更高级别的function和集成测试。

Selenium用于通过javascript(通过Capybara和Cucumber运行)来练习我们UI的javascript密集区域。 我们还在我们的测试和QA团队使用的Selenium中进行了一系列回归测试(发布到QA的版本通过我们的CI构建进行了绿化)。

这些天我的“极少”设置是使用关键和/或复杂区域的rSpec以及通过应用程序的关键路径上的全套function性Cucumber测试的单元级覆盖。

有许多工具可用于从许多不同方面测试rails和其他Web应用程序。 但是,如果您不熟悉测试, 我强烈建议您在开始使用其他工具之前先学习Rails自己的测试框架

学习,并在以后掌握,一个测试框架使得将来更容易理解与其他框架的利弊,并使它们协同工作。

您可以从测试以下内容开始:

  • unit testing您的模型
  • 控制器的function测试
  • 了解夹具以及如何加载测试数据

我已经看到许多测试工作失败,但我从未看到它们失败,因为他们选择了错误的工具/框架。 他们失败是因为他们不知道如何掌握他们使用的工具,并且对于测试的基础知识有足够的了解。

在此处阅读有关Rails测试的更多信息
http://guides.rubyonrails.org/testing.html

手动探索性测试
尽管我喜欢自动化测试,但它是恕我直言,而不是手动测试的替代品。 主要原因是自动化只能执行它所说的内容,并且只validation它被通知查看为通过/失败的内容。 人类可以利用它的智能来发现错误并提出在测试其他内容时出现的问题。
在我的另一个答案中阅读更多关于混合自动和手动测试的信息:
您使用哪些测试方法来开发网站?