檢測(cè)到您已登錄華為云國(guó)際站賬號(hào),為了您更好的體驗(yàn),建議您訪(fǎng)問(wèn)國(guó)際站服務(wù)網(wǎng)站 http://m.cqfng.cn/intl/zh-cn
不再顯示此消息
單元測(cè)試是軟件質(zhì)量的重要保證。在 Github 上挑選一款軟件,單元測(cè)試覆蓋率是評(píng)價(jià)軟件成熟度的一個(gè)重要指標(biāo)。通常成熟可靠的開(kāi)源產(chǎn)品都有完善的單元測(cè)試,并且覆蓋率可以達(dá)到 80% 以上。
剩余的屬性測(cè)試和 color 的測(cè)試非常類(lèi)似,我們就不再贅述。在代碼編寫(xiě)階段,建議只對(duì)重點(diǎn)功能進(jìn)行測(cè)試,沒(méi)必要一定追求過(guò)高的測(cè)試覆蓋率,因?yàn)榍捌谶^(guò)度地測(cè)試也會(huì)提高開(kāi)發(fā)成本,拖慢開(kāi)發(fā)進(jìn)度。 到目前為止,已經(jīng)把組件庫(kù)的測(cè)試框架搭好了。
提高單元測(cè)試覆蓋率的策略 單元測(cè)試是軟件開(kāi)發(fā)過(guò)程中的一個(gè)重要環(huán)節(jié),它幫助我們確保代碼的正確性、穩(wěn)定性和可維護(hù)性。然而,在實(shí)際開(kāi)發(fā)過(guò)程中,由于時(shí)間、人力和技術(shù)限制,單元測(cè)試的覆蓋率可能并不高。那么,如何提高單元測(cè)試的覆蓋率呢?本文將介紹一些有效的策略。 1.
理論在《持續(xù)交付》里,在討論測(cè)試覆蓋率指標(biāo)的時(shí)候,書(shū)里有這么一段話(huà)“指出測(cè)試覆蓋率包括單元測(cè)試、組件測(cè)試和驗(yàn)收測(cè)試,每一種測(cè)試都應(yīng)該覆蓋應(yīng)用程序的80%(我們并不認(rèn)同60%的單元測(cè)試覆蓋率加上20%的驗(yàn)收測(cè)試覆蓋率就等于80%的覆蓋率這一天真的想法)”現(xiàn)實(shí)我接觸的絕大多數(shù)的客戶(hù),都是用的書(shū)里的天真的覆蓋率算法
引言 經(jīng)常有人問(wèn)這樣的問(wèn)題:“我們?cè)谧?span id="5xd9vfz" class='cur'>單元測(cè)試,那測(cè)試覆蓋率要到多少才行?”。答案其實(shí)很簡(jiǎn)答,“作為指標(biāo)的測(cè)試覆蓋率都是沒(méi)有用處的。”
這些要求可以包括以下內(nèi)容:代碼編譯通過(guò)、單元測(cè)試覆蓋率達(dá)標(biāo)、代碼靜態(tài)檢查某類(lèi)型告警等。
單元測(cè)試能夠在很短的時(shí)間內(nèi),展示出你的代碼是否達(dá)到了預(yù)期的運(yùn)行結(jié)果。如果單元測(cè)試覆蓋率非常高,那么,你就可以在很短的時(shí)間內(nèi),檢查正在開(kāi)發(fā)的系統(tǒng)的所有組件是否運(yùn)行正常。
時(shí)常有人會(huì)將單元測(cè)試覆蓋率作為代碼可靠性的硬性指標(biāo),強(qiáng)迫開(kāi)發(fā)者為了覆蓋而覆蓋,這是不可取的做法,已經(jīng)違背了單元測(cè)試的初衷。 框架 本人主要使用junit4編寫(xiě)單元測(cè)試,用的比較順手,也有部門(mén)大佬建議使用junit5比較好。
60%到70%(目前單元測(cè)試覆蓋率為38.69%)。
60%到70%(目前單元測(cè)試覆蓋率為38.69%)。
缺乏單元測(cè)試 sonar可以很方便地統(tǒng)計(jì)并展示單元測(cè)試覆蓋率。 7. 糟糕的設(shè)計(jì) 通過(guò)sonar可以找出循環(huán),展示包與包、類(lèi)與類(lèi)之間的相互依賴(lài)關(guān)系,可以檢測(cè)自定義的架構(gòu)規(guī)則:通過(guò)sonar可以管理第三方的jar包,可以利用LCOM4檢測(cè)單個(gè)任務(wù)規(guī)則的應(yīng)用情況,檢測(cè)藕合。
亦違背初衷 缺乏單元測(cè)試 sonar可以很方便地統(tǒng)計(jì)并展示單元測(cè)試覆蓋率 糟糕的設(shè)計(jì) 通過(guò)sonar可以找出循環(huán),展示包與包、類(lèi)與類(lèi)之間相互依賴(lài)關(guān)系,可以檢測(cè)自定義的架構(gòu)規(guī)則 通過(guò)sonar可以管理第三方的jar包,可以利用LCOM4檢測(cè)單個(gè)任務(wù)規(guī)則的應(yīng)用情況, 檢測(cè)耦合
AI貢獻(xiàn)者的“三板斧” 代碼補(bǔ)全:如Copilot、Codeium,根據(jù)上下文預(yù)測(cè)代碼塊,開(kāi)發(fā)者效率提升40%+; 自動(dòng)化測(cè)試:AI生成單元測(cè)試覆蓋率超80%(以TensorFlow項(xiàng)目為例); 文檔優(yōu)化:GPT-4重構(gòu)的API文檔可讀性評(píng)分提升35%(開(kāi)發(fā)者調(diào)研數(shù)據(jù))。
用戶(hù) ID = @UserId_0) 單元測(cè)試覆蓋率(150+ 單元測(cè)試) 一、Dapper-Extensions的使用 1.安裝包 Install-Package DapperExtensions 2.使用方法 Person類(lèi) public class Person
更重要的是,代碼的可測(cè)試性大幅提升,單元測(cè)試覆蓋率從30%提升到95%。這次重構(gòu)不僅解決了技術(shù)債務(wù)問(wèn)題,還為后續(xù)的業(yè)務(wù)擴(kuò)展奠定了堅(jiān)實(shí)基礎(chǔ)。 1. 重構(gòu)背景:800行if-else的噩夢(mèng) 1.1 問(wèn)題現(xiàn)狀分析 在接手這個(gè)電商訂單系統(tǒng)時(shí),我被眼前的代碼震驚了。
在測(cè)試對(duì)象中的單個(gè)函數(shù)或方法時(shí),該文件中的所有函數(shù)數(shù)量或代碼行數(shù)會(huì)作為分母進(jìn)行百分比的計(jì)算。所以,對(duì)單個(gè)模塊,要測(cè)試多個(gè)文件的話(huà),每個(gè)測(cè)試的單元測(cè)試覆蓋率就會(huì)降低。將所有測(cè)試的覆蓋率數(shù)字聚合在一起,就會(huì)為該文件形成完整的覆蓋率信息。
在命令行模式下,在工程的根目錄下鍵入命令“sonar-scanner”,你會(huì)看到以下日志: 運(yùn)行 sonar-scanner 接著,重新登錄 SonarQube 平臺(tái),檢測(cè)的結(jié)果已經(jīng)在平臺(tái)上展現(xiàn)出來(lái) 從上圖你可以看出來(lái),連單元測(cè)試覆蓋率的統(tǒng)計(jì)也生成出來(lái)了,主要原因?yàn)樵谠搈aven項(xiàng)目之前已經(jīng)集成了
在命令行模式下,在工程的根目錄下鍵入命令“sonar-scanner”,你會(huì)看到以下日志:運(yùn)行 sonar-scanner接著,重新登錄 SonarQube 平臺(tái),檢測(cè)的結(jié)果已經(jīng)在平臺(tái)上展現(xiàn)出來(lái)從上圖你可以看出來(lái),連單元測(cè)試覆蓋率的統(tǒng)計(jì)也生成出來(lái)了,主要原因?yàn)樵谠?/p>
以谷歌為例,其開(kāi)發(fā)團(tuán)隊(duì)主動(dòng)承擔(dān)單元測(cè)試與基礎(chǔ)功能測(cè)試,將單元測(cè)試覆蓋率穩(wěn)定在 85% 以上,確保代碼交付時(shí)已解決 90% 以上的功能性缺陷。
在命令行模式下,在工程的根目錄下鍵入命令“sonar-scanner”,你會(huì)看到以下日志: 運(yùn)行 sonar-scanner 接著,重新登錄 SonarQube 平臺(tái),檢測(cè)的結(jié)果已經(jīng)在平臺(tái)上展現(xiàn)出來(lái) 從上圖你可以看出來(lái),連單元測(cè)試覆蓋率的統(tǒng)計(jì)也生成出來(lái)了,主要原因?yàn)樵谠搈aven項(xiàng)目之前已經(jīng)集成了