2014-09-29 38 views
0

我正在爲一個應用程序編寫一個自動化測試,目前有大約150個測試用例。一切運行良好,但隨着測試的不斷髮展,我不斷遇到如何組織測試用例的問題。組織自動化測試的最佳做法?

有些測試會依賴於之前的測試(例如我無法登錄,直到我已經打開了應用程序,直到我登錄,我不能瓶坯的動作)。在運行時,我目前有一個用戶界面,允許用戶選擇要運行的測試用例,並且在我擁有這個列表後,嘗試對它們進行排序會非常棘手。

我覺得這不會是值得我的時間來對測試用例預定義的順序,因爲不是所有將運行每次,我也有我每添加一個新的測試時間更新此名單。

有誰與一般的自動化測試,或測試經驗,有什麼建議?

注意:我試圖給每個測試添加一個整型標誌,然後以這種方式對它們進行排序,但是這導致了很多問題,並且任何時候我添加了一箇中間發生的新測試,一些測試必須被移位(這對於150多個測試用例來說是一種痛苦)。

編輯

我只是想澄清,可能互相依賴,而不僅僅是登錄或打開應用程序測試的另一個例子。對於該軟件,用戶可以在應用程序中上傳數據。然後他們可以去下載這些數據的報告。很明顯,如果用戶只選擇「下載」測試,那我就沒有辦法。但是,如果用戶選擇「上傳」和「下載」,我需要一種方法來確保首先執行上傳。

+2

測試不應該依賴以前的測試來運行。如果只想運行「登錄」測試而不運行「打開應用」測試,該怎麼辦?每個測試應該有自己的設置,它將設置所有測試自行運行的設置。 – artm 2014-09-29 12:55:18

+0

這是一個非常好的觀點,我應該(並且會)防範諸如登錄和打開應用程序之類的事情,但是我編輯了這個問題以闡明測試可能相互依賴的另一個示例。 – AdamMc331 2014-09-29 13:00:09

+0

再次,在您編輯之後,測試應該是獨立的。如果你想測試上傳,你測試你的應用程序成功上傳文件到服務器。如果要測試下載,首先在測試設置中將文件上傳到服務器,然後測試服務器中上傳的文件是否可以下載。 – artm 2014-09-29 13:07:00

回答

3

測試不應該依賴於之前的測試運行。如果只想運行「登錄」測試而不運行「打開應用」測試,該怎麼辦?每個測試應該有自己的設置,它將設置所有測試自行運行的設置。如果你想測試上傳,你測試你的應用程序成功上傳文件到服務器。如果要測試下載,首先在測試設置中將文件上傳到服務器,然後測試服務器中上傳的文件是否可以下載。

測試不應該關心/依靠他們面前發生的事情,否則,因爲你的代碼不工作,你的測試可能會失敗,而是因爲你的測試不工作。那麼當試圖找出代碼失敗的原因時,你將會浪費時間,而實際上這是測試失敗的原因。看看testsetup和testclear,每個測試都會設置它需要運行的任何東西,然後一旦它完成,它就會自行清理完畢,所以每個測試都沒有其他測試。

+0

絕對會重構這整個事情。這現在是一個痛苦,但它肯定會有助於前進。我也可以重構很多,例如:一些測試將具有共享設置並且清晰,所以有很多可用性。再次感謝。 – AdamMc331 2014-09-29 13:22:29

+0

@ McAdam331另請參閱TestFixtureSetup/TearDown和TestSetup/TearDown。一個人爲每個測試設置一個環境,在其中爲每個測試用例設置環境。所以在你的TestFixtureSetup中你可以創建一個臨時文件夾。每個測試都會在該臨時文件夾中創建一個文件,並在TearDown中刪除該文件。最後在你的TestFixture拆除,你刪除臨時文件夾。所以你不需要在每個測試中創建臨時文件夾。請記住,當你重構你的測試。 – artm 2014-09-29 13:34:43

+0

還有一件事可以幫助您組織,在大量測試的測試設置過程中,您可能會注意到您有共同的步驟。如果發生這種情況,我建議創建一個單獨的項目,在你的測試之外爲你做這些事情,你的測試只會調用這些項目。例如,關於測試下載功能的artm說,我會在單獨的項目中創建一個上傳文件的方法,因爲這是測試的先決條件,其他測試肯定會重用。 – andreadi 2014-09-30 07:16:01