0

我知道在測試完成後,有很多關於清理數據的問題。他們中的很多人都說要模擬數據庫,以避免使用真實的數據庫,然後在測試完成後將其清理乾淨。我不確定這是否會與我正在做的事情一起工作。在UI驗收測試後清理向數據庫添加的記錄

我正在使用SpecFlow for .net,使用Selenium作爲WebUI和NUnit作爲測試運行器。

該應用程序本身是一個大型的多頁面網絡應用程序。

SpecFlow功能由頁面功能分隔,如果不是所有頁面都有一個表格顯示創建的記錄,防爆。我創建了一個新類別,頁面在表格中顯示添加的類別。爲了能夠反覆運行這些測試,我需要刪除所有從數據庫創建的測試添加的記錄,以便在測試重新執行時可以重新創建這些相同的類別。

我們有一個框架設置,用於在存儲過程中傳遞的每個功能之後運行,以從數據庫中刪除這些添加的記錄。由於可能會在測試環境中刪除不同測試客戶端的記錄,因此這個想法受到很多推動。

所以,我的問題是,清理數據庫的最佳做法是什麼?

+1

對不起,您是否使用過股份生產的客戶數據與測試數據的數據庫? – AlSki

+0

好的,我很抱歉,不,在我們開始生產之前的所有環境都沒有生產客戶數據。但是,他們確實希望在prod中運行這些測試,在這種情況下,測試客戶端將共享數據庫。我們還沒有達到那個水平,所以還沒有確定。 –

回答

1

最好在測試運行之前和之後刪除測試數據。這樣,即使測試中途中止並且之後不清除,數據也將被清除。

在specflow中,這可以通過在場景之前/場景/功能/之前使用功能鉤子來實現。

如果可能,理想的解決方案是每個測試都有一個新的數據庫,那麼您可以刪除整個數據庫。這將允許測試並行運行。

如果您無法做到這一點,那麼您需要一些方法來唯一標識每個測試的測試數據。

它擔心你的問題意味着在同一個數據庫的測試和實時數據

+0

謝謝!我目前確實已將它設置爲在功能之前和功能之後運行。我只是試圖找到最好的解決方案來清除測試過程中受影響的表中創建的數據。無論是創建備份還是恢復,運行存儲過程以刪除特定於測試客戶端的行,還是使用軟刪除。很抱歉對於這個誤會。所有的客戶端都是測試客戶端,它們都是正在創建的測試數據。 –

相關問題