我正在铁轨上创建一个网站,到目前为止一直使用travis-ci进行持续集成。我正在尝试使用wercker进行持续集成和部署。测试步骤在wercker上失败了,因为它运行了超过25分钟而且发生了我可能由于某些原因我的测试时间异常长。
我正在研究的网站规模庞大,但规模不大。我使用rskit和capybara进行测试,使用webkit进行集成测试。我写了相当全面的集成测试,试图确保我涵盖每个功能。在travis-ci上,整个过程需要25-30分钟才能运行(包括安装捆绑包)。
对于这个论坛来说,这可能是一个模糊的问题,但是我想得到一些建议。让测试套件运行半小时或更长时间是不可接受的吗?您通常会在一组集成测试中遇到什么测试套件时间?
答案 0 :(得分:9)
商业网站拥有集成测试套件是正常的,即使是设计良好的集成测试套件,如果它们在开发人员计算机上的单个进程中运行,则需要一个小时或更长时间才能运行。因此,您没有理由认为您正在编写太多测试或编写测试,以至于它们的运行异常缓慢。但是,等待了解您的提交是否合适还有很长时间。根据我的经验,半小时太长,15'是边缘的;如果运行所有测试需要很长时间,那么触发构建的人将在构建运行时启动其他东西或者离开,然后必须进行上下文切换或者在构建中断时不会出现。较长的构建还会增加给定构建中的平均提交次数,这使得在构建中断时更难分配责任。
因此,让您的CI版本能够以合理的速度运行。大话题,但有一些起点:
parallel_tests
gem是在单个框上尽可能快地运行套件(单元测试和Cucumber)的方法(这只会让你到目前为止,但也许现在已经足够了。)使用单元测试套件覆盖大部分或全部代码并运行速度比集成测试快得多(几秒钟或最多几分钟)也很有帮助,以便在集成测试运行之前捕获大多数错误