《單元測(cè)試的藝術(shù)》讀書筆記

第一章
讀書筆記:

傳統(tǒng)定義
一個(gè)單元測(cè)試是一段代碼(通常是一個(gè)方法),這段代碼調(diào)用另一段代碼,然后檢驗(yàn)?zāi)承┘僭O(shè)的正確性。如果這些假設(shè)是錯(cuò)誤的,單元測(cè)試就失敗了。

泛化
一個(gè)單元代表系統(tǒng)的”系統(tǒng)單元“或一個(gè)”用例“,從調(diào)用系統(tǒng)的一個(gè)公共方法

單元測(cè)試是否應(yīng)該盡可能的?。?/p>

如果創(chuàng)建的工作單元更大,他的最終結(jié)果對(duì)這個(gè)接口的用戶可見性更高,那么測(cè)試更容易維護(hù)。
如果測(cè)試單元縮小,最后不等不偽造一堆東西,這些東西并不是使用公共API的真實(shí)最終結(jié)果,而是生成結(jié)果過(guò)程中的一些中間狀態(tài),這是一種過(guò)渡指定

單元測(cè)試的特性:
自動(dòng)化
可重復(fù)執(zhí)行
很容易實(shí)現(xiàn)
未來(lái)仍然有意義
任何人都可以一鍵運(yùn)行
速度快
結(jié)果穩(wěn)定
能夠完全控制被測(cè)試的單元
應(yīng)該完全隔離
如果失敗了,能夠很容易的發(fā)現(xiàn)期待的結(jié)果,從而定位問(wèn)題

集成測(cè)試定義:如果運(yùn)行速度不快、結(jié)果不穩(wěn)定、用到一個(gè)和多個(gè)依賴物,我們稱之為集成測(cè)試
依賴物包括但不限于真實(shí)的系統(tǒng)時(shí)間、真實(shí)的文件系統(tǒng)、真實(shí)的數(shù)據(jù)庫(kù)

差的單元測(cè)試沒有任何的意義,最多只能是初次練習(xí)時(shí)候的產(chǎn)物,而且還增加了后續(xù)刪除的工作量。我們需要的是優(yōu)秀的單元測(cè)試。優(yōu)秀的單元測(cè)試實(shí)在單元測(cè)試特征的基礎(chǔ)上增加了三個(gè)特性:可靠、可讀和可維護(hù)

TDD的意義:測(cè)試優(yōu)先于開發(fā)
TDD的步驟:
第一步:編寫一個(gè)會(huì)失敗的測(cè)試,以證明產(chǎn)品中代碼或者功能的缺陷
第二步:編寫符合測(cè)試預(yù)期的蟾皮代碼,是測(cè)試通過(guò)
第三步:重構(gòu)代碼(可選),重復(fù)到第一步。

成功TDD的三個(gè)核心技能:
知道如何編寫優(yōu)秀的測(cè)試
在編碼前編寫測(cè)試
良好的測(cè)試設(shè)計(jì)

誤區(qū):
僅僅做到先編寫測(cè)試,并不能保證測(cè)試是可靠、可讀和可維護(hù)
僅僅做到編寫測(cè)試時(shí)可靠、可讀和可維護(hù)并不能保證能夠獲得先編寫測(cè)試的好處
僅僅做到先編寫可靠、可讀和可維護(hù)的測(cè)試,也不能保證能夠得到一個(gè)設(shè)計(jì)完善的系統(tǒng)。

設(shè)計(jì)能力才是使代碼優(yōu)美,可維護(hù)的關(guān)鍵。

介紹優(yōu)秀測(cè)試技能的書
kent beck的 《Test-Driven Development:by Example》
https://www.oreilly.com/library/view/test-driven-development/0321146530/

設(shè)計(jì)能力相關(guān)的書
《Growing Object-Oriented Software, Guided by Tests》
《程序員的職業(yè)修養(yǎng)》


思考:
之前一直在做的是集成測(cè)試
單元測(cè)試只關(guān)注與被測(cè)試對(duì)象的邏輯,而與外部依賴的數(shù)據(jù)無(wú)關(guān)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容