2009-09-21 28 views
3

在我上一個項目中,我通過Selenium創建了一些測試用例,然後將它們自動化,以便它們可以在從hudson啓動的每個構建中運行。它工作得非常好,大概持續了一個月。Selenium是一款好用的測試軟件嗎?

然後測試開始失敗。大多數時候,這是造成失敗的時機問題。在接下來的兩個月中經過大約兩週的努力之後,決定放棄硒測試。他們應該已經過去了,但是Web應用程序的響應和時間不同,以至於測試在應該通過時會失敗。

您有類似的體驗嗎? Selenium仍然是用於Web應用程序測試的好工具嗎?

+1

取決於應用程序...它是基於javascript的,還是隻是普通的ish html? – skaffman 2009-09-21 19:25:48

回答

14

硒是Web測試的好工具,儘管確保測試的可靠性非常重要。時間問題是常見的,所以我會建議如下:

  • 確保您設置了合理的超時值。我發現1-2分鐘內效果很好。
  • 測試中不會有暫停 - 它們是計時問題的主要原因。而是使用waitFor *命令。 waitForCondition是非常有用有用
  • 確定外部調用可能會導致超時並阻止來自機器運行測試的流量。您可以在防火牆級別執行此操作,或者將域名重定向到hosts文件中的localhost。

更新:

你也應該考慮使用硒電網。它不會直接幫助你的超時,但它可以爲你的失敗提供一個更快的反饋循環。如果你使用TestNG來運行你的測試,你可以讓它自動重新運行失敗 - 這會導致測試失敗,因爲超時是第二次機會。

1

在我以前的工作中,我們調查了使用它作爲測試工具,但發現它煩躁地融入到我們的過程中。和你一樣的經驗。

雖然這是兩三年前的0.8版左右,但我預計它會從此變得更好。

+1

自0.8以來硒肯定有所改善。在測試版超過12個月後,1.0版本在今年早些時候發佈。 – 2009-09-21 19:31:00

1

我有過類似的經歷。我們創建了一個可以啓動一個硒代理並運行一套自動化測試的項目,但不幸的是它與我們的構建服務器發生了巨大的衝突。瀏覽器不一致和第三方依賴關係太多,無法將其可靠地添加到我們的構建中。它對我們來說也太慢了,並且爲我們的構建增加了太多時間。

我們遇到的大部分錯誤都是超時。

我們最終保留了該項目並將其用於主要版本的集成測試。我們使用的引導代碼在其他領域也證明是無價的。

1

可能最好是運行後每晚建立當有時間它。它或Watin,可以與你的構建腳本集成在一起。

很大程度上取決於你的團隊,但是如果你有一個小型測試團隊,這對於選擇一些非常明顯的運行時問題來說可能是無價的。

我會保持適用範圍適中,並真正使用它們的一些健康測試至少每個頁面可以加載。

1

我的確有過與Selenium相似的經歷。我們有一個遺留系統,我們建立了一種測試框架,以便我們可以測試我們正在做出的更改。這在開始時效果很好,但最終一些早期的測試開始失敗(或運行時間太長),所以我們開始關閉越來越多的測試。

爲了解決一些問題,我們停止硒的打開和關閉瀏覽器爲每個測試,即測試被分解成塊和每個測試塊測試瀏覽器將只打開一次。這將運行測試所需的時間從幾小時減少到30分鐘。

儘管存在這些問題,我認爲Selenium是測試基於Web的應用程序的好工具。我們遇到的許多問題都集中在我們測試的系統是遺留系統這一事實上。如果您喜歡測試驅動的開發,那麼Selenium可以很好地適應這種開發實踐。

編輯: Selenium的另一個好處是能夠跟蹤開發人員引入錯誤的位置以及錯誤的位置(源文件)。這在修復錯誤方面讓生活變得如此簡單。

1

我們最初試圖在我們的構建機器上使用硒,但測試非常脆弱,我們發現我們花費了大量時間試圖在發生更改時通過同一組網頁訪問無關功能來保持舊測試運行。我們通過nunit自動化測試。

我會更多地使用硒作爲客戶驗收和集成測試工具。我同意將它用於每晚構建穩定的功能。

1

乍一看,Selenium看起來不錯。不幸的是,正如有時在開源項目中發生的那樣,他們急於實現新功能而不是使其更加穩定。