嗨,在我的項目中,我們有數百個測試用例。這些測試用例是構建過程的一部分,在每次簽入時觸發並將郵件發送給我們的開發人員組。此項目相當大,已經超過五年了。
現在我們有很多測試用例構建需要一個多小時。一些測試用例的構造不正確,在重構它們之後我能夠大幅縮短運行時間,但是我們有數百個測試用例並對它們進行了重構一個接一個似乎有點太多了。
現在我運行一些測試用例(需要很長時間才能執行),只是作爲夜間構建的一部分,而不是每次簽入的一部分。
我很好奇,因爲其他人如何管理這一點。如何在TDD中管理生成時間
3
A
回答
3
我相信這是在「有效地使用遺留代碼」,他說如果你的測試套件花費的時間超過幾分鐘,它會使開發人員的速度減慢太多,測試將開始被忽視。聽起來你陷入了陷阱。
您的測試用例是否針對數據庫運行?那麼這很可能是你最大的性能問題。作爲一般規則,如果可能的話,測試用例不應該做I/O操作。依賴注入可以讓你用模擬對象的數據庫部分來替換數據庫對象。這允許您測試代碼,而不用擔心數據庫是否正確安裝。
我強烈推薦由Michael Feathers提供Working Effectively with Legacy Code。他討論瞭如何處理您似乎遇到的許多令人頭痛的問題,而無需一次重構所有代碼。
UPDATE:
A與其它可能的幫助,會是這樣的NDbUnit。我還沒有廣泛使用它,但它看起來很有前途:http://code.google.com/p/ndbunit/
0
也許你可以考慮保持你的oracle數據庫,但運行它從內存驅動器?它不需要很大,因爲它只包含測試數據。
0
我們有大約1000個測試,其中很大一部分通過REST和數據庫進行通信。總運行時間約爲8分鐘。一個小時似乎過多,但我不知道你在做什麼以及你的測試有多複雜。
但我認爲有一種方法可以幫助你。我們正在使用TeamCity,它具有很好的多個構建代理的能力。你可以做的是將你的測試項目分成子項目,每個子項目只包含一些測試。你可以使用JNunit/NUnit類別來分開它們。然後,您將配置TeamCity,以便每個代理僅構建一種類型的子項目。這樣,你可以並行執行測試。只需少量代理商(免費獲得3個代理商),您應該可以達到20分鐘,甚至可以接受。如果你將每個代理放入虛擬機,你甚至可能不需要額外的機器,你只需要大量的RAM。
相關問題
- 1. 在實體管理器中自動生成的時間戳
- 2. 在maven中處理生成時間生成的.class文件
- 3. 何時在TDD
- 4. 如何在管理中生成Django中的表單?
- 5. 代碼管理:如何管理動態生成的javascript?
- 6. 如何管理我的在線時間表和項目管理?
- 7. 在ruby中生成時間
- 8. 如何提高往返時間做TDD
- 9. 管理生成器不生成類
- 10. 如何在訂單管理系統如foodpanda中管理日期時間
- 11. 如何在管理生成器中按ID過濾
- 12. 如何在生成器中使用python上下文管理器
- 13. 如何在Liferay中生成「管理頁面」的鏈接?
- 14. 如何在Django管理員中生成用戶反饋?
- 15. 如何在rails中生成活動的管理視圖
- 16. 如何在Visual Studio解決方案中管理生成的類?
- 17. Symfony管理生成器
- 18. 管理面板生成器
- 19. 管理自動生成
- 20. symfony管理生成器table_method
- 21. 如何在java中跟蹤管理會議管理項目的時間?
- 22. 如何在SQLite中生成時間間隔查詢?
- 23. 如何在JavaScript中的兩次之間生成時間戳?
- 24. 在時間管理系統
- 25. 如何創建和管理時間段
- 26. 如何正確管理時間mysql
- 27. 如何管理程序週轉時間?
- 28. 如何管理LongClick的持續時間?
- 29. Pentaho - 如何管理時間維
- 30. 時間表管理
數據庫綁定測試的一種可能的替代解決方案是使用內存數據庫。這顯然帶來了一系列新問題,但是它是一個解決方案,它的成功取決於您的代碼中有多少依賴於單個RDBMS實現。 – 2009-05-30 19:58:47