2009-02-03 128 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. 如果少數新測試真的很慢,請修復它們。