ruby-on-rails - 测试套件多长时间太长?

标签 ruby-on-rails testing continuous-integration travis-ci wercker

<分区>

我正在 Rails 上创建一个网站,到目前为止一直在使用 travis-ci 进行持续集成。我也在尝试使用 wercker 进行持续集成和部署。测试步骤在 wercker 上失败,因为它运行了超过 25 分钟,我突然想到我的测试可能由于某种原因花费了异常长的时间。

我正在开发的网站相当大,但并不庞大。我使用 rspec 和 capybara 进行测试,使用 webkit 进行集成测试。我编写了相当详尽的集成测试,试图确保涵盖每个功能。在 travis-ci 上,整个过程需要 25-30 分钟才能运行(包括安装包)。

对于这个论坛来说,这可能是一个模糊的问题,但我还是想得到一些意见。运行半小时或更长时间的测试套件是 Not Acceptable 吗?对于一组集成测试,您通常会经历多少测试套件时间?

最佳答案

商业网站有集成测试套件是正常的,即使是设计良好的测试套件,如果它们在开发人员机器上的单个进程中运行,也需要一个小时或更长时间才能运行。因此,您没有给我们任何理由认为您编写了太多测试或编写的测试运行异常缓慢。但是,等待了解您的提交是否正确的时间太长了。以我的经验,半小时太长了,15 分钟也太短了;如果运行所有测试需要那么长时间,那么触发构建的人将开始其他事情或在构建运行时徘徊,然后将不得不进行上下文切换或在构建中断时不在身边。较长的构建还会增加给定构建中的平均提交次数,这使得在构建中断时更难归咎于责任。

因此,让您的 CI 构建尽可能快地运行。主题很大,但有几个起点:

  • parallel_tests gem 是在单个 盒子上尽可能快地运行您的套件(包括单元测试和 Cucumber)的方式(这只会让您到目前为止,但现在可能已经足够了)。
  • 这是另一个用于跨多个框拆分 Cucumber 场景的 gem(我还没有使用过):https://github.com/cloudcastle/cucumber_in_groups
  • Travis CI、CircleCI 和可能的其他托管持续集成服务提供了跨箱拆分测试的方法。

拥有一个覆盖大部分或全部代码并且运行速度比集成测试快得多(几秒或最多几分钟)的单元测试套件也很有帮助,以便在集成测试运行之前捕获大多数错误.

关于ruby-on-rails - 测试套件多长时间太长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23539072/

相关文章:

ruby-on-rails - 被 nokogiri 在 ruby​​ on rails 中转换为 "\u0092"

testing - 如何克服缺点并享受软件测试人员的工作?

testing - Arquillian - 如何调试托管的 Wildfly 容器

Jenkins 使用基于主干的开发时构建

ios - Xcode 服务器机器人测试操作失败,因为 "Too many open files in system."

具有 ActiveRecord 输入的 JavaScript 函数

mysql - 什么样的 SQL 查询使用 rails 在控制台中检索数据

mysql - 与记录的各个字段的多对多关系

testing - 为什么 QuickCheck 放弃了?

matlab - 如何自动化 Matlab/Simulink/Real-TimeWorkshop 代码生成?