自动测试性能下降

时间:2009-02-03 22:32:01

标签: ruby-on-rails autotest zentest

我一直在使用ZenTest在我的Rails项目中运行所有测试多年,而且总是非常糟糕。然而,在我的Mac上它突然开始花费3倍的时间来运行所有测试。我们有1219个测试,在过去的一年中,它将平均在300秒内完成所有测试。现在,它花了将近900秒:

Finished in 861.3578 seconds.

1219 tests, 8167 assertions, 0 failures, 0 errors
==============================================================================

我想不出为什么会出现这种放缓的原因。我已经尝试更新到最新的gem版本,减少测试的日志输出并重新生成测试数据库,但都无济于事。有谁能提出改善表现的方法?

3 个答案:

答案 0 :(得分:4)

当你消除了不可能的事情,无论剩下什么,无论多么不可能,都必须解释:如果它不是宝石,而不是数据库(你检查了索引吗?),而不是你的Mac,而不是Rails(你最近升级了) ,这可能是代码吗?

我会检查git / svn / cvs日志,查看您最近进行的一些更改,并查找可能包含的内容。放慢查询速度。

如果您无法立即找到任何内容,请查看代码以了解时间的变化。这比记住你做过改变的事情要慢(这几乎总是在这种情况下得到解释),但可能会指出你正确的方向。

性能问题可能令人沮丧,因为任何因素都会产生影响。 DB上缺少索引。网络延迟。内存条件低。不要放弃,请记住Tilton's Law

答案 1 :(得分:2)

你真的要在这里做更多的功课,我怀疑它的ZenTest:

  1. 几个月前,当一些东西很棒且花花公子时,抓住你的代码版本。运行所有测试,将所有测试持续时间输出到电子表格或其他内容。

  2. 获取代码库的当前版本并在1)中重复此过程

  3. 如果持续时间相同,则有关您的数据库配置或计算机配置的内容已更改

  4. 如果所有测试平均较慢,那么这是一个很难诊断的测试,但似乎每个测试都会运行一些新的代码。

  5. 如果少数新测试真的很慢,请修复它们。

答案 2 :(得分:0)

所以我终于解决了这个问题。以下是三个简单步骤的方法:

  1. 插入OSX Leopard CD
  2. 从头开始完全重新安装Leopard
  3. 重新安装Ruby,MySQL等
  4. 执行此操作后,测试将在260秒内完成。

    我不知道发生了什么,但它似乎肯定是某个地方的MySQL问题。