我有一個相當沉重的DB Web應用程序的工作,並在尋找建立它使用Selenium進行自動測試。不過,作爲一名自動測試新手,我不知道從哪裏開始。
- 如何對測試進行分類以確保它們在邏輯上合理且完整?
- 測試時如何處理數據庫?在每次測試之前建立一個新的數據庫,並在每次測試後刪除表格?從一個測試數據庫開始?
只是尋找一些在這方面最佳實踐的指針。
感謝,
我有一個相當沉重的DB Web應用程序的工作,並在尋找建立它使用Selenium進行自動測試。不過,作爲一名自動測試新手,我不知道從哪裏開始。
只是尋找一些在這方面最佳實踐的指針。
感謝,
一般...
如果你的主要目標是測試數據庫CRUD操作,我會去至少「向下一個級別」,寫某種不使用圖形用戶界面的集成測試供測試用。如果您將GUI取出,則測試會更加專注於實際的CRUD操作。
如何處理與數據庫...
無論你去與硒或集成測試那就是測試不依賴於彼此一個好主意。這意味着在每次測試之前設置數據庫和/或在測試之後將其拆分爲乾淨/已知狀態。維護用這種方式編寫的測試要容易得多。例如,您可以自行運行單個測試。
對於我們的集成和驗收測試,我們使用dbunit來實現這一點。輕鬆設置和拆除數據庫不是一件新事物,應該有一些可用於您的技術堆棧的東西。 (您使用的是你沒有提到的技術)
如何分類測試...
對於CRUD操作我會確保我考一兩件事,只有一兩件事。例如,我有一個僱員表。您可以擁有一套測試套件,用於測試與員工有關的所有事情,但單個測試應該只測試一件事情。'保存員工成功'應該是與'不同的測試用例嘗試保存已存在的員工'或'刪除員工'。
編輯:(答案在評論)
我們基本殺滅數據庫,並在測試開始從頭構建它。 (不知道這個部分有多關鍵,但是這確保我們的db與代碼期望的一致。我們正在使用休眠...)
然後對於每個測試我們都有不同的數據集插入。所以我們再說一次,我們正在測試僱員。如果我想測試刪除員工我會在數據庫中插入包含最少量信息的數據集以實現此目的。較小的數據集更容易維護。如果您在所有測試中使用相同的數據集,那麼將很難更改代碼並更改或添加新測試。
對於似乎需要相同信息的東西,我們使用相同的數據集。例如,要測試'嘗試將員工保存到數據庫'和'刪除員工'。您可能會爲此重用一個數據集。
我在想,如果建設和 拆除DB每個測試 將是昂貴的時間和計算 明智?
我不會太擔心這件事。是的,它可能會增加,比方說,每個測試3-4秒,但在大局中,這真的很重要嗎?更重要的是,您有針對維護的測試,因爲作爲開發人員的時間要比運行5分鐘而不是3分鐘的測試更有價值。
我不知道硒什麼,但我發現a JavaRanch article that was really well-done.在題爲「單元測試的模擬基礎」一節中的作者展示了創建模擬對象的一個很好的方法,以避免任何數據庫調用。顯然,您需要一些涉及數據庫調用的集成測試,但對於普通舊單元測試,概述的方法運行良好。
請記住,運行單元測試應該超快。
謝謝你的回答。無論我能在網上找到的最佳實踐建議是否都提供了相同的建議。但是,我想知道是否爲每個測試構建和拆分數據庫會花費昂貴的時間和計算方法?另外,你如何做到這一點?有一個共同的建立和拆卸腳本,數據是通過每個測試插入的?或者有一個構建的通用腳本,將數據抽取並插入到數據庫中?再次感謝。 – 2011-02-17 05:15:09