2009-02-03 64 views
1

我一直在使用ZenTest在我的Rails项目中运行所有测试多年,它一直很蹩脚。但是,在我的Mac上,它突然开始花费3倍的时间来运行所有测试。我们有1219次测试,在过去的一年里,它会平均在大约300秒内运行所有测试。尽管如此,现在它采取约900秒时:自动测试性能下降

Finished in 861.3578 seconds. 

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

我想不出任何理由为什么会发生这样的放缓。我试过更新到最新的gem版本,减少了测试的日志输出和重新生成测试数据库,都无济于事。任何人都可以提出一种方法来提高性能?

回答

0

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

  1. 插入OSX Leopard的CD
  2. 完全从头
  3. 重新安装的Ruby中,MySQL等

重新安装Leopard的做这个测试下260秒运行后。

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

4

当你消除了不可能的东西时,无论如何,不​​管可能性如何,一定是解释:如果它不是宝石,不是数据库(你检查索引?),而不是你的Mac,而不是Rails ),它可以是代码吗?

我会检查git/svn/cvs日志以了解您所做的最近几次更改,并查找可能会发生的任何事情。正在放慢查询速度。

如果您无法立即找到任何内容,请查看代码以查看时间正在发生的变化。这会比仅仅记住你改变的东西慢得多(这几乎总是成为这种情况的解释),但是可能会指向你正确的方向。

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

+0

这是我会遵循的好建议。然而,我担心的是,测试运行良好,我的同事机器规格较低,这表明它是我的Mac。但我想不出任何变化! – Olly 2009-02-04 11:20:13

2

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

  1. 抢版本代码的东西时,是伟大的,很正常,在几个月前。运行所有测试,将所有测试持续时间输出到电子表格或其他东西。

  2. 抓住当前版本的代码库,并在1重复这个过程)

  3. 如果持续时间是相同的,一些关于你的数据库配置或机器配置已经改变

  4. 如果所有测试平均而言,这是一个很难诊断的问题,但似乎在每个测试中都有一些新的代码在运行。

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