2012-05-22 28 views
3

我正在爲一套企業軟件構建測試。我從Test :: WWW :: Selenium的作者那裏得到的好建議是構建更大功能的例程,然後對它們進行參數化。所以我們有:add_user,post_blog等等。然後可以豐富這些例程以檢查正確的文本是否出現在頁面上等等。這個軟件是非常可配置的,我們有幾十個站點,都是不同的。但是,這些構建模塊可以串在一起,並根據每個站點的情況適當修改驅動程序數據。如何製作/製作更大的Selenium Test Suites?

我在Selenium上發現的所有東西都非常初學,沒有關於構建更大的測試套件的信息。除此之外還有什麼或者它有多好?

+3

您是否熟悉了頁面對象? – JacekM

+0

你用什麼編程語言? Perl的? –

+0

Test :: WWW :: Selenium是一個perl模塊,是的。 –

回答

6

這是非常可能的運行非常大量的硒測試。在我的組織中,我們每天在多個網站上運行約200,000到300,000次測試。所以是可能的。

注意: - 我在JAVA代碼和下面的所有信息是從JAVA的角度來看。

對於大規模測試使用硒是成功的,我會說,它需要3個基本組成

  1. 基礎設施
  2. 一個好的框架和易於維護的代碼
  3. 簡單而明確的報告

基礎設施

您的基礎架構應該能夠支持巨大的負載。我們使用硒網格(如果您使用Selenium 2,則稱其爲Grid 2.0)來實現此目的。 Selenium Grid允許我們在多個瀏覽器中並行運行多個測試。我們使用我們自己的服務器來部署虛擬機來支持這種測試。像Saucelabs.com這樣的供應商可以將基礎架構維護外包給他們。

框架和testcode

你的框架必須支持多線程,它應該是線程安全的利用硒網格功能。我們使用JAVA來確保發生這種情況。使用並行運行測試testNG。 testNG可以並行運行多個方法,所有這些測試都將指向一個Hub。集線器然後將所有這些測試分配給連接到它的多個遙控器(RC)。

當您有大量測試時,維護是不可避免的。爲了減少由於應用程序更改而導致的返工工作,最好遵循頁面對象模型。頁面對象本質上意味着 - 應用程序中的每個頁面都應該在代碼中具有相應的類。你將定義該類中可能發生的所有元素和功能。這是一個非常模塊化和可重複使用的結構。你可以谷歌的pageobject模型,你會發現很多文章。

報告

它的偉大,以每天運行20萬周的測試,但如果你不能展示什麼失敗,是什麼在一個方便的方法來傳遞您的自動化測試將沒有多大用處的。有多種方法。從HTML報告到構建自定義儀表板以顯示結果。

一旦你掌握了所有這些,那麼你將需要的唯一東西就是一個工具來保持這些測試不斷運行。您可以使用任何CI(持續集成)工具來實現此目的。 Hudson,cruisecontrol是主要使用的少數CI工具。

+0

Oooh,將頁面映射到對象。有趣。這是否會導致類別的大規模擴散?如果我們有幾個映射到「博客」功能的頁面,您是否會有一組映射到某個功能的頁面? 是的,我們正在使用Jenkins,是的,perl測試工具至少支持一臺機器上的並行性。 –

+1

頁面對象是否導致類的大規模擴散取決於你如何設計它。如果存在跨多個頁面的功能,則可以將其創建爲不同的頁面。就你而言,你可以創建'博客'作爲不同的頁面。然後你可以從所有頁面調用這個類。如果您測試的多個網站在用戶界面中類似,則可以先創建一個通用網頁。然後擴展該類以添加每個站點的自定義功能。 –

+0

至於網站的相似性,我被告知HTML模板在網站上共享(我希望能得到更多的ID在那裏!),但是數據不盡相同,例如地址字段的數量可能會有所不同並且該網站的所有部分可能不在那裏。感謝您的反饋。 –