3.2 單元測(cè)試是才是建設(shè)高樓的腳手架

問題思考
我們先思考一個(gè)問題,如果要制造一架火箭,那么你應(yīng)該先制造什么?

單元測(cè)試的區(qū)別
常見的測(cè)試很多分類有如下:
單元測(cè)試(Unit Testing)
這是對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查的測(cè)試。通常這意味著在源代碼級(jí)別測(cè)試單個(gè)函數(shù)、方法或類。
集成測(cè)試(Integration Testing)
集成測(cè)試是在單元測(cè)試之后進(jìn)行的,旨在測(cè)試系統(tǒng)中的各個(gè)模塊是否能正常協(xié)同工作。
功能測(cè)試(Functional Testing)
這種測(cè)試主要關(guān)注的是軟件的各項(xiàng)功能是否能夠正常工作,即按照預(yù)期的功能規(guī)格來進(jìn)行的測(cè)試。
系統(tǒng)測(cè)試(System Testing)
這是基于整個(gè)系統(tǒng)進(jìn)行的測(cè)試,它驗(yàn)證的是整個(gè)系統(tǒng)是否能滿足預(yù)先定義的需求。
安全測(cè)試(Security Testing)
這種測(cè)試的目的是找出可能會(huì)被惡意用戶利用的系統(tǒng)漏洞。
性能測(cè)試(Performance Testing)
這種測(cè)試主要評(píng)估系統(tǒng)在高負(fù)載或大規(guī)模用戶訪問情況下的性能表現(xiàn)。
兼容性測(cè)試(Compatibility Testing)
這種測(cè)試是為了確保軟件在不同的環(huán)境下(例如不同的操作系統(tǒng)、網(wǎng)絡(luò)環(huán)境、硬件配置、瀏覽器版本等)都能正常工作。
這些測(cè)試在大部分的軟件場(chǎng)景中都是可以實(shí)現(xiàn)自動(dòng)化測(cè)試的。
白盒測(cè)試與黑盒測(cè)試
測(cè)試有分為白盒測(cè)試與黑盒測(cè)試,所謂白盒測(cè)試是說測(cè)試人員會(huì)檢查軟件的內(nèi)部結(jié)構(gòu)、設(shè)計(jì)和實(shí)現(xiàn)。白盒測(cè)試通常由軟件開發(fā)者進(jìn)行,并且可以測(cè)試代碼的各個(gè)部分,包括分支、循環(huán)和語句等。
黑盒測(cè)試也被稱為功能測(cè)試或基于需求的測(cè)試,是一種不考慮系統(tǒng)內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)的測(cè)試方法。在黑盒測(cè)試中,測(cè)試人員只關(guān)注軟件的輸入和輸出,而不關(guān)注軟件是如何處理輸入并產(chǎn)生輸出的。黑盒測(cè)試可以由沒有編程知識(shí)的測(cè)試人員進(jìn)行,并且主要關(guān)注軟件是否能滿足用戶的需求。
單元測(cè)試是一種自動(dòng)化的白盒測(cè)試。
我們用一個(gè)例子,來描述什么是單元測(cè)試
如果想要建造一座大樓,那么你需要先搭建一個(gè)用于施工的防護(hù)架。

自動(dòng)化測(cè)試

自動(dòng)化測(cè)試的重要性:
提高測(cè)試的效率
自動(dòng)化測(cè)試可以大大提高測(cè)試的速度和效率,尤其是對(duì)于需要頻繁測(cè)試的場(chǎng)景,例如回歸測(cè)試。自動(dòng)化測(cè)試可以在短時(shí)間內(nèi)完成大量的測(cè)試任務(wù),這是人工測(cè)試無法做到的。
提高測(cè)試可靠性
自動(dòng)化測(cè)試可以消除由于人為錯(cuò)誤造成的問題。自動(dòng)化測(cè)試工具可以精確地重復(fù)相同的測(cè)試步驟,確保測(cè)試的一致性和準(zhǔn)確性。
提高測(cè)試覆蓋率
自動(dòng)化測(cè)試可以幫助我們更全面地覆蓋軟件的各種功能和使用場(chǎng)景,尤其是一些邊緣案例,這有助于提高軟件的質(zhì)量。
單元測(cè)試的作用
對(duì)業(yè)務(wù)質(zhì)量做驗(yàn)證與檢測(cè)
通過單元測(cè)試可以很好的對(duì)代碼的執(zhí)行業(yè)務(wù)邏輯做檢查確認(rèn),同時(shí)也可以對(duì)代碼的覆蓋情況做檢查,可以呈現(xiàn)當(dāng)前代碼是否存在未知的情況。
輔助 Code Review
代碼審查時(shí)更應(yīng)該關(guān)注的是代碼規(guī)范、設(shè)計(jì)規(guī)范、性能缺陷等方面的問題,code review不將業(yè)務(wù)的準(zhǔn)確性作為審查的核心,因此需要通過單元測(cè)試與斷言來確保代碼的邏輯檢查。
為系統(tǒng)的重構(gòu)提供防護(hù)保障
在修改或重構(gòu)代碼時(shí),單元測(cè)試可以充當(dāng)安全網(wǎng),確保修改后的代碼仍然正確。如果你的重構(gòu)引入了新的錯(cuò)誤,你的單元測(cè)試應(yīng)該能夠立即發(fā)現(xiàn)這些問題。
輔助 CI/CD
持續(xù)集成/持續(xù)部署(CI/CD)環(huán)境中的代碼需要經(jīng)過單元測(cè)試才能進(jìn)一步部署。在代碼合并到主分支之前,自動(dòng)運(yùn)行的單元測(cè)試可以確保新代碼的質(zhì)量,防止錯(cuò)誤代碼被部署到生產(chǎn)環(huán)境。
單元測(cè)試的關(guān)鍵技術(shù)
代碼覆蓋率

代碼斷言
自定義數(shù)據(jù)
mock模擬
依賴mock
? mvc mock
完整代碼
https://github.com/codingapi/cranky-code/tree/main/demo3.2