2012-04-03 117 views
1

我有一個ASP.Net MVC項目,我想我可以使用MS Test或NUnit這樣的工具從控制器層到數據庫執行迴歸測試,但是我遇到了問題測試的目的不是按順序運行(您可以在MS Test中使用有序測試,但測試仍然同時運行),另一個問題是如何讓一個測試中創建的數據可以被另一個測試訪問?如何構建迴歸測試的依賴測試

我已經看過Selenium和WatiN,但我只是想寫一些不依賴於UI層的東西,這很可能會改變增加維護測試的工作量。

有什麼建議嗎?這僅僅是工作的錯誤工具嗎?我應該只使用Selenium/WatiN?

+1

從UI層進行測試雖然較爲複雜,但卻提供了大量的價值回報。這裏有一個很好的解釋:https://support.smartbear。com/articles/testcomplete/regression-testing/ – Chris 2015-04-21 15:43:22

回答

0

更新 下面的鏈接(和我承擔的項目)已經死了。 最好的選擇也許使用Selenium和頁面對象模型。 在這裏看到:http://code.tutsplus.com/articles/maintainable-automated-ui-tests--net-35089

老回答 我發現最簡單的辦法是羅布科納的Qixote:

https://github.com/robconery/Quixote

它通過發射HTTP請求和消費響應。 設置和使用簡單,並提供集成測試。該工具還允許執行一系列測試以創建測試依賴關係。

+0

https://github.com/robconery/Quixote - 是一個死鏈接。 – Chris 2015-04-21 15:44:09

+0

是的,看起來像羅布已經放棄了這個項目。看起來好像有一些很好的工具可以與Selenium結合使用並公開頁面對象模型來創建可維護的迴歸測試。看看這裏http://code.tutsplus.com/articles/maintainable-automated-ui-tests--net-35089 – ptutt 2015-04-21 23:46:19

0

測試應始終獨立於彼此,以便運行順序無關緊要。如果您的測試依賴於其他測試,那麼您正失去對正在測試的內容的控制。

+1

我明白這是單元測試的普遍共識,但實際上,對於我的目的而言,測試依賴性是一件好事,因爲它意味着測試彼此進行。例如,我可以爲函數A編寫測試A,爲函數B編寫測試B.如果測試A和B都是獨立的,則它們可以通過,但是如果它們是相關的並且測試A創建的數據對測試B無效,則測試B會失敗,因此測試B正在測試測試A的結果。您可能會說,但那意味着測試A並不完整,是真的,但任何人都聲稱擁有無錯誤測試?如果我可以爲什麼沒有無錯代碼? – ptutt 2012-04-03 12:27:44

+0

在這種情況下,我會說你有測試A和測試B,然後你有測試C是測試A +測試B,測試D是測試B +測試A.(使用通用代碼,C和D應該是直截了當地寫)。隨機運行測試肯定會測試各種不同功能如何相互影響,但它會產生不一致的結果,不必要的測試用例(例如,兩個不相關的功能在彼此之後運行),並且會更多地追蹤問題困難 – Dan 2012-04-03 13:27:58

+0

更不用說大部分的測試框架都是基於測試彼此獨立的概念而設計的,所以使它們依賴需要更多的工作。 – heavyd 2012-04-03 14:47:41

0

WatiN,我假設Selenium,不會解決您的訂購問題。我使用WatiN和NUnit進行UI自動化,並且不保證運行順序,最初會對您所看到的類似問題提出類似問題。

根據dskh的回答,您需要進行獨立測試,而且我已經通過兩種方式完成了Integration/Regression黑盒測試。

首先:在您的測試設置中,設置任何先決條件數據值,以便您處於已知的「良好狀態」。對於系統迴歸測試自動化,我有一些數據庫腳本被調用以將數據重置爲已知狀態;這增加了一些依賴性,所以要注意設計。注意:在單元測試中,使用模擬對象取出依賴關係,並讓測試「測試一件事」。模擬對象,存根方法調用等是可行的方法,基於你的問題聽起來很可能。第二:如果某些事情必須以某種方式進行設置,並且通過腳本對測試設置進行腳本添加了大量必要的系統內部知識(例如:所有用戶設置+所有權限設置+等等)等情況下)在自己的命名空間中安裝了少量的「引導程序」測試,以便通過NUnit輕鬆運行,以引導系統。保持少量的測試並確保測試非常穩定是至關重要的。現在,在全新安裝中,引導程序測試首先運行並用作高級煙霧測試;如果任何引導程序測試失敗,則不會運行進一步的測試。它在某些方面很笨拙,但替代品更笨重或更多時間/資源/無論消耗什麼。