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