編寫測試的優(yōu)秀實踐列表
在編寫測試時,這些指導(dǎo)方針將作為要遵循的最佳實踐,這可以導(dǎo)致更高質(zhì)量的測試。
以下是在編寫測試時應(yīng)遵循的最佳實踐。這些是通用準(zhǔn)則,無論進行何種類型的測試,都應(yīng)該遵循。
保持測試獨立每個測試都應(yīng)該獨立于其他測試,確保一個測試的失敗不會影響另一個測試的執(zhí)行或結(jié)果。這可以提高測試的可靠性,實現(xiàn)測試并行化,并便于調(diào)試。
不要在測試之間共享狀態(tài)。在執(zhí)行測試之前設(shè)置狀態(tài),在執(zhí)行后將其清除。這樣可以保持測試的隔離性。
早期編寫測試盡早在開發(fā)過程中開始編寫測試。早期的測試有助于更早地發(fā)現(xiàn)問題,并在開發(fā)生命周期的早期提供反饋。隨著開發(fā)生命周期進展到后期階段,修復(fù)問題的成本會增加。例如,在本地開發(fā)過程中找到和修復(fù)問題是容易且廉價的,但是如果同樣的問題移至生產(chǎn)環(huán)境,則很難找到問題,可能會導(dǎo)致組織損失資金、用戶或信任。
測試行為,而不是實現(xiàn)通過測試應(yīng)用程序公開的行為來測試應(yīng)用程序。例如,對于 Web API,如果測試調(diào)用控制器的方法,則這些測試測試的是實現(xiàn)而不是行為,因為這不是 Web API 公開的行為。公開的行為是 HTTP API,應(yīng)該在該級別編寫測試,而不是在更低的層級。這樣可以使測試與實現(xiàn)解耦,同時保持公共行為的一致性時,可以隨意更改實現(xiàn)。
通過構(gòu)建器管理復(fù)雜狀態(tài)通常,為了測試某個場景,我們首先需要構(gòu)建一個狀態(tài)。這有時需要相當(dāng)多的代碼來進行設(shè)置。通過使用設(shè)計模式(例如構(gòu)建器)來管理和簡化創(chuàng)建的狀態(tài)。
編寫專注的測試一個測試應(yīng)該只驗證一件事情。它不應(yīng)該連續(xù)驗證多個語句。保持測試小而專注有助于維護測試,當(dāng)測試失敗時,您將知道確切的錯誤原因。但是,如果一個測試包含多個驗證步驟,那么您將必須登陸以驗證測試中到底哪個部分失敗了。
使用多個級別使用多個級別創(chuàng)建測試套件,例如單元測試、集成測試和端到端測試。然后,在編寫測試時,考慮在哪個級別可以更好地進行測試,然后在該級別編寫測試。例如,公共庫方法可以在單元測試中進行測試,而數(shù)據(jù)庫交互可以在集成測試中進行測試。