2010-03-01 126 views
10

一段時間以來,我一直在研究Selenium RC,以便對我的Web應用程序進行功能測試。我現在已經找到了一個非常有效的測試策略,我不想離開Selenium RC(經過幾個星期的努力找出驗證ASP.NET驗證控件的好方法)。爲什麼Selenium RC如此緩慢?

但是現在我的Selenium RC冒險正在從一個POC轉變成我實際使用的東西,我遇到了一個問題。它非常緩慢。執行加載頁面的單個測試,填充一些字段,然後單擊一個按鈕可以執行幾秒鐘的時間。當它正在執行時,我可以很容易地看到每個單獨的字段被一次一個地填寫。在Firefox中使用Selenium IDE並不是那麼慢。

我找到了這個網頁,即明確規定硒RC緩慢http://selenium-grid.seleniumhq.org/how_it_works.html

但是,爲什麼會這樣?是否因爲瀏覽器正在輪詢硒服務器?如果是這樣,這個輪詢間隔是否可以修改?或者還有另一個原因。我不習慣遠距離通話,需要花費大量時間來執行。

執行一些測試需要很長時間是非常可怕的。我可以比單個網頁運行10次測試更快地執行我的整個演示文稿(MVP),業務和數據庫層測試套件(500多種測試)。

回答

7

功能/集成測試將需要更長時間才能運行,尤其是因爲它們在瀏覽器中運行。這意味着它必須加載MVC的所有3層,然後在頁面上執行任何操作時執行。所以每一個行動都有可能走向數據庫。與單元測試相比,這本質上是一項長期運行的任務。

測試通過在頁面上執行open開始,然後等待一切加載。因此,如果這需要很長時間,那麼如果用戶訪問該頁面可能需要很長時間。例如。大量的圖片,JavaScript/CSS未經整理,下載失敗。

Selenium的那個頁面說服務器是一個瓶頸,因爲它意味着您正在同步運行測試,如果您轉移到Selenium Grid,它可以並行運行它們,以使測試套件更快地完成。這並不是建議硒服務器輪詢,看看它應該做什麼,而是Selenium服務器輪詢Grid中心,看看它是否還活着,並顯示它們還活着。

測試運行緩慢的另一個原因是Selenium的基本語言是JavaScript,它與DOM進行交互。如果您的測試使用XPath作爲定位器,那麼DOM可以減慢很多事情。 XPath + JavaScript + IE + Selenium ==痛苦,我們Selenium開發人員可以做更多的事情來微調它。那麼有,那就是Selenium 2,它是alpha版本,可以從http://selenium.googlecode.com/下載。我一直在研究.NET實現,目前我正在看到巨大的速度提升。我有blogged關於它,因爲這些變化令我震驚。我看到多達8個測試運行在同一時間,它曾經讓Selenium 1運行1測試

+0

嗨。謝謝回覆。我完全知道功能測試相對較慢。但Selenium RC本身比「正常」慢,即非RC Selenium。執行一個用表單打開頁面的測試,填寫15個字段,並使用Selenium IDE提交表單需要幾分之一秒。使用Selenium RC和.NET驅動程序需要花費大約一秒的時間。所以顯然有RC特定的開銷。 – Pete 2010-03-01 16:16:55

+2

啓動瀏覽器是一個很大的開銷,並且是RC特定的。在所有其他硒實例中,必須打開瀏覽器才能開始測試。 – AutomatedTester 2010-03-01 16:23:19

+1

除了啓動瀏覽器之外,還有一些延遲。在中期測試中,IE上的Selenium RC需要很多秒才能爲我填寫並提交一個字段。 – 2010-09-10 10:10:48

2

是否有可能您的默認執行速度太低?檢查DefaultSelenium上的getSpeed()和setSpeed()方法。

7

你在多窗口模式下測試IE和Selenium嗎?這是非常緩慢的,你應該嘗試啓動seleniumserver -singlewindow

相關問題