我一直在使用ZenTest在我的Rails项目中运行所有测试多年,而且总是非常糟糕。然而,在我的Mac上它突然开始花费3倍的时间来运行所有测试。我们有1219个测试,在过去的一年中,它将平均在300秒内完成所有测试。现在,它花了将近900秒:
Finished in 861.3578 seconds.
1219 tests, 8167 assertions, 0 failures, 0 errors
==============================================================================
我想不出为什么会出现这种放缓的原因。我已经尝试更新到最新的gem版本,减少测试的日志输出并重新生成测试数据库,但都无济于事。有谁能提出改善表现的方法?
答案 0 :(得分:4)
当你消除了不可能的事情,无论剩下什么,无论多么不可能,都必须解释:如果它不是宝石,而不是数据库(你检查了索引吗?),而不是你的Mac,而不是Rails(你最近升级了) ,这可能是代码吗?
我会检查git / svn / cvs日志,查看您最近进行的一些更改,并查找可能包含的内容。放慢查询速度。
如果您无法立即找到任何内容,请查看代码以了解时间的变化。这比记住你做过改变的事情要慢(这几乎总是在这种情况下得到解释),但可能会指出你正确的方向。
性能问题可能令人沮丧,因为任何因素都会产生影响。 DB上缺少索引。网络延迟。内存条件低。不要放弃,请记住Tilton's Law。
答案 1 :(得分:2)
你真的要在这里做更多的功课,我怀疑它的ZenTest:
几个月前,当一些东西很棒且花花公子时,抓住你的代码版本。运行所有测试,将所有测试持续时间输出到电子表格或其他内容。
获取代码库的当前版本并在1)中重复此过程
如果持续时间相同,则有关您的数据库配置或计算机配置的内容已更改
如果所有测试平均较慢,那么这是一个很难诊断的测试,但似乎每个测试都会运行一些新的代码。
如果少数新测试真的很慢,请修复它们。
答案 2 :(得分:0)
所以我终于解决了这个问题。以下是三个简单步骤的方法:
执行此操作后,测试将在260秒内完成。
我不知道发生了什么,但它似乎肯定是某个地方的MySQL问题。